Message ID | 20230609051002.3342-1-npiggin@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 8ad57add77d352102ba9edd500b00bc851c2e261 |
Headers | show |
Series | powerpc/build: vdso linker warning for orphan sections | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/github-powerpc_ppctests | success | Successfully ran 8 jobs. |
snowpatch_ozlabs/github-powerpc_selftests | success | Successfully ran 8 jobs. |
snowpatch_ozlabs/github-powerpc_sparse | success | Successfully ran 4 jobs. |
snowpatch_ozlabs/github-powerpc_kernel_qemu | success | Successfully ran 24 jobs. |
snowpatch_ozlabs/github-powerpc_clang | success | Successfully ran 6 jobs. |
On Fri, 09 Jun 2023 15:10:02 +1000, Nicholas Piggin wrote: > Add --orphan-handlin for vdsos, and adjust vdso linker scripts to deal > with orphan sections. > > Applied to powerpc/next. [1/1] powerpc/build: vdso linker warning for orphan sections https://git.kernel.org/powerpc/c/8ad57add77d352102ba9edd500b00bc851c2e261 cheers
Hi Nicholas, On 2023-06-09, Nicholas Piggin <npiggin@gmail.com> wrote: > Add --orphan-handlin for vdsos, and adjust vdso linker scripts to deal > with orphan sections. I'm reporting that I am getting a linker warning with 6.5-rc2. The warning message is: ld: warning: discarding dynamic section .rela.opd and bisects to: 8ad57add77d3 ("powerpc/build: vdso linker warning for orphan sections") Despite the warning, my ppc64 system seems to run fine. Let me know if you need any other information from me. I noticed [0] this with 6.5-rc1 but didn't contact the right people. John Ogness [0] https://lore.kernel.org/lkml/871qhf1q3j.fsf@jogness.linutronix.de
John Ogness <john.ogness@linutronix.de> writes: > Hi Nicholas, > > On 2023-06-09, Nicholas Piggin <npiggin@gmail.com> wrote: >> Add --orphan-handlin for vdsos, and adjust vdso linker scripts to deal >> with orphan sections. > > I'm reporting that I am getting a linker warning with 6.5-rc2. The > warning message is: > > ld: warning: discarding dynamic section .rela.opd > > and bisects to: > > 8ad57add77d3 ("powerpc/build: vdso linker warning for orphan sections") > > Despite the warning, my ppc64 system seems to run fine. Let me know if > you need any other information from me. We already discard .opd and .rela*, so I guess we should also be discarding .rela.opd. Can you test with a newer compiler/binutils? cheers
On 2023-07-18, Michael Ellerman <mpe@ellerman.id.au> wrote: >> ld: warning: discarding dynamic section .rela.opd >> >> and bisects to: >> >> 8ad57add77d3 ("powerpc/build: vdso linker warning for orphan sections") > > Can you test with a newer compiler/binutils? Testing the Debian release cross compilers/binutils: Debian 10 / gcc 8.3.0 / ld 2.31.1: generates the warning Debian 11 / gcc 10.2.1 / ld 2.35.2: generates the warning Debian 12 / gcc 12.2.0 / ld 2.40: does _not_ generate the warning I suppose moving to the newer toolchain is the workaround. Although it is a bit unusual to require such a modern toolchain in order to build a kernel without warnings. John Ogness
John Ogness <john.ogness@linutronix.de> writes: > On 2023-07-18, Michael Ellerman <mpe@ellerman.id.au> wrote: >>> ld: warning: discarding dynamic section .rela.opd >>> >>> and bisects to: >>> >>> 8ad57add77d3 ("powerpc/build: vdso linker warning for orphan sections") >> >> Can you test with a newer compiler/binutils? > > Testing the Debian release cross compilers/binutils: > > Debian 10 / gcc 8.3.0 / ld 2.31.1: generates the warning > > Debian 11 / gcc 10.2.1 / ld 2.35.2: generates the warning > > Debian 12 / gcc 12.2.0 / ld 2.40: does _not_ generate the warning > > I suppose moving to the newer toolchain is the workaround. Although it > is a bit unusual to require such a modern toolchain in order to build a > kernel without warnings. I didn't mean that you should move to a new toolchain to avoid the warning, I was just curious why you're the only person to see it. I regularly test with a gcc 5.5.0 / ld 2.29 toolchain and gcc 13.1.1 / ld 2.39, and I haven't seen the warning. I tried a bunch of others and can't reproduce it. Can you confirm that this makes the warning go away? cheers diff --git a/arch/powerpc/kernel/vdso/vdso64.lds.S b/arch/powerpc/kernel/vdso/vdso64.lds.S index bda6c8cdd459..286e1597c548 100644 --- a/arch/powerpc/kernel/vdso/vdso64.lds.S +++ b/arch/powerpc/kernel/vdso/vdso64.lds.S @@ -85,7 +85,7 @@ SECTIONS *(.branch_lt) *(.data .data.* .gnu.linkonce.d.* .sdata*) *(.bss .sbss .dynbss .dynsbss) - *(.opd) + *(.opd .rela.opd) *(.glink .iplt .plt .rela*) } }
Hi Michael, On 2023-07-19, Michael Ellerman <mpe@ellerman.id.au> wrote: > I regularly test with a gcc 5.5.0 / ld 2.29 toolchain and gcc 13.1.1 / > ld 2.39, and I haven't seen the warning. I tried a bunch of others and > can't reproduce it. I will send my config in a separate email (without the lists in CC). Building the vdso_prepare target is all that is needed. > Can you confirm that this makes the warning go away? > > diff --git a/arch/powerpc/kernel/vdso/vdso64.lds.S b/arch/powerpc/kernel/vdso/vdso64.lds.S > index bda6c8cdd459..286e1597c548 100644 > --- a/arch/powerpc/kernel/vdso/vdso64.lds.S > +++ b/arch/powerpc/kernel/vdso/vdso64.lds.S > @@ -85,7 +85,7 @@ SECTIONS > *(.branch_lt) > *(.data .data.* .gnu.linkonce.d.* .sdata*) > *(.bss .sbss .dynbss .dynsbss) > - *(.opd) > + *(.opd .rela.opd) > *(.glink .iplt .plt .rela*) Hmmm. Not sure what that would change. And indeed it does not make the warning go away. Doing some testing it seems that previously .rela.opd was being silently placed in the .rela.dyn section. So doing that explicitly obviously gets rid of the warning: Index: linux-6.5-rc2/arch/powerpc/kernel/vdso/vdso64.lds.S =================================================================== --- linux-6.5-rc2.orig/arch/powerpc/kernel/vdso/vdso64.lds.S +++ linux-6.5-rc2/arch/powerpc/kernel/vdso/vdso64.lds.S @@ -69,7 +69,7 @@ SECTIONS .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr .eh_frame : { KEEP (*(.eh_frame)) } :text .gcc_except_table : { *(.gcc_except_table) } - .rela.dyn ALIGN(8) : { *(.rela.dyn) } + .rela.dyn ALIGN(8) : { *(.rela.dyn) *(.rela.opd) } .got ALIGN(8) : { *(.got .toc) } But if the goal is to get rid of .rela.opd then the question is: why is the linker complaining about it being discarded? John
diff --git a/arch/powerpc/kernel/vdso/Makefile b/arch/powerpc/kernel/vdso/Makefile index 4c3f34485f08..23ee96106537 100644 --- a/arch/powerpc/kernel/vdso/Makefile +++ b/arch/powerpc/kernel/vdso/Makefile @@ -56,6 +56,8 @@ KCSAN_SANITIZE := n ccflags-y := -fno-common -fno-builtin ldflags-y := -Wl,--hash-style=both -nostdlib -shared -z noexecstack ldflags-$(CONFIG_LD_IS_LLD) += $(call cc-option,--ld-path=$(LD),-fuse-ld=lld) +ldflags-$(CONFIG_LD_ORPHAN_WARN) += -Wl,--orphan-handling=$(CONFIG_LD_ORPHAN_WARN_LEVEL) + # Filter flags that clang will warn are unused for linking ldflags-y += $(filter-out $(CC_AUTO_VAR_INIT_ZERO_ENABLER) $(CC_FLAGS_FTRACE) -Wa$(comma)%, $(KBUILD_CFLAGS)) diff --git a/arch/powerpc/kernel/vdso/vdso32.lds.S b/arch/powerpc/kernel/vdso/vdso32.lds.S index bc0be274a9ac..426e1ccc6971 100644 --- a/arch/powerpc/kernel/vdso/vdso32.lds.S +++ b/arch/powerpc/kernel/vdso/vdso32.lds.S @@ -83,9 +83,11 @@ SECTIONS /DISCARD/ : { *(.note.GNU-stack) + *(*.EMB.apuinfo) + *(.branch_lt) *(.data .data.* .gnu.linkonce.d.* .sdata*) *(.bss .sbss .dynbss .dynsbss) - *(.got1) + *(.got1 .glink .iplt .rela*) } } diff --git a/arch/powerpc/kernel/vdso/vdso64.lds.S b/arch/powerpc/kernel/vdso/vdso64.lds.S index 744ae5363e6c..bda6c8cdd459 100644 --- a/arch/powerpc/kernel/vdso/vdso64.lds.S +++ b/arch/powerpc/kernel/vdso/vdso64.lds.S @@ -32,7 +32,7 @@ SECTIONS . = ALIGN(16); .text : { *(.text .stub .text.* .gnu.linkonce.t.* __ftr_alt_*) - *(.sfpr .glink) + *(.sfpr) } :text PROVIDE(__etext = .); PROVIDE(_etext = .); @@ -81,10 +81,12 @@ SECTIONS /DISCARD/ : { *(.note.GNU-stack) + *(*.EMB.apuinfo) *(.branch_lt) *(.data .data.* .gnu.linkonce.d.* .sdata*) *(.bss .sbss .dynbss .dynsbss) *(.opd) + *(.glink .iplt .plt .rela*) } }
Add --orphan-handlin for vdsos, and adjust vdso linker scripts to deal with orphan sections. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- arch/powerpc/kernel/vdso/Makefile | 2 ++ arch/powerpc/kernel/vdso/vdso32.lds.S | 4 +++- arch/powerpc/kernel/vdso/vdso64.lds.S | 4 +++- 3 files changed, 8 insertions(+), 2 deletions(-)