On Mon, Oct 25 2021, Mark Kettenis <mark.kette...@xs4all.nl> wrote:
>> Date: Mon, 25 Oct 2021 12:37:41 +0200 (CEST)
>> From: Mark Kettenis <mark.kette...@xs4all.nl>
>> 
>> > Date: Mon, 25 Oct 2021 12:01:11 +0200
>> > From: Patrick Wildt <patr...@blueri.se>
>> > 
>> > Hi,
>> > 
>> > mortimer@ has this diff in his tree for LLVM 13.  I actually haven't
>> > tried to see if it works fine with LLVM 11, but I feel it needs to be
>> > sent out and not just be blindly committed.
>> > 
>> > If someone wants to take care of this, it would be nice, so I can take
>> > care of the remaining parts of sending out the LLVM 13 diff.
>> 
>> > diff --git a/lib/libc/arch/amd64/sys/brk.S b/lib/libc/arch/amd64/sys/brk.S
>> > index ce69679e389..ee1c11f7643 100644
>> > --- a/lib/libc/arch/amd64/sys/brk.S
>> > +++ b/lib/libc/arch/amd64/sys/brk.S
>> > @@ -48,7 +48,6 @@ __minbrk:
>> >    END(__minbrk)
>> >    .type   __minbrk,@object
>> >  
>> > -  .weak   brk
>> >  ENTRY(brk)
>> >    cmpq    %rdi,__minbrk(%rip)
>> >    jb      1f
>> > diff --git a/lib/libc/arch/amd64/sys/sbrk.S 
>> > b/lib/libc/arch/amd64/sys/sbrk.S
>> > index 8d7d68909b2..db53a6bb643 100644
>> > --- a/lib/libc/arch/amd64/sys/sbrk.S
>> > +++ b/lib/libc/arch/amd64/sys/sbrk.S
>> > @@ -53,7 +53,6 @@ __curbrk:
>> >    END(__curbrk)
>> >    .type   __curbrk,@object
>> >  
>> > -  .weak   sbrk
>> >  ENTRY(sbrk)
>> >    movq    __curbrk(%rip),%rax
>> >    movslq  %edi,%rsi
>> 
>> These functions are supposed to be weak, like they are on
>> architectures that use a C implementation.  I suppose the .weak
>> directive needs to come *after* the .global emitted by ENTRY().
>> Putting it after the END() works.
>
> So I think the diff below is what we want here.

There are others left:

russell /usr/src/lib/libc$ grep -B 1 -R ^ENTRY | grep -A 1 weak
arch/i386/sys/brk.S-    .weak   brk
arch/i386/sys/brk.S:ENTRY(brk)
arch/i386/sys/sbrk.S-   .weak   sbrk
arch/i386/sys/sbrk.S:ENTRY(sbrk)
arch/riscv64/sys/sbrk.S-        .weak   sbrk
arch/riscv64/sys/sbrk.S:ENTRY(sbrk)
arch/riscv64/sys/brk.S- .weak   brk
arch/riscv64/sys/brk.S:ENTRY(brk)

(and a few others where grep -B 1 isn't enough)

> ok?

I checked that the resulting .*o files are the same on amd64, sparc64
and riscv64.  ok jca@

Here's the diff for the other architectures.  I didn't touch m88k, which
won't use clang anytime soon.  Also ok?


Index: arch/arm/sys/brk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/arm/sys/brk.S,v
retrieving revision 1.10
diff -u -p -r1.10 brk.S
--- arch/arm/sys/brk.S  21 Nov 2017 19:08:36 -0000      1.10
+++ arch/arm/sys/brk.S  25 Oct 2021 13:48:05 -0000
@@ -44,8 +44,6 @@ __minbrk:
        .word   _C_LABEL(_end)
        END(__minbrk)
 
-       .weak   brk
-
 /*
  * Change the data segment size
  */
@@ -96,3 +94,4 @@ ENTRY(brk)
 .Lcurbrk:
        .word   PIC_SYM(__curbrk, GOT)
 END(brk)
+       .weak   brk
Index: arch/arm/sys/sbrk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/arm/sys/sbrk.S,v
retrieving revision 1.10
diff -u -p -r1.10 sbrk.S
--- arch/arm/sys/sbrk.S 21 Nov 2017 19:08:36 -0000      1.10
+++ arch/arm/sys/sbrk.S 25 Oct 2021 13:48:05 -0000
@@ -45,7 +45,6 @@ __curbrk:
        .word   _C_LABEL(_end)
        END(__curbrk)
 
-       .weak   sbrk
 /*
  * Change the data segment size
  */
@@ -85,3 +84,4 @@ ENTRY(sbrk)
 .Lcurbrk:
        .word   PIC_SYM(__curbrk, GOT)
 END(sbrk)
+       .weak   sbrk
Index: arch/i386/sys/brk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/i386/sys/brk.S,v
retrieving revision 1.13
diff -u -p -r1.13 brk.S
--- arch/i386/sys/brk.S 19 Aug 2017 18:24:06 -0000      1.13
+++ arch/i386/sys/brk.S 25 Oct 2021 13:48:05 -0000
@@ -42,7 +42,6 @@ __minbrk:
        END(__minbrk)
        .type   __minbrk,@object
 
-       .weak   brk
 ENTRY(brk)
 #ifdef __PIC__
        movl    4(%esp),%ecx
@@ -82,3 +81,4 @@ ENTRY(brk)
        SET_ERRNO()
        ret
 END(brk)
+       .weak   brk
Index: arch/i386/sys/sbrk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/i386/sys/sbrk.S,v
retrieving revision 1.13
diff -u -p -r1.13 sbrk.S
--- arch/i386/sys/sbrk.S        19 Aug 2017 18:24:06 -0000      1.13
+++ arch/i386/sys/sbrk.S        25 Oct 2021 13:48:05 -0000
@@ -42,7 +42,6 @@ __curbrk:     .long   _end
        END(__curbrk)
        .type   __curbrk,@object
 
-       .weak   sbrk
 ENTRY(sbrk)
 #ifdef __PIC__
        movl    4(%esp),%ecx
@@ -76,3 +75,4 @@ ENTRY(sbrk)
        SET_ERRNO()
        ret
 END(sbrk)
+       .weak   sbrk
Index: arch/powerpc/sys/brk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/powerpc/sys/brk.S,v
retrieving revision 1.15
diff -u -p -r1.15 brk.S
--- arch/powerpc/sys/brk.S      26 Oct 2020 22:07:05 -0000      1.15
+++ arch/powerpc/sys/brk.S      25 Oct 2021 13:48:05 -0000
@@ -30,8 +30,6 @@
        .extern __curbrk
        .extern _C_LABEL(_end)
 
-       .weak   brk
-
 ENTRY(brk)
        
        /* check >= _end, if not make the call for _end */
@@ -77,3 +75,4 @@ ENTRY(brk)
        mr      3, 0            /* # return 0 */
        blr
 END(brk)
+       .weak   brk
Index: arch/powerpc/sys/sbrk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/powerpc/sys/sbrk.S,v
retrieving revision 1.14
diff -u -p -r1.14 sbrk.S
--- arch/powerpc/sys/sbrk.S     26 Oct 2020 22:07:05 -0000      1.14
+++ arch/powerpc/sys/sbrk.S     25 Oct 2021 13:48:05 -0000
@@ -36,8 +36,6 @@ __curbrk:
        END(__curbrk)
        .type   __curbrk,@object
 
-       .weak   sbrk
-
        .text
 ENTRY(sbrk)
        
@@ -74,3 +72,4 @@ ENTRY(sbrk)
        mr      3, 5            /* # remember, 5=old_curbrk */
        blr
 END(sbrk)
+       .weak   sbrk
Index: arch/riscv64/sys/brk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/riscv64/sys/brk.S,v
retrieving revision 1.1
diff -u -p -r1.1 brk.S
--- arch/riscv64/sys/brk.S      4 May 2021 04:17:53 -0000       1.1
+++ arch/riscv64/sys/brk.S      25 Oct 2021 13:48:05 -0000
@@ -26,7 +26,6 @@ __minbrk:
        .dword _C_LABEL(_end)
        
 
-       .weak   brk
 ENTRY(brk)
        RETGUARD_SETUP(brk, t6)
        lla     t1, _C_LABEL(__minbrk)
@@ -56,3 +55,4 @@ ENTRY(brk)
        RETGUARD_CHECK(brk, t6);
        ret
 END(brk)
+       .weak   brk
Index: arch/riscv64/sys/sbrk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/riscv64/sys/sbrk.S,v
retrieving revision 1.1
diff -u -p -r1.1 sbrk.S
--- arch/riscv64/sys/sbrk.S     4 May 2021 04:17:53 -0000       1.1
+++ arch/riscv64/sys/sbrk.S     25 Oct 2021 13:48:05 -0000
@@ -28,7 +28,6 @@ __curbrk:
        .dword _C_LABEL(_end)
        END(__curbrk)
        
-       .weak   sbrk
 ENTRY(sbrk)
        RETGUARD_SETUP(sbrk, t6)
 
@@ -48,3 +47,4 @@ ENTRY(sbrk)
        RETGUARD_CHECK(sbrk, t6);
        ret
 END(sbrk)
+       .weak   sbrk
Index: arch/sparc64/sys/brk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/sparc64/sys/brk.S,v
retrieving revision 1.7
diff -u -p -r1.7 brk.S
--- arch/sparc64/sys/brk.S      5 Sep 2015 06:22:47 -0000       1.7
+++ arch/sparc64/sys/brk.S      25 Oct 2021 13:48:05 -0000
@@ -41,8 +41,6 @@
        .globl  __curbrk
        .globl  _C_LABEL(_end)
 
-       .weak   brk
-
        .data
        .align  8
 __minbrk:
@@ -85,3 +83,4 @@ ENTRY(brk)
         stx    %o2, [%g1 + %lo(__curbrk)]
 #endif
 END(brk)
+       .weak   brk
Index: arch/sparc64/sys/sbrk.S
===================================================================
RCS file: /cvs/src/lib/libc/arch/sparc64/sys/sbrk.S,v
retrieving revision 1.5
diff -u -p -r1.5 sbrk.S
--- arch/sparc64/sys/sbrk.S     5 Sep 2015 06:22:47 -0000       1.5
+++ arch/sparc64/sys/sbrk.S     25 Oct 2021 13:48:05 -0000
@@ -50,8 +50,6 @@ __curbrk:
        OTYPE(__curbrk)
        .text
 
-       .weak   sbrk
-
 ENTRY(sbrk)
 #ifdef __PIC__
        PIC_PROLOGUE(%o5,%o4)
@@ -83,3 +81,4 @@ ENTRY(sbrk)
         stx    %o4, [%o2 + %lo(__curbrk)]
 #endif
 END(sbrk)
+       .weak   sbrk


-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to