The S390 defconfig builds failed on the Linux next-20251002 tag build due to following build warnings / errors with gcc-8 toolchain.
* S390, build - gcc-8-defconfig
First seen on next-20251002 Good: next-20250929 Bad: next-20251002..next-20251003
Regression Analysis: - New regression? yes - Reproducibility? yes
Test regression: next-20251002: S390: gcc-8-defconfig: symbol `.modinfo' required but not present - no symbols
Reported-by: Linux Kernel Functional Testing lkft@linaro.org
### 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 s390x-linux-gnu-objcopy: stM7JmYX: symbol `.modinfo' required but not present s390x-linux-gnu-objcopy:stM7JmYX: no symbols make[3]: *** [scripts/Makefile.vmlinux:97: vmlinux] Error 1
## Source * Kernel version: 6.17.0 * Git tree: https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next.git * Git commit: 47a8d4b89844f5974f634b4189a39d5ccbacd81c * Architectures: S390 * Toolchains: gcc-8 * Kconfigs: defconfig
## Build * Build log: https://storage.tuxsuite.com/public/linaro/lkft/builds/33YUHdDpSLSMJfU4MFvRy... * Build details: https://regressions.linaro.org/lkft/linux-next-master/next-20251003/build/gc... * Build plan: https://tuxapi.tuxsuite.com/v1/groups/linaro/projects/lkft/builds/33YUHdDpSL... * Build link: https://storage.tuxsuite.com/public/linaro/lkft/builds/33YUHdDpSLSMJfU4MFvRy... * Kernel config: https://storage.tuxsuite.com/public/linaro/lkft/builds/33YUHdDpSLSMJfU4MFvRy...
## Steps to reproduce tuxmake --runtime podman --target-arch s390 --toolchain gcc-8 --kconfig defconfig --kconfig-add CONFIG_DEBUG_INFO_BTF=n
-- Linaro LKFT
[full quote below, adding Alexey and Nathan]
On Mon, Oct 06, 2025 at 04:55:56PM +0530, Naresh Kamboju wrote:
The S390 defconfig builds failed on the Linux next-20251002 tag build due to following build warnings / errors with gcc-8 toolchain.
- S390, build
- gcc-8-defconfig
First seen on next-20251002 Good: next-20250929 Bad: next-20251002..next-20251003
Regression Analysis:
- New regression? yes
- Reproducibility? yes
Test regression: next-20251002: S390: gcc-8-defconfig: symbol `.modinfo' required but not present - no symbols
Reported-by: Linux Kernel Functional Testing lkft@linaro.org
### 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 s390x-linux-gnu-objcopy: stM7JmYX: symbol `.modinfo' required but not present s390x-linux-gnu-objcopy:stM7JmYX: no symbols make[3]: *** [scripts/Makefile.vmlinux:97: vmlinux] Error 1
## Source
- Kernel version: 6.17.0
- Git tree: https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next.git
- Git commit: 47a8d4b89844f5974f634b4189a39d5ccbacd81c
- Architectures: S390
- Toolchains: gcc-8
- Kconfigs: defconfig
## Build
- Build log: https://storage.tuxsuite.com/public/linaro/lkft/builds/33YUHdDpSLSMJfU4MFvRy...
- Build details:
https://regressions.linaro.org/lkft/linux-next-master/next-20251003/build/gc...
- Build plan: https://tuxapi.tuxsuite.com/v1/groups/linaro/projects/lkft/builds/33YUHdDpSL...
- Build link: https://storage.tuxsuite.com/public/linaro/lkft/builds/33YUHdDpSLSMJfU4MFvRy...
- Kernel config:
https://storage.tuxsuite.com/public/linaro/lkft/builds/33YUHdDpSLSMJfU4MFvRy...
## Steps to reproduce tuxmake --runtime podman --target-arch s390 --toolchain gcc-8 --kconfig defconfig --kconfig-add CONFIG_DEBUG_INFO_BTF=n
Isn't the above exactly what is supposed to be addressed with commit 8d18ef04f940 ("s390: vmlinux.lds.S: Reorder sections")? Or did something change with the commit? Didn't check, and might look into this tomorrow, but adding Alexey and Nathan already now :)
Hi Heiko,
On Mon, Oct 06, 2025 at 07:47:40PM +0200, Heiko Carstens wrote:
[full quote below, adding Alexey and Nathan]
On Mon, Oct 06, 2025 at 04:55:56PM +0530, Naresh Kamboju wrote:
The S390 defconfig builds failed on the Linux next-20251002 tag build due to following build warnings / errors with gcc-8 toolchain.
- S390, build
- gcc-8-defconfig
First seen on next-20251002 Good: next-20250929 Bad: next-20251002..next-20251003
Regression Analysis:
- New regression? yes
- Reproducibility? yes
Test regression: next-20251002: S390: gcc-8-defconfig: symbol `.modinfo' required but not present - no symbols
Reported-by: Linux Kernel Functional Testing lkft@linaro.org
### 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 s390x-linux-gnu-objcopy: stM7JmYX: symbol `.modinfo' required but not present s390x-linux-gnu-objcopy:stM7JmYX: no symbols make[3]: *** [scripts/Makefile.vmlinux:97: vmlinux] Error 1
## Source
- Kernel version: 6.17.0
- Git tree: https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next.git
- Git commit: 47a8d4b89844f5974f634b4189a39d5ccbacd81c
- Architectures: S390
- Toolchains: gcc-8
- Kconfigs: defconfig
## Build
- Build log: https://storage.tuxsuite.com/public/linaro/lkft/builds/33YUHdDpSLSMJfU4MFvRy...
- Build details:
https://regressions.linaro.org/lkft/linux-next-master/next-20251003/build/gc...
- Build plan: https://tuxapi.tuxsuite.com/v1/groups/linaro/projects/lkft/builds/33YUHdDpSL...
- Build link: https://storage.tuxsuite.com/public/linaro/lkft/builds/33YUHdDpSLSMJfU4MFvRy...
- Kernel config:
https://storage.tuxsuite.com/public/linaro/lkft/builds/33YUHdDpSLSMJfU4MFvRy...
## Steps to reproduce tuxmake --runtime podman --target-arch s390 --toolchain gcc-8 --kconfig defconfig --kconfig-add CONFIG_DEBUG_INFO_BTF=n
Isn't the above exactly what is supposed to be addressed with commit 8d18ef04f940 ("s390: vmlinux.lds.S: Reorder sections")? Or did something change with the commit? Didn't check, and might look into this tomorrow, but adding Alexey and Nathan already now :)
I did not change anything with that change before applying it so I would have expected this issue to be avoided...
I can reproduce this issue with the tuxmake command above on next-20251006 but I am not able to reproduce it with korg-gcc-8, so I wonder if this is something toolchain specific? I will have a further look tomorrow but if you or Alexey beat me to it, feel free to share follow up findings.
Cheers, Nathan
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
Hi Nathan,
On Tue, Oct 07, 2025 at 08:18:49PM -0700, Nathan Chancellor wrote:
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:
...
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.
Thank you for figuring this out. Highly appreciated!