| ... | @@ -1666,6 +1666,7 @@ const aarch64 = struct { | ... | @@ -1666,6 +1666,7 @@ const aarch64 = struct { |
| 1666 | .LDST64_ABS_LO12_NC, | 1666 | .LDST64_ABS_LO12_NC, |
| 1667 | .LDST128_ABS_LO12_NC, | 1667 | .LDST128_ABS_LO12_NC, |
| 1668 | .PREL32, | 1668 | .PREL32, |
| | 1669 | .PREL64, |
| 1669 | => {}, | 1670 | => {}, |
| 1670 | | 1671 | |
| 1671 | else => try atom.reportUnhandledRelocError(rel, elf_file), | 1672 | else => try atom.reportUnhandledRelocError(rel, elf_file), |
| ... | @@ -1727,6 +1728,11 @@ const aarch64 = struct { | ... | @@ -1727,6 +1728,11 @@ const aarch64 = struct { |
| 1727 | mem.writeInt(u32, code, @bitCast(value), .little); | 1728 | mem.writeInt(u32, code, @bitCast(value), .little); |
| 1728 | }, | 1729 | }, |
| 1729 | | 1730 | |
| | 1731 | .PREL64 => { |
| | 1732 | const value = S + A - P; |
| | 1733 | mem.writeInt(u64, code_buffer[r_offset..][0..8], @bitCast(value), .little); |
| | 1734 | }, |
| | 1735 | |
| 1730 | .ADR_PREL_PG_HI21 => { | 1736 | .ADR_PREL_PG_HI21 => { |
| 1731 | // TODO: check for relaxation of ADRP+ADD | 1737 | // TODO: check for relaxation of ADRP+ADD |
| 1732 | const saddr = @as(u64, @intCast(P)); | 1738 | const saddr = @as(u64, @intCast(P)); |