Darwin/aarch64: Use CNAME, restrict .size like ARM
authorZachary Waldowski <zach@waldowski.me>
Mon, 30 Dec 2013 21:33:47 +0000 (16:33 -0500)
committerZachary Waldowski <zach@waldowski.me>
Wed, 5 Feb 2014 19:28:58 +0000 (14:28 -0500)
src/aarch64/sysv.S

index 734dac6311a0fac802d1ae8012f614a84e57c0cf..e97e47e64d367ce1f5025cfc023d8c3ebd82807a 100644 (file)
@@ -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