mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-04-03 12:05:13 +02:00
[ Upstream commitbb58e1579f] We're trying to mix non-PIC/PIE objects into the otherwise-PIE relocatable kernels, to avoid GOT/PLT references during early boot alternative resolution (which happens before the GOT/PLT are set up). riscv64-unknown-linux-gnu-ld: arch/riscv/errata/sifive/errata.o: relocation R_RISCV_HI20 against `tlb_flush_all_threshold' can not be used when making a shared object; recompile with -fPIC riscv64-unknown-linux-gnu-ld: arch/riscv/errata/thead/errata.o: relocation R_RISCV_HI20 against `riscv_cbom_block_size' can not be used when making a shared object; recompile with -fPIC Fixes:8dc2a7e802("riscv: Fix relocatable kernels with early alternatives using -fno-pie") Link: https://lore.kernel.org/r/20250326224506.27165-2-palmer@rivosinc.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
18 lines
538 B
Makefile
18 lines
538 B
Makefile
ifdef CONFIG_RELOCATABLE
|
|
# We can't use PIC/PIE when handling early-boot errata parsing, as the kernel
|
|
# doesn't have a GOT setup at that point. So instead just use medany: it's
|
|
# usually position-independent, so it should be good enough for the errata
|
|
# handling.
|
|
KBUILD_CFLAGS += -fno-pie -mcmodel=medany
|
|
endif
|
|
|
|
ifdef CONFIG_RISCV_ALTERNATIVE_EARLY
|
|
ifdef CONFIG_FORTIFY_SOURCE
|
|
KBUILD_CFLAGS += -D__NO_FORTIFY
|
|
endif
|
|
endif
|
|
|
|
obj-$(CONFIG_ERRATA_ANDES) += andes/
|
|
obj-$(CONFIG_ERRATA_SIFIVE) += sifive/
|
|
obj-$(CONFIG_ERRATA_THEAD) += thead/
|