So it seems clang honours .align 0 (meaning things should be
byte-aligned) leading to SIGBUS when compiling libc with clang.  Diff
below turns the relevant ones into .align 2 and removes unecessary
directives from Ovfork.S.

I think arm64 suffers from the same problem; I will fix it in a
separate diff.

ok?


Index: lib/libc/arch/arm/sys/Ovfork.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/arm/sys/Ovfork.S,v
retrieving revision 1.7
diff -u -p -r1.7 Ovfork.S
--- lib/libc/arch/arm/sys/Ovfork.S      6 Aug 2016 19:16:09 -0000       1.7
+++ lib/libc/arch/arm/sys/Ovfork.S      21 Nov 2017 16:53:12 -0000
@@ -34,9 +34,6 @@
 
 #include "SYS.h"
 
-       .text
-       .align  0
-
 SYSENTRY_HIDDEN(vfork)
        mov     r2, r14
        SYSTRAP(vfork)
Index: lib/libc/arch/arm/sys/brk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/arm/sys/brk.S,v
retrieving revision 1.9
diff -u -p -r1.9 brk.S
--- lib/libc/arch/arm/sys/brk.S 6 Aug 2016 19:16:09 -0000       1.9
+++ lib/libc/arch/arm/sys/brk.S 21 Nov 2017 16:53:12 -0000
@@ -38,7 +38,7 @@
        .globl  __curbrk
 
        .data
-       .align  0
+       .align  2
        .type   __minbrk,#object
 __minbrk:
        .word   _C_LABEL(_end)
Index: lib/libc/arch/arm/sys/sbrk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/arm/sys/sbrk.S,v
retrieving revision 1.9
diff -u -p -r1.9 sbrk.S
--- lib/libc/arch/arm/sys/sbrk.S        6 Aug 2016 19:16:09 -0000       1.9
+++ lib/libc/arch/arm/sys/sbrk.S        21 Nov 2017 16:53:12 -0000
@@ -37,7 +37,7 @@
        .globl  _C_LABEL(_end)
 
        .data
-       .align  0
+       .align  2
        .globl  __curbrk
        .type   __curbrk,#object
        .hidden __curbrk
@@ -77,7 +77,7 @@ ENTRY(sbrk)
        /* Return old curbrk value */
        mov     r15, r14
 
-       .align  0
+       .align  2
 #ifdef __PIC__
 .Lgot:
        .word   _C_LABEL(_GLOBAL_OFFSET_TABLE_) - (.L1+8)

Reply via email to