diff --git a/src/link/Dwarf.zig b/src/link/Dwarf.zig index afdc5d1d48..fc6f6cda00 100644 --- a/src/link/Dwarf.zig +++ b/src/link/Dwarf.zig @@ -419,6 +419,7 @@ pub const Section = struct { } else { const shdr = &elf_file.sections.items(.shdr)[atom.output_section_index]; shdr.sh_offset += len; + shdr.sh_size -= len; atom.value = 0; } atom.size -= len; @@ -428,7 +429,7 @@ pub const Section = struct { else &macho_file.sections.items(.header)[sec.index]; header.offset += @intCast(len); - header.size = sec.len; + header.size -= len; } } diff --git a/src/link/Elf/Atom.zig b/src/link/Elf/Atom.zig index 6775c8c7ff..d34dd6bb63 100644 --- a/src/link/Elf/Atom.zig +++ b/src/link/Elf/Atom.zig @@ -726,7 +726,7 @@ fn resolveDynAbsReloc( .copyrel, .cplt, .none, - => try writer.writeInt(i32, @as(i32, @truncate(S + A)), .little), + => try writer.writeInt(i64, S + A, .little), .dyn_copyrel => { if (is_writeable or elf_file.z_nocopyreloc) { @@ -739,7 +739,7 @@ fn resolveDynAbsReloc( }); try applyDynamicReloc(A, elf_file, writer); } else { - try writer.writeInt(i32, @as(i32, @truncate(S + A)), .little); + try writer.writeInt(i64, S + A, .little); } }, @@ -754,7 +754,7 @@ fn resolveDynAbsReloc( }); try applyDynamicReloc(A, elf_file, writer); } else { - try writer.writeInt(i32, @as(i32, @truncate(S + A)), .little); + try writer.writeInt(i64, S + A, .little); } },