| ... | @@ -2170,7 +2170,7 @@ pub fn writeDbgAranges(self: *Dwarf, addr: u64, size: u64) !void { | ... | @@ -2170,7 +2170,7 @@ pub fn writeDbgAranges(self: *Dwarf, addr: u64, size: u64) !void { |
| 2170 | }, | 2170 | }, |
| 2171 | } | 2171 | } |
| 2172 | | 2172 | |
| 2173 | const needed_size = di_buf.items.len; | 2173 | const needed_size = @intCast(u32, di_buf.items.len); |
| 2174 | switch (self.bin_file.tag) { | 2174 | switch (self.bin_file.tag) { |
| 2175 | .elf => { | 2175 | .elf => { |
| 2176 | const elf_file = self.bin_file.cast(File.Elf).?; | 2176 | const elf_file = self.bin_file.cast(File.Elf).?; |
| ... | @@ -2190,21 +2190,10 @@ pub fn writeDbgAranges(self: *Dwarf, addr: u64, size: u64) !void { | ... | @@ -2190,21 +2190,10 @@ pub fn writeDbgAranges(self: *Dwarf, addr: u64, size: u64) !void { |
| 2190 | }, | 2190 | }, |
| 2191 | .macho => { | 2191 | .macho => { |
| 2192 | const d_sym = self.bin_file.cast(File.MachO).?.getDebugSymbols().?; | 2192 | const d_sym = self.bin_file.cast(File.MachO).?.getDebugSymbols().?; |
| 2193 | const dwarf_seg = d_sym.segments.items[d_sym.dwarf_segment_cmd_index.?]; | 2193 | const sect_index = d_sym.debug_aranges_section_index.?; |
| 2194 | const debug_aranges_sect = &d_sym.sections.items[d_sym.debug_aranges_section_index.?]; | 2194 | try d_sym.growSection(sect_index, needed_size); |
| 2195 | const allocated_size = d_sym.allocatedSize(debug_aranges_sect.offset); | 2195 | const sect = d_sym.getSection(sect_index); |
| 2196 | if (needed_size > allocated_size) { | 2196 | const file_pos = sect.offset; |
| 2197 | debug_aranges_sect.size = 0; // free the space | | |
| 2198 | const new_offset = d_sym.findFreeSpace(needed_size, 16); | | |
| 2199 | debug_aranges_sect.addr = dwarf_seg.vmaddr + new_offset - dwarf_seg.fileoff; | | |
| 2200 | debug_aranges_sect.offset = @intCast(u32, new_offset); | | |
| 2201 | } | | |
| 2202 | debug_aranges_sect.size = needed_size; | | |
| 2203 | log.debug("__debug_aranges start=0x{x} end=0x{x}", .{ | | |
| 2204 | debug_aranges_sect.offset, | | |
| 2205 | debug_aranges_sect.offset + needed_size, | | |
| 2206 | }); | | |
| 2207 | const file_pos = debug_aranges_sect.offset; | | |
| 2208 | try d_sym.file.pwriteAll(di_buf.items, file_pos); | 2197 | try d_sym.file.pwriteAll(di_buf.items, file_pos); |
| 2209 | }, | 2198 | }, |
| 2210 | .wasm => { | 2199 | .wasm => { |