authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-12-15 15:48:24-05:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2024-12-15 15:48:24-05:00
logaa0377794df692ede9bc19d8e5296ab90ce6df68
tree7ff5851ce2d2b86430623735e88ca32c54f401ab
parenteb5c9317aabe0e75ceec00dc1d194e574e9296e7
parenta53a8ab25ef5138a0d72af3011c4dcc51bfa0caf
signaturebadge-check Signed by PGP key B5690EEEBB952194

Merge pull request #22233 from jacobly0/fix-relocs

Elf.Atom: fix truncated dyn abs relocs

2 files changed, 5 insertions(+), 4 deletions(-)

src/link/Dwarf.zig+2-1
......@@ -419,6 +419,7 @@ pub const Section = struct {
419419 } else {
420420 const shdr = &elf_file.sections.items(.shdr)[atom.output_section_index];
421421 shdr.sh_offset += len;
422 shdr.sh_size -= len;
422423 atom.value = 0;
423424 }
424425 atom.size -= len;
......@@ -428,7 +429,7 @@ pub const Section = struct {
428429 else
429430 &macho_file.sections.items(.header)[sec.index];
430431 header.offset += @intCast(len);
431 header.size = sec.len;
432 header.size -= len;
432433 }
433434 }
434435
src/link/Elf/Atom.zig+3-3
......@@ -726,7 +726,7 @@ fn resolveDynAbsReloc(
726726 .copyrel,
727727 .cplt,
728728 .none,
729 => try writer.writeInt(i32, @as(i32, @truncate(S + A)), .little),
729 => try writer.writeInt(i64, S + A, .little),
730730
731731 .dyn_copyrel => {
732732 if (is_writeable or elf_file.z_nocopyreloc) {
......@@ -739,7 +739,7 @@ fn resolveDynAbsReloc(
739739 });
740740 try applyDynamicReloc(A, elf_file, writer);
741741 } else {
742 try writer.writeInt(i32, @as(i32, @truncate(S + A)), .little);
742 try writer.writeInt(i64, S + A, .little);
743743 }
744744 },
745745
......@@ -754,7 +754,7 @@ fn resolveDynAbsReloc(
754754 });
755755 try applyDynamicReloc(A, elf_file, writer);
756756 } else {
757 try writer.writeInt(i32, @as(i32, @truncate(S + A)), .little);
757 try writer.writeInt(i64, S + A, .little);
758758 }
759759 },
760760