[PATCH 5.4 fix build id for arm64 with CONFIG_MODVERSIONS 0/6]
Subsystems (2)
cover [PATCH 5.4 fix build id for arm64 with CONFIG_MODVERSIONS 0/6]
Build ID on arm64 is broken if CONFIG_MODVERSIONS=y on 5.4, 5.10, and 5.15
Discussed:
https://lore.kernel.org/all/3df32572ec7016e783d37e185f88495831671f5d.1671143628.git.tom.saeger@oracle.com/
https://lore.kernel.org/all/[email protected]/
Which is fixed for arm64 with backporting:
[2/6] ("arch: fix broken BuildID for arm64 and riscv")
Which had fixes:
[3/6] powerpc/vmlinux.lds: Define RUNTIME_DISCARD_EXIT
[4/6] powerpc/vmlinux.lds: Don't discard .rela* for relocatable builds [5/6] s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU ld < 2.36
But broke arch/sh (or so it was thought).arch/sh is also broken in mainline.
[6/6] sh: define RUNTIME_DISCARD_EXIT
*NOTE* is not in mainline, but was sent here:
https://lore.kernel.org/all/9166a8abdc0f979e50377e61780a4bba1dfa2f52.1674518464.git.tom.saeger@oracle.com/
There was enough breakage in 5.4.230-rc1 that the previous series was dropped (which didn't have 1/6 or 6/6).
https://lore.kernel.org/stable/CA+G9fYuYi1Rvv19R_EVdht_7LV9qiR-6KVvZUGjct3kEk0uQTA@mail.gmail.com/
[1/6] 84d5f77fc2ee ("x86, vmlinux.lds: Add RUNTIME_DISCARD_EXIT to generic DISCARDS") First defined RUNTIME_DISCARD_EXIT generically and its use for x86_64 specifically.
$ git describe --contains 84d5f77fc2ee4e0 v5.7-rc1~164^2~1
Which explains why the previous series broke 5.4.
I've build tested on a fairly wide matrix so far, but would appreciate more testing.
with and without CONFIG_MODVERSIONS=y
# view Build ID $ readelf -n vmlinux | grep "Build ID"
5.10 and 5.15 will have a similar series [2-6], as both already have [1/6].
If arch/sh is a must have, then [6/6] needs to find its way into mainline.
Regards,
--Tom
H.J. Lu (1):
x86, vmlinux.lds: Add RUNTIME_DISCARD_EXIT to generic DISCARDS
Masahiro Yamada (2):
arch: fix broken BuildID for arm64 and riscv
s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU ld < 2.36
Michael Ellerman (2):
powerpc/vmlinux.lds: Define RUNTIME_DISCARD_EXIT powerpc/vmlinux.lds: Don't discard .rela* for relocatable builds
Tom Saeger (1):
sh: define RUNTIME_DISCARD_EXIT
arch/powerpc/kernel/vmlinux.lds.S | 6 +++++- arch/s390/kernel/vmlinux.lds.S | 2 ++ arch/sh/kernel/vmlinux.lds.S | 1 + arch/x86/kernel/vmlinux.lds.S | 1 + include/asm-generic/vmlinux.lds.h | 16 ++++++++++++++-- 5 files changed, 23 insertions(+), 3 deletions(-)
base-commit: 90245959a5b936ee013266e5d1e6a508ed69274e
Signature · 1 line
2.39.1
PATCH 1/6 x86, vmlinux.lds: Add RUNTIME_DISCARD_EXIT to generic DISCARDS
From: "H.J. Lu" <[email protected]>
commit 84d5f77fc2ee4e010c2c037750e32f06e55224b0 upstream.
In the x86 kernel, .exit.text and .exit.data sections are discarded at runtime, not by the linker. Add RUNTIME_DISCARD_EXIT to generic DISCARDS and define it in the x86 kernel linker script to keep them.
The sections are added before the DISCARD directive so document here only the situation explicitly as this change doesn't have any effect on the generated kernel. Also, other architectures like ARM64 will use it too so generalize the approach with the RUNTIME_DISCARD_EXIT define.
[ bp: Massage and extend commit message. ]
--- arch/x86/kernel/vmlinux.lds.S | 1 + include/asm-generic/vmlinux.lds.h | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-)
arch/x86/kernel/vmlinux.lds.S +1 -0
@@ -21,6 +21,7 @@ #define LOAD_OFFSET __START_KERNEL_map #endif +#define RUNTIME_DISCARD_EXIT #include <asm-generic/vmlinux.lds.h> #include <asm/asm-offsets.h> #include <asm/thread_info.h>
include/asm-generic/vmlinux.lds.h +9 -2
@@ -900,10 +900,17 @@* section definitions so that such archs put those in earlier section * definitions. */ +#ifdef RUNTIME_DISCARD_EXIT +#define EXIT_DISCARDS +#else +#define EXIT_DISCARDS \ + EXIT_TEXT \ + EXIT_DATA +#endif +#define DISCARDS \ /DISCARD/ : { \ - EXIT_TEXT \ - EXIT_DATA \ + EXIT_DISCARDS \ EXIT_CALL \ *(.discard) \ *(.discard.*) \
Signature · 1 line
2.39.1
PATCH 2/6 arch: fix broken BuildID for arm64 and riscv
In reply to Tom SaegerFrom: Masahiro Yamada <[email protected]>
commit 99cb0d917ffa1ab628bb67364ca9b162c07699b1 upstream.
Dennis Gilmore reports that the BuildID is missing in the arm64 vmlinux since commit 994b7ac1697b ("arm64: remove special treatment for the link order of head.o").
The issue is that the type of .notes section, which contains the BuildID, changed from NOTES to PROGBITS.
Ard Biesheuvel figured out that whichever object gets linked first gets to decide the type of a section. The PROGBITS type is the result of the compiler emitting .note.GNU-stack as PROGBITS rather than NOTE.
While Ard provided a fix for arm64, I want to fix this globally because the same issue is happening on riscv since commit 2348e6bf4421 ("riscv:
remove special treatment for the link order of head.o"). This problem will happen in general for other architectures if they start to drop unneeded entries from scripts/head-object-list.txt.
Discard .note.GNU-stack in include/asm-generic/vmlinux.lds.h.
--- include/asm-generic/vmlinux.lds.h | 5 +++++ 1 file changed, 5 insertions(+)
include/asm-generic/vmlinux.lds.h +5 -0
@@ -825,7 +825,12 @@#define TRACEDATA #endif +/* +* Discard .note.GNU-stack, which is emitted as PROGBITS by the compiler. +* Otherwise, the type of .notes section would become PROGBITS instead of NOTES. +*/ #define NOTES \ + /DISCARD/ : { *(.note.GNU-stack) } \ .notes : AT(ADDR(.notes) - LOAD_OFFSET) { \ __start_notes = .; \ KEEP(*(.note.*)) \
Signature · 1 line
2.39.1
PATCH 3/6 powerpc/vmlinux.lds: Define RUNTIME_DISCARD_EXIT
In reply to Tom SaegerFrom: Michael Ellerman <[email protected]>
commit 4b9880dbf3bdba3a7c56445137c3d0e30aaa0a40 upstream.
The powerpc linker script explicitly includes .exit.text, because otherwise the link fails due to references from __bug_table and __ex_table. The code is freed (discarded) at runtime along with .init.text and data.
That has worked in the past despite powerpc not defining RUNTIME_DISCARD_EXIT because DISCARDS appears late in the powerpc linker script (line 410), and the explicit inclusion of .exit.text earlier (line 280) supersedes the discard.
However commit 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv") introduced an earlier use of DISCARD as part of the RO_DATA macro (line 136). With binutils < 2.36 that causes the DISCARD directives later in the script to be applied earlier [1], causing .exit.text to actually be discarded at link time, leading to build errors:
'.exit.text' referenced in section '__bug_table' of crypto/algboss.o: defined in discarded section '.exit.text' of crypto/algboss.o
'.exit.text' referenced in section '__ex_table' of drivers/nvdimm/core.o: defined in discarded section '.exit.text' of drivers/nvdimm/core.o
Fix it by defining RUNTIME_DISCARD_EXIT, which causes the generic DISCARDS macro to not include .exit.text at all.
1: https://lore.kernel.org/lkml/[email protected]/
--- arch/powerpc/kernel/vmlinux.lds.S | 1 + 1 file changed, 1 insertion(+)
arch/powerpc/kernel/vmlinux.lds.S +1 -0
@@ -6,6 +6,7 @@ #endif #define BSS_FIRST_SECTIONS *(.bss.prominit) +#define RUNTIME_DISCARD_EXIT #include <asm/page.h> #include <asm-generic/vmlinux.lds.h>
Signature · 1 line
2.39.1
PATCH 4/6 powerpc/vmlinux.lds: Don't discard .rela* for relocatable builds
In reply to Tom SaegerFrom: Michael Ellerman <[email protected]>
commit 07b050f9290ee012a407a0f64151db902a1520f5 upstream.
Relocatable kernels must not discard relocations, they need to be processed at runtime. As such they are included for CONFIG_RELOCATABLE builds in the powerpc linker script (line 340).
However they are also unconditionally discarded later in the script (line 414). Previously that worked because the earlier inclusion superseded the discard.
However commit 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv") introduced an earlier use of DISCARD as part of the RO_DATA macro (line 137). With binutils < 2.36 that causes the DISCARD directives later in the script to be applied earlier, causing .rela* to actually be discarded at link time, leading to build warnings and a kernel that doesn't boot:
ld: warning: discarding dynamic section .rela.init.rodata
Fix it by conditionally discarding .rela* only when CONFIG_RELOCATABLE is disabled.
--- arch/powerpc/kernel/vmlinux.lds.S | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
arch/powerpc/kernel/vmlinux.lds.S +4 -1
@@ -395,9 +395,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 } }
Signature · 1 line
2.39.1
PATCH 5/6 s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU ld < 2.36
In reply to Tom SaegerFrom: Masahiro Yamada <[email protected]>
commit a494398bde273143c2352dd373cad8211f7d94b2 upstream.
Nathan Chancellor reports that the s390 vmlinux fails to link with GNU ld < 2.36 since commit 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv").
It happens for defconfig, or more specifically for CONFIG_EXPOLINE=y.
$ s390x-linux-gnu-ld --version | head -n1 GNU ld (GNU Binutils for Debian) 2.35.2 $ make -s ARCH=s390 CROSS_COMPILE=s390x-linux-gnu- allnoconfig $ ./scripts/config -e CONFIG_EXPOLINE $ make -s ARCH=s390 CROSS_COMPILE=s390x-linux-gnu- olddefconfig $ make -s ARCH=s390 CROSS_COMPILE=s390x-linux-gnu- `.exit.text' referenced in section `.s390_return_reg' of drivers/base/dd.o: defined in discarded section `.exit.text' of drivers/base/dd.o make[1]: *** [scripts/Makefile.vmlinux:34: vmlinux] Error 1 make: *** [Makefile:1252: vmlinux] Error 2
arch/s390/kernel/vmlinux.lds.S wants to keep EXIT_TEXT:
.exit.text : {
EXIT_TEXT
}But, at the same time, EXIT_TEXT is thrown away by DISCARD because s390 does not define RUNTIME_DISCARD_EXIT.
I still do not understand why the latter wins after 99cb0d917ffa, but defining RUNTIME_DISCARD_EXIT seems correct because the comment line in arch/s390/kernel/vmlinux.lds.S says:
/*
* .exit.text is discarded at runtime, not link time,
* to deal with references from __bug_table */
Nathan also found that binutils commit 21401fc7bf67 ("Duplicate output sections in scripts") cured this issue, so we cannot reproduce it with binutils 2.36+, but it is better to not rely on it.
--- arch/s390/kernel/vmlinux.lds.S | 2 ++ 1 file changed, 2 insertions(+)
arch/s390/kernel/vmlinux.lds.S +2 -0
@@ -15,6 +15,8 @@ /* Handle ro_after_init data on our own. */ #define RO_AFTER_INIT_DATA +#define RUNTIME_DISCARD_EXIT + #include <asm-generic/vmlinux.lds.h> #include <asm/vmlinux.lds.h>
Signature · 1 line
2.39.1
PATCH 6/6 sh: define RUNTIME_DISCARD_EXIT
In reply to Tom Saegersh vmlinux fails to link with GNU ld < 2.40 (likely < 2.36) since commit 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv").
This is similar to fixes for powerpc and s390:
commit 4b9880dbf3bd ("powerpc/vmlinux.lds: Define RUNTIME_DISCARD_EXIT"). commit a494398bde27 ("s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU ld < 2.36").
$ sh4-linux-gnu-ld --version | head -n1 GNU ld (GNU Binutils for Debian) 2.35.2
$ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu- microdev_defconfig $ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu-
.exit.text' referenced in section __bug_table' of crypto/algboss.o:
defined in discarded section .exit.text' of crypto/algboss.o .exit.text' referenced in section __bug_table' of drivers/char/hw_random/core.o: defined in discarded section .exit.text' of drivers/char/hw_random/core.o
make[2]: *** [scripts/Makefile.vmlinux:34: vmlinux] Error 1 make[1]: *** [Makefile:1252: vmlinux] Error 2
arch/sh/kernel/vmlinux.lds.S keeps EXIT_TEXT:
/*
* .exit.text is discarded at runtime, not link time, to deal with
* references from __bug_table
*/
.exit.text : AT(ADDR(.exit.text)) { EXIT_TEXT }However, EXIT_TEXT is thrown away by DISCARD(include/asm-generic/vmlinux.lds.h) because sh does not define RUNTIME_DISCARD_EXIT.
GNU ld 2.40 does not have this issue and builds fine.
This corresponds with Masahiro's comments in a494398bde27:
"Nathan [Chancellor] also found that binutils
commit 21401fc7bf67 ("Duplicate output sections in scripts") cured this issue, so we cannot reproduce it with binutils 2.36+, but it is better to not rely on it."
--- arch/sh/kernel/vmlinux.lds.S | 1 + 1 file changed, 1 insertion(+)
arch/sh/kernel/vmlinux.lds.S +1 -0
@@ -10,6 +10,7 @@ OUTPUT_ARCH(sh:sh5) #define LOAD_OFFSET 0 OUTPUT_ARCH(sh) #endif +#define RUNTIME_DISCARD_EXIT #include <asm/thread_info.h> #include <asm/cache.h>
Signature · 1 line
2.39.1
kernel test robot
build botRe: [PATCH 5.4 fix build id for arm64 6/6] sh: define RUNTIME_DISCARD_EXIT
FYI: kernel test robot notices the stable kernel rule is not satisfied.
Hi,
Thanks for your patch.
FYI: kernel test robot notices the stable kernel rule is not satisfied.
Rule: 'Cc: [email protected]' or 'commit <sha1> upstream.'
Subject: [PATCH 5.4 fix build id for arm64 6/6] sh: define RUNTIME_DISCARD_EXIT
The check is based on https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
Signature · 2 lines
0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests
Greg Kroah-Hartman
maintainerRe: [PATCH 5.4 fix build id for arm64 6/6] sh: define RUNTIME_DISCARD_EXIT
In reply to Tom SaegerQuoted 41 lines · Tom Saeger
sh vmlinux fails to link with GNU ld < 2.40 (likely < 2.36) since commit
99cb0d917ffa("arch: fix broken BuildID for arm64 and riscv").This is similar to fixes for powerpc and s390:
commit4b9880dbf3bd("powerpc/vmlinux.lds: DefineRUNTIME_DISCARD_EXIT"). commita494398bde27("s390: defineRUNTIME_DISCARD_EXITto fix link error with GNU ld < 2.36").$ sh4-linux-gnu-ld --version | head -n1 GNU ld (GNU Binutils for Debian) 2.35.2$ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu- microdev_defconfig $ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu-
.exit.text' referenced in section__bug_table' ofcrypto/algboss.o:
defined in discarded section.exit.text' of crypto/algboss.o.exit.text' referenced in section__bug_table' of drivers/char/hw_random/core.o: defined in discarded section.exit.text' ofdrivers/char/hw_random/core.o
make[2]: *** [scripts/Makefile.vmlinux:34: vmlinux] Error 1 make[1]: *** [Makefile:1252: vmlinux] Error 2
arch/sh/kernel/vmlinux.lds.SkeepsEXIT_TEXT:/* * .exit.text is discarded at runtime, not link time, to deal with * references from __bug_table */ .exit.text : AT(ADDR(.exit.text)) { EXIT_TEXT }However,
EXIT_TEXTis thrown away by DISCARD(include/asm-generic/vmlinux.lds.h) because sh does not defineRUNTIME_DISCARD_EXIT.GNU ld 2.40 does not have this issue and builds fine.
This corresponds with Masahiro's comments ina494398bde27:
"Nathan [Chancellor] also found that binutils
commit21401fc7bf67("Duplicate output sections in scripts") cured this issue, so we cannot reproduce it with binutils 2.36+, but it is better to not rely on it."
Quoted 7 lines
Fixes 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv")Signed-off-by Tom Saeger <[email protected]>--- arch/sh/kernel/vmlinux.lds.S | 1 + 1 file changed, 1 insertion(+)
No upstream git id?
:(
Re: [PATCH 5.4 fix build id for arm64 6/6] sh: define RUNTIME_DISCARD_EXIT
Quoted 50 lines · Greg Kroah-Hartman
Quoted 41 lines · Tom Saeger
sh vmlinux fails to link with GNU ld < 2.40 (likely < 2.36) since commit
99cb0d917ffa("arch: fix broken BuildID for arm64 and riscv").This is similar to fixes for powerpc and s390:
commit4b9880dbf3bd("powerpc/vmlinux.lds: DefineRUNTIME_DISCARD_EXIT"). commita494398bde27("s390: defineRUNTIME_DISCARD_EXITto fix link error with GNU ld < 2.36").$ sh4-linux-gnu-ld --version | head -n1 GNU ld (GNU Binutils for Debian) 2.35.2$ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu- microdev_defconfig $ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu-
.exit.text' referenced in section__bug_table' ofcrypto/algboss.o:
defined in discarded section.exit.text' of crypto/algboss.o.exit.text' referenced in section__bug_table' of drivers/char/hw_random/core.o: defined in discarded section.exit.text' ofdrivers/char/hw_random/core.o
make[2]: *** [scripts/Makefile.vmlinux:34: vmlinux] Error 1 make[1]: *** [Makefile:1252: vmlinux] Error 2
arch/sh/kernel/vmlinux.lds.SkeepsEXIT_TEXT:/* * .exit.text is discarded at runtime, not link time, to deal with * references from __bug_table */ .exit.text : AT(ADDR(.exit.text)) { EXIT_TEXT }However,
EXIT_TEXTis thrown away by DISCARD(include/asm-generic/vmlinux.lds.h) because sh does not defineRUNTIME_DISCARD_EXIT.GNU ld 2.40 does not have this issue and builds fine.
This corresponds with Masahiro's comments ina494398bde27:
"Nathan [Chancellor] also found that binutils
commit21401fc7bf67("Duplicate output sections in scripts") cured this issue, so we cannot reproduce it with binutils 2.36+, but it is better to not rely on it."Quoted 7 lines
Fixes 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv")Signed-off-by Tom Saeger <[email protected]>--- arch/sh/kernel/vmlinux.lds.S | 1 + 1 file changed, 1 insertion(+)
Quoted 3 lines
No upstream git id?
:(
No, not yet. I'll try resending.
--Tom
John Paul Adrian Glaubitz
maintainerRe: [PATCH 5.4 fix build id for arm64 6/6] sh: define RUNTIME_DISCARD_EXIT
Hi Tom!
Quoted 51 lines · Tom Saeger
Quoted 50 lines · Greg Kroah-Hartman
Quoted 48 lines · Tom Saeger
sh vmlinux fails to link with GNU ld < 2.40 (likely < 2.36) since commit
99cb0d917ffa("arch: fix broken BuildID for arm64 and riscv").This is similar to fixes for powerpc and s390:
commit4b9880dbf3bd("powerpc/vmlinux.lds: DefineRUNTIME_DISCARD_EXIT"). commita494398bde27("s390: defineRUNTIME_DISCARD_EXITto fix link error with GNU ld < 2.36").$ sh4-linux-gnu-ld --version | head -n1 GNU ld (GNU Binutils for Debian) 2.35.2$ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu- microdev_defconfig $ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu-
.exit.text' referenced in section__bug_table' ofcrypto/algboss.o:
defined in discarded section.exit.text' of crypto/algboss.o.exit.text' referenced in section__bug_table' of drivers/char/hw_random/core.o: defined in discarded section.exit.text' ofdrivers/char/hw_random/core.o
make[2]: *** [scripts/Makefile.vmlinux:34: vmlinux] Error 1 make[1]: *** [Makefile:1252: vmlinux] Error 2
arch/sh/kernel/vmlinux.lds.SkeepsEXIT_TEXT:/* * .exit.text is discarded at runtime, not link time, to deal with * references from __bug_table */ .exit.text : AT(ADDR(.exit.text)) { EXIT_TEXT }However,
EXIT_TEXTis thrown away by DISCARD(include/asm-generic/vmlinux.lds.h) because sh does not defineRUNTIME_DISCARD_EXIT.GNU ld 2.40 does not have this issue and builds fine.
This corresponds with Masahiro's comments ina494398bde27:
"Nathan [Chancellor] also found that binutils
commit21401fc7bf67("Duplicate output sections in scripts") cured this issue, so we cannot reproduce it with binutils 2.36+, but it is better to not rely on it."Fixes 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv")Signed-off-by Tom Saeger <[email protected]>--- arch/sh/kernel/vmlinux.lds.S | 1 + 1 file changed, 1 insertion(+)
Quoted 5 lines
Quoted 3 lines
No upstream git id?
:(
No, not yet. I'll try resending.
Can you push this via Andrew's tree until we have sorted out the new SH tree?
We're currently having issues with our git instance and we're also not yet official.
Apologies for the delay!
Adrian
Signature · 4 lines
.''`. John Paul Adrian Glaubitz : :' : Debian Developer `. `' Physicist `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
Greg Kroah-Hartman
maintainerRe: [PATCH 5.4 fix build id for arm64 6/6] sh: define RUNTIME_DISCARD_EXIT
In reply to Tom SaegerQuoted 51 lines · Tom Saeger
Quoted 50 lines · Greg Kroah-Hartman
Quoted 48 lines · Tom Saeger
sh vmlinux fails to link with GNU ld < 2.40 (likely < 2.36) since commit
99cb0d917ffa("arch: fix broken BuildID for arm64 and riscv").This is similar to fixes for powerpc and s390:
commit4b9880dbf3bd("powerpc/vmlinux.lds: DefineRUNTIME_DISCARD_EXIT"). commita494398bde27("s390: defineRUNTIME_DISCARD_EXITto fix link error with GNU ld < 2.36").$ sh4-linux-gnu-ld --version | head -n1 GNU ld (GNU Binutils for Debian) 2.35.2$ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu- microdev_defconfig $ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu-
.exit.text' referenced in section__bug_table' ofcrypto/algboss.o:
defined in discarded section.exit.text' of crypto/algboss.o.exit.text' referenced in section__bug_table' of drivers/char/hw_random/core.o: defined in discarded section.exit.text' ofdrivers/char/hw_random/core.o
make[2]: *** [scripts/Makefile.vmlinux:34: vmlinux] Error 1 make[1]: *** [Makefile:1252: vmlinux] Error 2
arch/sh/kernel/vmlinux.lds.SkeepsEXIT_TEXT:/* * .exit.text is discarded at runtime, not link time, to deal with * references from __bug_table */ .exit.text : AT(ADDR(.exit.text)) { EXIT_TEXT }However,
EXIT_TEXTis thrown away by DISCARD(include/asm-generic/vmlinux.lds.h) because sh does not defineRUNTIME_DISCARD_EXIT.GNU ld 2.40 does not have this issue and builds fine.
This corresponds with Masahiro's comments ina494398bde27:
"Nathan [Chancellor] also found that binutils
commit21401fc7bf67("Duplicate output sections in scripts") cured this issue, so we cannot reproduce it with binutils 2.36+, but it is better to not rely on it."Fixes 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv")Signed-off-by Tom Saeger <[email protected]>--- arch/sh/kernel/vmlinux.lds.S | 1 + 1 file changed, 1 insertion(+)
Quoted 5 lines
Quoted 3 lines
No upstream git id?
:(
No, not yet. I'll try resending.
<formletter>
This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read:
https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
for how to do this properly.
</formletter>
Quoted 6 lines · Tom Saeger
Build ID on arm64 is broken if
CONFIG_MODVERSIONS=yon 5.4, 5.10, and 5.15Discussed:
https://lore.kernel.org/all/3df32572ec7016e783d37e185f88495831671f5d.1671143628.git.tom.saeger@oracle.com/
https://lore.kernel.org/all/[email protected]/
Queued up, hopefully it makes it this time :) Thanks!
Signature · 2 lines
Thanks, Sasha
Greg Kroah-Hartman
maintainerQuoted 9 lines · Sasha Levin
Quoted 6 lines · Tom Saeger
Build ID on arm64 is broken if
CONFIG_MODVERSIONS=yon 5.4, 5.10, and 5.15Discussed:
https://lore.kernel.org/all/3df32572ec7016e783d37e185f88495831671f5d.1671143628.git.tom.saeger@oracle.com/
https://lore.kernel.org/all/[email protected]/Queued up, hopefully it makes it this time :) Thanks!
Dropped from the 5.4 queue as it is not in any newer kernel tree yet, sorry. We can't have a fix that is in only 5.4 but not in a newer release, that would mean it would be a regression if someone moves to a newer release.
Tom, please submit patches for _all_ branches, and we will be glad to consider them, not just for one old one.
thanks,
greg k-h
Quoted 16 lines · Greg Kroah-Hartman
Quoted 9 lines · Sasha Levin
Quoted 6 lines · Tom Saeger
Build ID on arm64 is broken if
CONFIG_MODVERSIONS=yon 5.4, 5.10, and 5.15Discussed:
https://lore.kernel.org/all/3df32572ec7016e783d37e185f88495831671f5d.1671143628.git.tom.saeger@oracle.com/
https://lore.kernel.org/all/[email protected]/Queued up, hopefully it makes it this time :) Thanks!
Dropped from the 5.4 queue as it is not in any newer kernel tree yet, sorry. We can't have a fix that is in only 5.4 but not in a newer release, that would mean it would be a regression if someone moves to a newer release.
Quoted 6 lines
Tom, please submit patches for _all_ branches, and we will be glad to consider them, not just for one old one.
thanks,
greg k-h
I was sort of hoping 6/6 would have landed upstream before sending v5.10 and v5.15.
I'll send those now.
--Tom