dwarf: move another sect growing routine to d_sym

This commit is contained in:
Jakub Konka
2022-12-08 10:38:03 +01:00
parent 4bb66b63ba
commit 381abcfb7a

View File

@@ -1184,31 +1184,11 @@ pub fn commitDeclState(
},
.macho => {
const macho_file = self.bin_file.cast(File.MachO).?;
const d_sym = &macho_file.d_sym.?;
const debug_line_sect = d_sym.getSectionPtr(d_sym.debug_line_section_index.?);
if (needed_size != debug_line_sect.size) {
if (needed_size > d_sym.allocatedSize(debug_line_sect.offset)) {
const new_offset = d_sym.findFreeSpace(needed_size, 1);
const existing_size = last_src_fn.off;
std.log.scoped(.dsym).debug("moving __debug_line section: {} bytes from 0x{x} to 0x{x}", .{
existing_size,
debug_line_sect.offset,
new_offset,
});
const amt = try d_sym.file.copyRangeAll(
debug_line_sect.offset,
d_sym.file,
new_offset,
existing_size,
);
if (amt != existing_size) return error.InputOutput;
debug_line_sect.offset = @intCast(u32, new_offset);
}
debug_line_sect.size = needed_size;
d_sym.debug_line_header_dirty = true;
}
const file_pos = debug_line_sect.offset + src_fn.off;
const d_sym = self.bin_file.cast(File.MachO).?.getDebugSymbols().?;
const sect_index = d_sym.debug_line_section_index.?;
try d_sym.growSection(sect_index, needed_size);
const sect = d_sym.getSection(sect_index);
const file_pos = sect.offset + src_fn.off;
try pwriteDbgLineNops(
d_sym.file,
file_pos,