Build ID on arm64 is broken if CONFIG_MODVERSIONS=y on 5.4, 5.10, and 5.15
Greg mentioned to submit for _all_ branches here: https://lore.kernel.org/all/Y9N9B5e7HZhFN7nl@kroah.com/ so here is 6.1's series.
This 6.1 series is not strictly necessary, as the problem does not present itself in the current 6.1 stable kernels.
However, 6.1 would be broken with inclusion of either: 994b7ac1697b ("arm64: remove special treatment for the link order of head.o") 2348e6bf4421 ("riscv: remove special treatment for the link order of head.o") Should we just include these as well?
Both the above are listed as Fixes for: [PATCH 6.1 fix build id for arm64 1/5] arch: fix broken BuildID for arm64 and riscv
Applying this series to 6.1 is probably best to remain consistent.
4.19 and 4.14 are not susceptible to the underlying quirk of ld (at least in my study of the code to date).
I've build tested on {x86_64, arm64, riscv, powerpc, s390, sh}
Simple test case: $ readelf -n vmlinux | grep "Build ID"
*NOTE* to following is not in mainline, yet: [PATCH 6.1 fix build id for arm64 5/5] sh: define RUNTIME_DISCARD_EXIT https://lore.kernel.org/all/9166a8abdc0f979e50377e61780a4bba1dfa2f52.1674518... But it is now queued in akpm's tree: https://lore.kernel.org/all/20230127230702.81FA0C433D2@smtp.kernel.org/ Thank you Andrew!
Regards, --Tom
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 | 2 ++ include/asm-generic/vmlinux.lds.h | 5 +++++ 4 files changed, 14 insertions(+), 1 deletion(-)
base-commit: 93f875a8526a291005e7f38478079526c843cbec