> 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 >