Thread (5 messages) 5 messages, 3 authors, 2020-03-27

Re: [yyu168-linux_cet:cet 55/58] powerpc64le-linux-ld: warning: discarding dynamic section .rela___ksymtab+jiffies_to_timeval

From: Yu-cheng Yu <hidden>
Date: 2020-03-27 23:04:31
Also in: oe-kbuild-all

On Thu, 2020-02-06 at 04:55 -0800, H.J. Lu wrote:
On Wed, Feb 5, 2020 at 7:26 PM Michael Ellerman [off-list ref] wrote:
quoted
"H.J. Lu" [off-list ref] writes:
quoted
On Tue, Feb 4, 2020 at 3:37 PM kbuild test robot [off-list ref] wrote:
quoted
tree:   https://github.com/yyu168/linux_cet.git cet
head:   bba707cc4715c1036b6561ab38b16747f9c49cfa
commit: 71bb971dd76eeacd351690f28864ad5c5bec3691 [55/58] Discard .note.gnu.property sections in generic NOTES
config: powerpc-rhel-kconfig (attached as .config)
compiler: powerpc64le-linux-gcc (GCC) 7.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout 71bb971dd76eeacd351690f28864ad5c5bec3691
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=powerpc

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <redacted>

All warnings (new ones prefixed by >>):

   powerpc64le-linux-ld: warning: discarding dynamic section .rela___ksymtab_gpl+__wait_rcu_gp
arch/powerpc/kernel/vmlinux.lds.S has

 .rela.dyn : AT(ADDR(.rela.dyn) - (0xc000000000000000 -0x00000000))
 {
  __rela_dyn_start = .;
  *(.rela*) <<<<<<<< Keep .rela* sections
 }
The above is inside #ifdef CONFIG_RELOCATABLE
quoted
...
 /DISCARD/ : {
  *(*.EMB.apuinfo)
  *(.glink .iplt .plt .rela* .comment)
                           ^^^^ Discard  .rela* sections.  But it is ignored.
  *(.gnu.version*)
  *(.gnu.attributes)
  *(.eh_frame)
 }
But that is not #ifdef'ed at all.
quoted
With my

ommit 71bb971dd76eeacd351690f28864ad5c5bec3691
Author: H.J. Lu [off-list ref]
Date:   Thu Jan 30 12:39:09 2020 -0800

    Discard .note.gnu.property sections in generic NOTES

    With the command-line option, -mx86-used-note=yes, the x86 assembler
    in binutils 2.32 and above generates a program property note in a note
    section, .note.gnu.property, to encode used x86 ISAs and features.  But
    kernel linker script only contains a single NOTE segment:

/DISCARD/ : { *(.note.gnu.property) }

is placed before

.rela.dyn : AT(ADDR(.rela.dyn) - (0xc000000000000000 -0x00000000))
 {
  __rela_dyn_start = .;
  *(.rela*) <<<<<<<< Keep .rela* sections
 }

Then .rela* in

 /DISCARD/ : {
  *(*.EMB.apuinfo)
  *(.glink .iplt .plt .rela* .comment)
  *(.gnu.version*)
  *(.gnu.attributes)
  *(.eh_frame)
 }

is honored.  Can someone from POWERPC comment on it?
Hmm OK. I'm not really a toolchain person.

The comment on DISCARDS says:

   * Some archs want to discard exit text/data at runtime rather than
   * link time due to cross-section references such as alt instructions,
   * bug table, eh_frame, etc.  DISCARDS must be the last of output
   * section definitions so that such archs put those in earlier section
   * definitions.
   */

But I guess you're changing those semantics in your series.

This seems to fix the warning for me?
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index b4c89a1acebb..076b3e8a849d 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -365,9 +365,12 @@ SECTIONS
        DISCARDS
        /DISCARD/ : {
                *(*.EMB.apuinfo)
-               *(.glink .iplt .plt .rela* .comment)
+               *(.glink .iplt .plt .comment)
                *(.gnu.version*)
                *(.gnu.attributes)
                *(.eh_frame)
+#ifndef CONFIG_RELOCATABLE
+               *(.rela*)
+#endif
        }
 }

cheers
This looks correct me.

Reviewed-by: H.J. Lu <redacted>

Thanks.
Has this been merged into any branch yet?  I just checked the tip tree and did
not see it.

Thanks,
Yu-cheng
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help