> Date: Tue, 21 Nov 2017 17:57:41 +0100 (CET)
> From: Mark Kettenis <[email protected]>
> 
> 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.

Here is the arm64 version.  This one contains another gem.  The code
used .word where .quad was needed.  Although I think that bit of code
is actually dead now that our libc.a is PIC as well.

ok?


Index: lib/libc/arch/aarch64/sys/Ovfork.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/aarch64/sys/Ovfork.S,v
retrieving revision 1.2
diff -u -p -r1.2 Ovfork.S
--- lib/libc/arch/aarch64/sys/Ovfork.S  18 Mar 2017 23:41:24 -0000      1.2
+++ lib/libc/arch/aarch64/sys/Ovfork.S  21 Nov 2017 18:55:31 -0000
@@ -34,9 +34,6 @@
 
 #include "SYS.h"
 
-       .text
-       .align  0
-
 SYSENTRY_HIDDEN(vfork)
        mov     x2, x30
        SYSTRAP(vfork)
Index: lib/libc/arch/aarch64/sys/brk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/aarch64/sys/brk.S,v
retrieving revision 1.3
diff -u -p -r1.3 brk.S
--- lib/libc/arch/aarch64/sys/brk.S     28 Oct 2017 21:31:06 -0000      1.3
+++ lib/libc/arch/aarch64/sys/brk.S     21 Nov 2017 18:55:31 -0000
@@ -38,7 +38,7 @@
        .globl  __curbrk
 
        .data
-       .align  0
+       .align  3
        .type   __minbrk,#object
 __minbrk:
        .quad   _C_LABEL(_end)
Index: lib/libc/arch/aarch64/sys/sbrk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/aarch64/sys/sbrk.S,v
retrieving revision 1.2
diff -u -p -r1.2 sbrk.S
--- lib/libc/arch/aarch64/sys/sbrk.S    18 Mar 2017 12:50:14 -0000      1.2
+++ lib/libc/arch/aarch64/sys/sbrk.S    21 Nov 2017 18:55:31 -0000
@@ -37,7 +37,7 @@
        .globl  _C_LABEL(_end)
 
        .data
-       .align  0
+       .align  3
        .globl  __curbrk
        .type   __curbrk,#object
        .hidden __curbrk
@@ -73,10 +73,10 @@ ENTRY(sbrk)
        /* Return old curbrk value */
        ret
 
-       .align  0
+       .align  3
 #if !defined(__PIC__)
 .Lcurbrk:
-       .word   __curbrk
+       .quad   __curbrk
 #endif
 END(sbrk)
        .weak   sbrk

Reply via email to