riscv: Restrict DWARF5 when building with LLVM to known working versions
authorNathan Chancellor <nathan@kernel.org>
Tue, 5 Dec 2023 23:53:51 +0000 (16:53 -0700)
committerPalmer Dabbelt <palmer@rivosinc.com>
Thu, 18 Jan 2024 02:08:27 +0000 (18:08 -0800)
commitae84ff9a14a5a8d36a329a30626800155782e617
tree16b1769cb8952a7095455b596c7944d6ebeaffac
parent55b71d2ce133da893ffb1ecd69a34e1fee509292
riscv: Restrict DWARF5 when building with LLVM to known working versions

LLVM prior to 18.0.0 would generate incorrect debug info for DWARF5 due
to linker relaxation, which was worked around in clang by defaulting
RISC-V to DWARF4 [1]. Unfortunately, this workaround does not work for
the kernel because the DWARF version can be independently changed from
the default in Kconfig.

Do not allow DWARF5 to be selected for RISC-V when using linker
relaxation (ld.lld >= 15.0.0) and a version of LLVM that does not have
the fixes (the integrated assembler [2] and ld.lld [3] < 18.0.0)
necessary to generate the correct debug info.

Link: https://github.com/llvm/llvm-project/commit/bbc0f99f3bc96f1db16f649fc21dd18e5b0918f6
Link: https://github.com/llvm/llvm-project/commit/1df5ea29b43690b6622db2cad7b745607ca4de6a
Link: https://github.com/llvm/llvm-project/commit/7ffabb61a5569444b5ac9322e22e5471cc5e4a77
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Fangrui Song <maskray@google.com>
Link: https://lore.kernel.org/r/20231205-riscv-restrict-dwarf5-llvm-v2-2-aedf00a382ac@kernel.org
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/Kconfig
lib/Kconfig.debug