Initial commit

This commit is contained in:
Your Name
2026-04-23 17:07:55 +08:00
commit b7e39e063b
16725 changed files with 1625565 additions and 0 deletions
@@ -0,0 +1,102 @@
From 000f1500b693a84880d2da49b77b1113f98dde35 Mon Sep 17 00:00:00 2001
From: Brett Warren <brett.warren@arm.com>
Date: Fri, 27 Nov 2020 15:28:42 +0000
Subject: [PATCH] arm/sysv: reverted clang VFP mitigation
Since commit e3d2812ce43940aacae5bab2d0e965278cb1e7ea,
seperate instructions were used when compiling under clang,
as clang didn't allow the directives at the time. This mitigation
now causes compilation to fail under clang 10, as described by
https://github.com/libffi/libffi/issues/607. Now that
clang supports the LDC and SDC instructions, this mitigation
has been reverted.
Upstream-Status: Submitted [https://github.com/libffi/libffi/pull/747]
Signed-off-by: Brett Warren <brett.warren@arm.com>
---
src/arm/sysv.S | 33 ---------------------------------
1 file changed, 33 deletions(-)
diff --git a/src/arm/sysv.S b/src/arm/sysv.S
index fb36213..e4272a1 100644
--- a/src/arm/sysv.S
+++ b/src/arm/sysv.S
@@ -142,13 +142,8 @@ ARM_FUNC_START(ffi_call_VFP)
cmp r3, #3 @ load only d0 if possible
ite le
-#ifdef __clang__
- vldrle d0, [r0]
- vldmgt r0, {d0-d7}
-#else
ldcle p11, cr0, [r0] @ vldrle d0, [r0]
ldcgt p11, cr0, [r0], {16} @ vldmgt r0, {d0-d7}
-#endif
add r0, r0, #64 @ discard the vfp register args
/* FALLTHRU */
ARM_FUNC_END(ffi_call_VFP)
@@ -193,25 +188,13 @@ ARM_FUNC_START(ffi_call_SYSV)
#endif
0:
E(ARM_TYPE_VFP_S)
-#ifdef __clang__
- vstr s0, [r2]
-#else
stc p10, cr0, [r2] @ vstr s0, [r2]
-#endif
pop {fp,pc}
E(ARM_TYPE_VFP_D)
-#ifdef __clang__
- vstr d0, [r2]
-#else
stc p11, cr0, [r2] @ vstr d0, [r2]
-#endif
pop {fp,pc}
E(ARM_TYPE_VFP_N)
-#ifdef __clang__
- vstm r2, {d0-d3}
-#else
stc p11, cr0, [r2], {8} @ vstm r2, {d0-d3}
-#endif
pop {fp,pc}
E(ARM_TYPE_INT64)
str r1, [r2, #4]
@@ -320,11 +303,7 @@ ARM_FUNC_START(ffi_closure_VFP)
add ip, sp, #16
sub sp, sp, #64+32 @ allocate frame
cfi_adjust_cfa_offset(64+32)
-#ifdef __clang__
- vstm sp, {d0-d7}
-#else
stc p11, cr0, [sp], {16} @ vstm sp, {d0-d7}
-#endif
stmdb sp!, {ip,lr}
/* See above. */
@@ -358,25 +337,13 @@ ARM_FUNC_START_LOCAL(ffi_closure_ret)
cfi_rel_offset(lr, 4)
0:
E(ARM_TYPE_VFP_S)
-#ifdef __clang__
- vldr s0, [r2]
-#else
ldc p10, cr0, [r2] @ vldr s0, [r2]
-#endif
b call_epilogue
E(ARM_TYPE_VFP_D)
-#ifdef __clang__
- vldr d0, [r2]
-#else
ldc p11, cr0, [r2] @ vldr d0, [r2]
-#endif
b call_epilogue
E(ARM_TYPE_VFP_N)
-#ifdef __clang__
- vldm r2, {d0-d3}
-#else
ldc p11, cr0, [r2], {8} @ vldm r2, {d0-d3}
-#endif
b call_epilogue
E(ARM_TYPE_INT64)
ldr r1, [r2, #4]
@@ -0,0 +1,35 @@
From 20bc4e03442e15965ae3907013e9a177878f0323 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Thu, 4 Feb 2016 16:22:50 +0000
Subject: [PATCH] libffi: ensure sysroot paths are not in libffi.pc
libffi's configure assumes that cross-compiled builds are complicated and
introduces convoluted path manipulation involving gcc search paths to the
install paths, resulting in paths like -L/usr/lib/../lib/ appearing in
libffi.pc. When pkg-config is then used to obtain the linker flags for libffi
it can't tell that this path is on the default search path and returns
$SYSROOT/usr/lib/../lib which then gets written all over the target sysroot.
This then means the sstate can't be shared and triggers QA errors.
As this block is generally pointless, disable it.
Upstream-Status: Inappropriate
Signed-off-by: Ross Burton <ross.burton@intel.com>
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 7e8cd98..cf37e88 100644
--- a/configure.ac
+++ b/configure.ac
@@ -405,7 +405,7 @@ AC_ARG_ENABLE(multi-os-directory,
# These variables are only ever used when we cross-build to X86_WIN32.
# And we only support this with GCC, so...
-if test "x$GCC" = "xyes"; then
+if false; then
if test -n "$with_cross_host" &&
test x"$with_cross_host" != x"no"; then
toolexecdir='${exec_prefix}'/'$(target_alias)'
@@ -0,0 +1,34 @@
SUMMARY = "A portable foreign function interface library"
HOMEPAGE = "http://sourceware.org/libffi/"
DESCRIPTION = "The `libffi' library provides a portable, high level programming interface to various calling \
conventions. This allows a programmer to call any function specified by a call interface description at run \
time. FFI stands for Foreign Function Interface. A foreign function interface is the popular name for the \
interface that allows code written in one language to call code written in another language. The `libffi' \
library really only provides the lowest, machine dependent layer of a fully featured foreign function interface. \
A layer must exist above `libffi' that handles type conversions for values passed between the two languages."
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=32c0d09a0641daf4903e5d61cc8f23a8"
SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/${BPN}-${PV}.tar.gz \
file://not-win32.patch \
file://0001-arm-sysv-reverted-clang-VFP-mitigation.patch \
"
SRC_URI[sha256sum] = "d66c56ad259a82cf2a9dfc408b32bf5da52371500b84745f7fb8b645712df676"
EXTRA_OECONF += "--disable-builddir --disable-exec-static-tramp"
EXTRA_OECONF:class-native += "--with-gcc-arch=generic"
EXTRA_OEMAKE:class-target = "LIBTOOLFLAGS='--tag=CC'"
inherit autotools texinfo multilib_header github-releases
do_install:append() {
oe_multilib_header ffi.h ffitarget.h
}
FILES:${PN}-dev += "${libdir}/libffi-${PV}"
# Doesn't compile in MIPS16e mode due to use of hand-written
# assembly
MIPS_INSTRUCTION_SET = "mips"
BBCLASSEXTEND = "native nativesdk"