> 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