Since a8b788ba61eb ("relocate_to_current_adr: hang directly on error instead of panic()"), GCC can prove that variables aren't supposed to overlap and as such it generated code than readded get_runtime_offset() on top of an already relocated linker-defined variable's address. See PATCH 2/3 for a disassembly of the affected code. Board code can be similarly micompiled, but that's a fix for another day. Ahmad Fatoum (3): include: asm-generic: reloc: implement runtime_address() ARM: cpu: add compiler barrier around unrelocated access RISC-V: add compiler barriers around unrelocated accesses arch/arm/cpu/common.c | 15 ++++--- arch/arm/cpu/uncompress.c | 4 +- arch/riscv/boot/uncompress.c | 4 +- arch/riscv/include/asm/sections.h | 3 +- arch/riscv/lib/reloc.c | 10 +++-- include/asm-generic/reloc.h | 69 +++++++++++++++++++++++++++++++ 6 files changed, 91 insertions(+), 14 deletions(-) -- 2.30.2