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

Reply via email to