From 531ff27410d7de73678f2ef12e1caf8eb0332d64 Mon Sep 17 00:00:00 2001 From: joerg Date: Wed, 21 May 2014 01:36:22 +0000 Subject: Add .cfi_startprroc / .cfi_endproc annotation. XXX Note marking up the frame yet. Hide ARM instructions when using DWARF EH. --- devel/libffi/distinfo | 3 +- devel/libffi/patches/patch-src_arm_sysv.S | 87 +++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 devel/libffi/patches/patch-src_arm_sysv.S (limited to 'devel') diff --git a/devel/libffi/distinfo b/devel/libffi/distinfo index 94ff9ff23d8..4a88c169231 100644 --- a/devel/libffi/distinfo +++ b/devel/libffi/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.31 2014/02/11 07:21:28 dholland Exp $ +$NetBSD: distinfo,v 1.32 2014/05/21 01:36:22 joerg Exp $ SHA1 (libffi-3.0.13.tar.gz) = f5230890dc0be42fb5c58fbf793da253155de106 RMD160 (libffi-3.0.13.tar.gz) = 03f0627c0fcc800d38636258a2fab2d6bb8b6625 @@ -15,6 +15,7 @@ SHA1 (patch-ai) = f85a6cb64d4a9d7c3e56b47b7092fce10a744b5b SHA1 (patch-aj) = d130b2b20b94ca26c70dcc46614e36c6d0ac9153 SHA1 (patch-configure.ac) = 080d79b5ada93c5073df7dd09c5131fcfe72ce86 SHA1 (patch-fficonfig.h.in) = fd85fa767bc057c843ff71cc61bedfcff84def43 +SHA1 (patch-src_arm_sysv.S) = faf53358dbc48d1cf8f6a20030b365c8df346547 SHA1 (patch-src_m88k_elfbsd.S) = fae3e425dcff3e924ef195eab165f9bbc6ec4077 SHA1 (patch-src_m88k_ffi.c) = e4b7382c3d6e253b8c1c6054150c530c21d018de SHA1 (patch-src_m88k_ffitarget.h) = e8479bc3aa876f5e6d52a4d578c5da88291c6646 diff --git a/devel/libffi/patches/patch-src_arm_sysv.S b/devel/libffi/patches/patch-src_arm_sysv.S new file mode 100644 index 00000000000..595e2e35e94 --- /dev/null +++ b/devel/libffi/patches/patch-src_arm_sysv.S @@ -0,0 +1,87 @@ +$NetBSD: patch-src_arm_sysv.S,v 1.3 2014/05/21 01:36:23 joerg Exp $ + +--- src/arm/sysv.S.orig 2013-03-16 11:19:39.000000000 +0000 ++++ src/arm/sysv.S +@@ -103,7 +103,7 @@ + #endif + + /* Conditionally compile unwinder directives. */ +-#ifdef __ARM_EABI__ ++#if defined(__ARM_EABI__) && !defined(__ARM_DWARF_EH__) + #define UNWIND + #else + #define UNWIND @ +@@ -125,6 +125,7 @@ + nop + .arm + UNWIND .fnstart ++ .cfi_startproc + /* A hook to tell gdb that we've switched to ARM mode. Also used to call + directly from other local arm routines. */ + #ifdef __APPLE__ +@@ -144,6 +145,7 @@ _L__\name: + ENTRY(\name) + #endif + UNWIND .fnstart ++ .cfi_startproc + .endm + #endif + +@@ -175,6 +177,7 @@ ARM_FUNC_START ffi_call_SYSV + @ Save registers + stmfd sp!, {r0-r3, fp, lr} + UNWIND .save {r0-r3, fp, lr} ++ + mov fp, sp + + UNWIND .setfp fp, sp +@@ -228,7 +231,7 @@ ARM_FUNC_START ffi_call_SYSV + #if defined(__SOFTFP__) || defined(__ARM_EABI__) + cmpne r3, #FFI_TYPE_DOUBLE + #endif +- stmeqia r2, {r0, r1} ++ stmiaeq r2, {r0, r1} + + #if !defined(__SOFTFP__) && !defined(__ARM_EABI__) + beq LSYM(Lepilogue) +@@ -253,6 +256,7 @@ LSYM(Lepilogue): + + .ffi_call_SYSV_end: + UNWIND .fnend ++ .cfi_endproc + #ifdef __ELF__ + .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) + #endif +@@ -328,6 +332,7 @@ ARM_FUNC_START ffi_closure_SYSV + + .ffi_closure_SYSV_end: + UNWIND .fnend ++ .cfi_endproc + #ifdef __ELF__ + .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) + #endif +@@ -410,7 +415,7 @@ LSYM(Lbase_args): + beq LSYM(Lepilogue_vfp) + + cmp r3, #FFI_TYPE_SINT64 +- stmeqia r2, {r0, r1} ++ stmiaeq r2, {r0, r1} + beq LSYM(Lepilogue_vfp) + + cmp r3, #FFI_TYPE_FLOAT +@@ -430,6 +435,7 @@ LSYM(Lepilogue_vfp): + + .ffi_call_VFP_end: + UNWIND .fnend ++ .cfi_endproc + .size CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP) + + +@@ -492,6 +498,7 @@ ARM_FUNC_START ffi_closure_VFP + + .ffi_closure_VFP_end: + UNWIND .fnend ++ .cfi_endproc + .size CNAME(ffi_closure_VFP),.ffi_closure_VFP_end-CNAME(ffi_closure_VFP) + #endif + -- cgit v1.2.3