authorgravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2026-08-13 21:10:43+01:00
committergravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2026-08-16 10:37:19+01:00
log594a6d5665fba5696903043bbcb76a8ce8d28d0b
tree70232be98d9aabdecfbe1c42e111de97e6205201
parent52dd990f80500e685cc37edd8de271036e24e0f8
signaturelock-open Commit is signed but in an unrecognized format.

Elf2: fix endianness bug in GOT


1 files changed, 2 insertions(+), 2 deletions(-)

src/link/Elf2.zig+2-2
...@@ -7045,7 +7045,7 @@ fn updateGotEntry(elf: *Elf, got_index: usize) void {...@@ -7045,7 +7045,7 @@ fn updateGotEntry(elf: *Elf, got_index: usize) void {
7045 const entry_ptr: *class.ElfN().Addr = @ptrCast(@alignCast(7045 const entry_ptr: *class.ElfN().Addr = @ptrCast(@alignCast(
7046 elf.shndx.got.get(elf).ni.slice(&elf.mf)[offset..][0..addr_size],7046 elf.shndx.got.get(elf).ni.slice(&elf.mf)[offset..][0..addr_size],
7047 ));7047 ));
7048 entry_ptr.* = switch (entry_value) {7048 elf.targetStore(entry_ptr, switch (entry_value) {
7049 .unsigned => |x| @intCast(x),7049 .unsigned => |x| @intCast(x),
7050 .signed => |x| switch (class) {7050 .signed => |x| switch (class) {
7051 .NONE, _ => comptime unreachable,7051 .NONE, _ => comptime unreachable,
...@@ -7053,7 +7053,7 @@ fn updateGotEntry(elf: *Elf, got_index: usize) void {...@@ -7053,7 +7053,7 @@ fn updateGotEntry(elf: *Elf, got_index: usize) void {
7053 .@"64" => @bitCast(x),7053 .@"64" => @bitCast(x),
7054 },7054 },
7055 .reloc => 0,7055 .reloc => 0,
7056 };7056 });
7057 break :got_entry_addr elf.targetLoad(&got_shdr.addr) + offset;7057 break :got_entry_addr elf.targetLoad(&got_shdr.addr) + offset;
7058 },7058 },
7059 };7059 };