From 7c5ddb6ae410a861e139ce36dec94434392bfdad Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Fri, 8 Mar 2024 14:47:59 +0100 Subject: [PATCH] elf+aarch64: handle PREL32 reloc --- src/link/Elf/Atom.zig | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/link/Elf/Atom.zig b/src/link/Elf/Atom.zig index 63590402eb..34c5602b0d 100644 --- a/src/link/Elf/Atom.zig +++ b/src/link/Elf/Atom.zig @@ -1658,6 +1658,7 @@ const aarch64 = struct { .LDST32_ABS_LO12_NC, .LDST64_ABS_LO12_NC, .LDST128_ABS_LO12_NC, + .PREL32, => {}, else => try atom.reportUnhandledRelocError(rel, elf_file), @@ -1716,6 +1717,11 @@ const aarch64 = struct { aarch64_util.writeBranchImm(disp, code); }, + .PREL32 => { + const value = math.cast(i32, S + A - P) orelse return error.Overflow; + mem.writeInt(u32, code, @bitCast(value), .little); + }, + .ADR_PREL_PG_HI21 => { // TODO: check for relaxation of ADRP+ADD const saddr = @as(u64, @intCast(P));