On Mon, Oct 06, 2025 at 04:41:19PM -0700, Nathan Chancellor wrote: ...
### Build error log s390x-linux-gnu-ld: .tmp_vmlinux1: warning: allocated section `.got.plt' not in segment s390x-linux-gnu-ld: .tmp_vmlinux2: warning: allocated section `.got.plt' not in segment s390x-linux-gnu-ld: vmlinux.unstripped: warning: allocated section `.got.plt' not in segment s390x-linux-gnu-objcopy: vmlinux: warning: allocated section `.got.plt' not in segment s390x-linux-gnu-objcopy: stM7JmYX: warning: allocated section `.got.plt' not in segment
So these warnings should be fixed with:
diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S index feecf1a6ddb4..d74d4c52ccd0 100644 --- a/arch/s390/kernel/vmlinux.lds.S +++ b/arch/s390/kernel/vmlinux.lds.S @@ -214,6 +214,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 @@ -244,28 +266,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/ : {
I am unsure why newer binutils does not show this but I did not care enough to actually bisect.
s390x-linux-gnu-objcopy: stM7JmYX: symbol `.modinfo' required but not present s390x-linux-gnu-objcopy:stM7JmYX: no symbols
I did bisect binutils to figure out that commit c12d9fa2afe ("Support objcopy --remove-section=.relaFOO") [1] in binutils 2.32 resolves this error.
I can fix this for those older binutils with:
diff --git a/scripts/Makefile.vmlinux b/scripts/Makefile.vmlinux index 7c6ae9886f8f..9ea92c3317dc 100644 --- a/scripts/Makefile.vmlinux +++ b/scripts/Makefile.vmlinux @@ -82,7 +82,7 @@ endif # ---------------------------------------------------------------------------
remove-section-y := .modinfo -remove-section-$(CONFIG_ARCH_VMLINUX_NEEDS_RELOCS) += '.rel*' +remove-section-$(CONFIG_ARCH_VMLINUX_NEEDS_RELOCS) += '.rel*' '.rel.*'
remove-symbols := -w --strip-symbol='__mod_device_table__*'
I can send a patch series tomorrow.
[1]: https://sourceware.org/git/?p=binutils-gdb.git%3Ba=commit%3Bh=c12d9fa2afe7ab...
Cheers, Nathan