Commit 5658b0892683d2e24e4d5842978c184a7ad33858

Zachary Waldowski 2013-12-30T16:33:47

Darwin/aarch64: Use CNAME, restrict .size like ARM

diff --git a/src/aarch64/sysv.S b/src/aarch64/sysv.S
index 734dac6..e97e47e 100644
--- a/src/aarch64/sysv.S
+++ b/src/aarch64/sysv.S
@@ -23,14 +23,30 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
 #include <fficonfig.h>
 #include <ffi.h>
 
+#ifdef HAVE_MACHINE_ASM_H
+#include <machine/asm.h>
+#else
+#ifdef __USER_LABEL_PREFIX__
+#define CONCAT1(a, b) CONCAT2(a, b)
+#define CONCAT2(a, b) a ## b
+
+/* Use the right prefix for global labels.  */
+#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
+#else
+#define CNAME(x) x
+#endif
+#endif
+
 #define cfi_adjust_cfa_offset(off)	.cfi_adjust_cfa_offset off
 #define cfi_rel_offset(reg, off)	.cfi_rel_offset reg, off
 #define cfi_restore(reg)		.cfi_restore reg
 #define cfi_def_cfa_register(reg)	.cfi_def_cfa_register reg
 
         .text
-        .globl ffi_call_SYSV
-        .type ffi_call_SYSV, #function
+        .globl CNAME(ffi_call_SYSV)
+#ifdef __ELF__
+        .type CNAME(ffi_call_SYSV), #function
+#endif
 
 /* ffi_call_SYSV()
 
@@ -82,7 +98,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
 #define ffi_call_SYSV_FS (8 * 4)
 
         .cfi_startproc
-ffi_call_SYSV:
+CNAME(ffi_call_SYSV):
         stp     x29, x30, [sp, #-16]!
 	cfi_adjust_cfa_offset (16)
         cfi_rel_offset (x29, 0)
@@ -180,7 +196,9 @@ ffi_call_SYSV:
         ret
 
         .cfi_endproc
-        .size ffi_call_SYSV, .-ffi_call_SYSV
+#ifdef __ELF__
+        .size CNAME(ffi_call_SYSV), .-CNAME(ffi_call_SYSV)
+#endif
 
 #define ffi_closure_SYSV_FS (8 * 2 + AARCH64_CALL_CONTEXT_SIZE)
 
@@ -222,9 +240,9 @@ ffi_call_SYSV:
    Voila!  */
 
         .text
-        .globl ffi_closure_SYSV
+        .globl CNAME(ffi_closure_SYSV)
         .cfi_startproc
-ffi_closure_SYSV:
+CNAME(ffi_closure_SYSV):
         stp     x29, x30, [sp, #-16]!
 	cfi_adjust_cfa_offset (16)
         cfi_rel_offset (x29, 0)
@@ -270,7 +288,7 @@ ffi_closure_SYSV:
            trampoline was called.  */
         add     x2, x29, #16
 
-        bl      ffi_closure_SYSV_inner
+        bl      CNAME(ffi_closure_SYSV_inner)
 
         /* Figure out if we should touch the vector registers.  */
         ldr     x0, [x22, #8]
@@ -304,4 +322,6 @@ ffi_closure_SYSV:
 
         ret
         .cfi_endproc
-        .size ffi_closure_SYSV, .-ffi_closure_SYSV
+#ifdef __ELF__
+        .size CNAME(ffi_closure_SYSV), .-CNAME(ffi_closure_SYSV)
+#endif