Commit 4ab3f9dd authored by Pierre-Clément Tosi's avatar Pierre-Clément Tosi Committed by Oliver Upton

KVM: arm64: nVHE: gen-hyprel: Skip R_AARCH64_ABS32

Ignore R_AARCH64_ABS32 relocations, instead of panicking, when emitting
the relocation table of the hypervisor. The toolchain might produce them
when generating function calls with kCFI to represent the 32-bit type ID
which can then be resolved across compilation units at link time.  These
are NOT actual 32-bit addresses and are therefore not needed in the
final (runtime) relocation table (which is unlikely to use 32-bit
absolute addresses for arm64 anyway).
Signed-off-by: default avatarPierre-Clément Tosi <ptosi@google.com>
Acked-by: default avatarWill Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20240610063244.2828978-5-ptosi@google.comSigned-off-by: default avatarOliver Upton <oliver.upton@linux.dev>
parent 6e3b773e
...@@ -50,6 +50,9 @@ ...@@ -50,6 +50,9 @@
#ifndef R_AARCH64_ABS64 #ifndef R_AARCH64_ABS64
#define R_AARCH64_ABS64 257 #define R_AARCH64_ABS64 257
#endif #endif
#ifndef R_AARCH64_ABS32
#define R_AARCH64_ABS32 258
#endif
#ifndef R_AARCH64_PREL64 #ifndef R_AARCH64_PREL64
#define R_AARCH64_PREL64 260 #define R_AARCH64_PREL64 260
#endif #endif
...@@ -383,6 +386,9 @@ static void emit_rela_section(Elf64_Shdr *sh_rela) ...@@ -383,6 +386,9 @@ static void emit_rela_section(Elf64_Shdr *sh_rela)
case R_AARCH64_ABS64: case R_AARCH64_ABS64:
emit_rela_abs64(rela, sh_orig_name); emit_rela_abs64(rela, sh_orig_name);
break; break;
/* Allow 32-bit absolute relocation, for kCFI type hashes. */
case R_AARCH64_ABS32:
break;
/* Allow position-relative data relocations. */ /* Allow position-relative data relocations. */
case R_AARCH64_PREL64: case R_AARCH64_PREL64:
case R_AARCH64_PREL32: case R_AARCH64_PREL32:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment