Initial commit
This commit is contained in:
+102
@@ -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"
|
||||
Reference in New Issue
Block a user