]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
s390/vmlinux.lds.S: Move .vmlinux.info to end of allocatable sections
authorNathan Chancellor <nathan@kernel.org>
Wed, 8 Oct 2025 22:46:46 +0000 (15:46 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 19 Oct 2025 14:33:43 +0000 (16:33 +0200)
[ Upstream commit 9338d660b79a0dfe4eb3fe9bd748054cded87d4f ]

When building s390 defconfig with binutils older than 2.32, there are
several warnings during the final linking stage:

  s390-linux-ld: .tmp_vmlinux1: warning: allocated section `.got.plt' not in segment
  s390-linux-ld: .tmp_vmlinux2: warning: allocated section `.got.plt' not in segment
  s390-linux-ld: vmlinux.unstripped: warning: allocated section `.got.plt' not in segment
  s390-linux-objcopy: vmlinux: warning: allocated section `.got.plt' not in segment
  s390-linux-objcopy: st7afZyb: warning: allocated section `.got.plt' not in segment

binutils commit afca762f598 ("S/390: Improve partial relro support for
64 bit") [1] in 2.32 changed where .got.plt is emitted, avoiding the
warning.

The :NONE in the .vmlinux.info output section description changes the
segment for subsequent allocated sections. Move .vmlinux.info right
above the discards section to place all other sections in the previously
defined segment, .data.

Fixes: 30226853d6ec ("s390: vmlinux.lds.S: explicitly handle '.got' and '.plt' sections")
Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=afca762f598d453c563f244cd3777715b1a0cb72
Acked-by: Alexander Gordeev <agordeev@linux.ibm.com>
Acked-by: Alexey Gladkov <legion@kernel.org>
Acked-by: Nicolas Schier <nsc@kernel.org>
Link: https://patch.msgid.link/20251008-kbuild-fix-modinfo-regressions-v1-3-9fc776c5887c@kernel.org
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/s390/kernel/vmlinux.lds.S

index 3f2f90e38808c5087358d15c2fca2da63c7d8351..0d18d3267bc4f83ab00fee42e70b0428be80d66a 100644 (file)
@@ -207,6 +207,28 @@ SECTIONS
        DWARF_DEBUG
        ELF_DETAILS
 
+       /*
+        * Make sure that the .got.plt is either completely empty or it
+        * contains only the three reserved double words.
+        */
+       .got.plt : {
+               *(.got.plt)
+       }
+       ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, "Unexpected GOT/PLT entries detected!")
+
+       /*
+        * Sections that should stay zero sized, which is safer to
+        * explicitly check instead of blindly discarding.
+        */
+       .plt : {
+               *(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt)
+       }
+       ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
+       .rela.dyn : {
+               *(.rela.*) *(.rela_*)
+       }
+       ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")
+
        /*
         * uncompressed image info used by the decompressor
         * it should match struct vmlinux_info
@@ -237,28 +259,6 @@ SECTIONS
 #endif
        } :NONE
 
-       /*
-        * Make sure that the .got.plt is either completely empty or it
-        * contains only the three reserved double words.
-        */
-       .got.plt : {
-               *(.got.plt)
-       }
-       ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, "Unexpected GOT/PLT entries detected!")
-
-       /*
-        * Sections that should stay zero sized, which is safer to
-        * explicitly check instead of blindly discarding.
-        */
-       .plt : {
-               *(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt)
-       }
-       ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
-       .rela.dyn : {
-               *(.rela.*) *(.rela_*)
-       }
-       ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")
-
        /* Sections to be discarded */
        DISCARDS
        /DISCARD/ : {