diff options
Diffstat (limited to 'meta/recipes-support/libffi/libffi/0001-arm-sysv-reverted-clang-VFP-mitigation.patch')
-rw-r--r-- | meta/recipes-support/libffi/libffi/0001-arm-sysv-reverted-clang-VFP-mitigation.patch | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/meta/recipes-support/libffi/libffi/0001-arm-sysv-reverted-clang-VFP-mitigation.patch b/meta/recipes-support/libffi/libffi/0001-arm-sysv-reverted-clang-VFP-mitigation.patch index 782dce70d8..5e529d1ce7 100644 --- a/meta/recipes-support/libffi/libffi/0001-arm-sysv-reverted-clang-VFP-mitigation.patch +++ b/meta/recipes-support/libffi/libffi/0001-arm-sysv-reverted-clang-VFP-mitigation.patch @@ -4,9 +4,9 @@ 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, +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 +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. @@ -18,25 +18,25 @@ Signed-off-by: Brett Warren <brett.warren@arm.com> 1 file changed, 33 deletions(-) diff --git a/src/arm/sysv.S b/src/arm/sysv.S -index 63180a4..e3ce526 100644 +index fb36213..e4272a1 100644 --- a/src/arm/sysv.S +++ b/src/arm/sysv.S -@@ -128,13 +128,8 @@ ARM_FUNC_START(ffi_call_VFP) - cfi_startproc +@@ -142,13 +142,8 @@ ARM_FUNC_START(ffi_call_VFP) cmp r3, #3 @ load only d0 if possible + ite le -#ifdef __clang__ -- vldrle d0, [sp] -- vldmgt sp, {d0-d7} +- vldrle d0, [r0] +- vldmgt r0, {d0-d7} -#else - ldcle p11, cr0, [r0] @ vldrle d0, [sp] - ldcgt p11, cr0, [r0], {16} @ vldmgt sp, {d0-d7} + 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) -@@ -172,25 +167,13 @@ ARM_FUNC_START(ffi_call_SYSV) - nop +@@ -193,25 +188,13 @@ ARM_FUNC_START(ffi_call_SYSV) + #endif 0: E(ARM_TYPE_VFP_S) -#ifdef __clang__ @@ -61,7 +61,7 @@ index 63180a4..e3ce526 100644 pop {fp,pc} E(ARM_TYPE_INT64) str r1, [r2, #4] -@@ -287,11 +270,7 @@ ARM_FUNC_START(ffi_closure_VFP) +@@ -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) @@ -73,7 +73,7 @@ index 63180a4..e3ce526 100644 stmdb sp!, {ip,lr} /* See above. */ -@@ -320,25 +299,13 @@ ARM_FUNC_START_LOCAL(ffi_closure_ret) +@@ -358,25 +337,13 @@ ARM_FUNC_START_LOCAL(ffi_closure_ret) cfi_rel_offset(lr, 4) 0: E(ARM_TYPE_VFP_S) @@ -82,23 +82,23 @@ index 63180a4..e3ce526 100644 -#else ldc p10, cr0, [r2] @ vldr s0, [r2] -#endif - ldm sp, {sp,pc} + b call_epilogue E(ARM_TYPE_VFP_D) -#ifdef __clang__ - vldr d0, [r2] -#else ldc p11, cr0, [r2] @ vldr d0, [r2] -#endif - ldm sp, {sp,pc} + 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 - ldm sp, {sp,pc} + b call_epilogue E(ARM_TYPE_INT64) ldr r1, [r2, #4] -- -2.17.1 +2.25.1 |