Seems the clang assembler ignores a .weak directive before the symbol
is defined.
ok?
Index: lib/libc/arch/amd64/sys/brk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/amd64/sys/brk.S,v
retrieving revision 1.8
diff -u -p -r1.8 brk.S
--- lib/libc/arch/amd64/sys/brk.S 7 May 2016 19:05:21 -0000 1.8
+++ lib/libc/arch/amd64/sys/brk.S 10 Sep 2016 20:20:25 -0000
@@ -49,7 +49,6 @@ __minbrk:
.type __minbrk,@object
.text
- .weak brk
ENTRY(brk)
cmpq %rdi,__minbrk(%rip)
jb 1f
@@ -64,3 +63,4 @@ ENTRY(brk)
SET_ERRNO
ret
END(brk)
+ .weak brk
Index: lib/libc/arch/amd64/sys/sbrk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/amd64/sys/sbrk.S,v
retrieving revision 1.8
diff -u -p -r1.8 sbrk.S
--- lib/libc/arch/amd64/sys/sbrk.S 7 May 2016 19:05:21 -0000 1.8
+++ lib/libc/arch/amd64/sys/sbrk.S 10 Sep 2016 20:20:25 -0000
@@ -53,7 +53,6 @@ __curbrk: .quad _end
.type __curbrk,@object
.text
- .weak sbrk
ENTRY(sbrk)
movq __curbrk(%rip),%rax
movslq %edi,%rsi
@@ -68,3 +67,4 @@ ENTRY(sbrk)
SET_ERRNO
ret
END(sbrk)
+ .weak sbrk