> From: Jeremie Courreges-Anglas <j...@wxcvbn.org>
> Date: Mon, 25 Oct 2021 14:55:16 +0100
> 
> 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?

ok kettenis@

> 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