Build ID is missing for arm64 with CONFIG_MODVERSIONS=y using ld >= 2.36 on 5.4, 5.10, and 5.15 Backport Build ID fixes, which work-around ld behavior by modifying vmlinux linker script. This has been build tested this on {x86_64, arm64, riscv, powerpc, s390, sh}. Simple test case: $ readelf -n vmlinux | grep "Build ID" Changes for v3: - per Greg, re-style backport of 84d5f77fc2ee ("x86, vmlinux.lds: Add RUNTIME_DISCARD_EXIT to generic DISCARDS") - per Greg, add justification for backporting: 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv") which has "Fixes:" to v6.2 only content. - rebase to 5.4.233 Changes for v2: - rebase 6/6 c1c551bebf92 ("sh: define RUNTIME_DISCARD_EXIT") from upstream Previous threads: [1] v2 https://lore.kernel.org/all/20230210-tsaeger-upstream-linux-stable-5-4-v2-0-a56d1e0f5e98@xxxxxxxxxx/ [2] v1 https://lore.kernel.org/all/cover.1674588616.git.tom.saeger@xxxxxxxxxx/ [3] https://lore.kernel.org/all/3df32572ec7016e783d37e185f88495831671f5d.1671143628.git.tom.saeger@xxxxxxxxxx/ [4] https://lore.kernel.org/all/cover.1670358255.git.tom.saeger@xxxxxxxxxx/ Signed-off-by: Tom Saeger <tom.saeger@xxxxxxxxxx> --- 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 | 2 ++ include/asm-generic/vmlinux.lds.h | 16 ++++++++++++++-- 5 files changed, 24 insertions(+), 3 deletions(-) --- base-commit: 69f65d442efe5eb3c1ee8adec251b918c1b0090a change-id: 20230210-tsaeger-upstream-linux-stable-5-4-07f93e88c218 Best regards, -- Tom Saeger <tom.saeger@xxxxxxxxxx>