[PATCH 5.4 fix build id for arm64 with CONFIG_MODVERSIONS 0/6]

From: Tom Saeger
Date: Tue Jan 24 2023 - 16:15:13 EST


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@xxxxxxxxxx/
https://lore.kernel.org/all/cover.1670358255.git.tom.saeger@xxxxxxxxxx/

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@xxxxxxxxxx/

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@xxxxxxxxxxxxxx/

[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
--
2.39.1