| ... | ... | @@ -861,7 +861,9 @@ pub fn commitDeclState( |
| 861 | 861 | }, |
| 862 | 862 | .wasm => { |
| 863 | 863 | const wasm_file = file.cast(File.Wasm).?; |
| 864 | | writeDbgLineNopsBuffered(wasm_file.debug_line.items, src_fn.off, 0, &.{}, src_fn.len); |
| 864 | const segment_index = wasm_file.debug_line_index.?; |
| 865 | const debug_line = wasm_file.atoms.get(segment_index).?.code; |
| 866 | writeDbgLineNopsBuffered(debug_line.items, src_fn.off, 0, &.{}, src_fn.len); |
| 865 | 867 | }, |
| 866 | 868 | else => unreachable, |
| 867 | 869 | } |
| ... | ... | @@ -972,9 +974,9 @@ pub fn commitDeclState( |
| 972 | 974 | }, |
| 973 | 975 | .wasm => { |
| 974 | 976 | const wasm_file = file.cast(File.Wasm).?; |
| 975 | | const segment_index = try wasm_file.getDebugLineIndex(); |
| 977 | const segment_index = try wasm_file.getOrSetDebugIndex(&wasm_file.debug_line_index); |
| 976 | 978 | const segment = &wasm_file.segments.items[segment_index]; |
| 977 | | const debug_line = &wasm_file.debug_line; |
| 979 | const debug_line = &wasm_file.atoms.get(segment_index).?.code; |
| 978 | 980 | if (needed_size != segment.size) { |
| 979 | 981 | log.debug(" needed size does not equal allocated size: {d}", .{needed_size}); |
| 980 | 982 | if (needed_size > segment.size) { |
| ... | ... | @@ -1146,10 +1148,11 @@ fn updateDeclDebugInfoAllocation(self: *Dwarf, file: *File, atom: *Atom, len: u3 |
| 1146 | 1148 | }, |
| 1147 | 1149 | .wasm => { |
| 1148 | 1150 | const wasm_file = file.cast(File.Wasm).?; |
| 1149 | | const segment_index = try wasm_file.getDebugInfoIndex(); |
| 1151 | const segment_index = try wasm_file.getOrSetDebugIndex(&wasm_file.debug_info_index); |
| 1150 | 1152 | const segment = &wasm_file.segments.items[segment_index]; |
| 1153 | const debug_info = &wasm_file.atoms.get(segment_index).?.code; |
| 1151 | 1154 | const offset = segment.offset + atom.off; |
| 1152 | | try writeDbgInfoNopsToArrayList(gpa, &wasm_file.debug_info, offset, 0, &.{0}, atom.len, false); |
| 1155 | try writeDbgInfoNopsToArrayList(gpa, debug_info, offset, 0, &.{0}, atom.len, false); |
| 1153 | 1156 | }, |
| 1154 | 1157 | else => unreachable, |
| 1155 | 1158 | } |
| ... | ... | @@ -1276,9 +1279,9 @@ fn writeDeclDebugInfo(self: *Dwarf, file: *File, atom: *Atom, dbg_info_buf: []co |
| 1276 | 1279 | }, |
| 1277 | 1280 | .wasm => { |
| 1278 | 1281 | const wasm_file = file.cast(File.Wasm).?; |
| 1279 | | const segment_index = try wasm_file.getDebugInfoIndex(); |
| 1282 | const segment_index = try wasm_file.getOrSetDebugIndex(&wasm_file.debug_info_index); |
| 1280 | 1283 | const segment = &wasm_file.segments.items[segment_index]; |
| 1281 | | const debug_info = &wasm_file.debug_info; |
| 1284 | const debug_info = &wasm_file.atoms.get(segment_index).?.code; |
| 1282 | 1285 | if (needed_size != segment.size) { |
| 1283 | 1286 | log.debug(" needed size does not equal allocated size: {d}", .{needed_size}); |
| 1284 | 1287 | if (needed_size > segment.size) { |
| ... | ... | @@ -1337,10 +1340,10 @@ pub fn updateDeclLineNumber(self: *Dwarf, file: *File, decl: *const Module.Decl) |
| 1337 | 1340 | }, |
| 1338 | 1341 | .wasm => { |
| 1339 | 1342 | const wasm_file = file.cast(File.Wasm).?; |
| 1340 | | const segment_index = wasm_file.getDebugLineIndex() catch unreachable; |
| 1343 | const segment_index = wasm_file.debug_line_index.?; |
| 1341 | 1344 | const segment = wasm_file.segments.items[segment_index]; |
| 1342 | 1345 | const offset = segment.offset + decl.fn_link.wasm.src_fn.off + self.getRelocDbgLineOff(); |
| 1343 | | mem.copy(u8, wasm_file.debug_line.items[offset..], &data); |
| 1346 | mem.copy(u8, wasm_file.atoms.get(segment_index).?.code.items[offset..], &data); |
| 1344 | 1347 | }, |
| 1345 | 1348 | else => unreachable, |
| 1346 | 1349 | } |
| ... | ... | @@ -1576,8 +1579,10 @@ pub fn writeDbgAbbrev(self: *Dwarf, file: *File) !void { |
| 1576 | 1579 | }, |
| 1577 | 1580 | .wasm => { |
| 1578 | 1581 | const wasm_file = file.cast(File.Wasm).?; |
| 1579 | | try wasm_file.debug_abbrev.resize(wasm_file.base.allocator, needed_size); |
| 1580 | | mem.copy(u8, wasm_file.debug_abbrev.items, &abbrev_buf); |
| 1582 | const segment_index = try wasm_file.getOrSetDebugIndex(&wasm_file.debug_abbrev_index); |
| 1583 | const debug_abbrev = &wasm_file.atoms.get(segment_index).?.code; |
| 1584 | try debug_abbrev.resize(wasm_file.base.allocator, needed_size); |
| 1585 | mem.copy(u8, debug_abbrev.items, &abbrev_buf); |
| 1581 | 1586 | }, |
| 1582 | 1587 | else => unreachable, |
| 1583 | 1588 | } |
| ... | ... | @@ -1687,7 +1692,9 @@ pub fn writeDbgInfoHeader(self: *Dwarf, file: *File, module: *Module, low_pc: u6 |
| 1687 | 1692 | }, |
| 1688 | 1693 | .wasm => { |
| 1689 | 1694 | const wasm_file = file.cast(File.Wasm).?; |
| 1690 | | try writeDbgInfoNopsToArrayList(self.allocator, &wasm_file.debug_info, 0, 0, di_buf.items, jmp_amt, false); |
| 1695 | const segment_index = wasm_file.debug_info_index.?; |
| 1696 | const debug_info = &wasm_file.atoms.get(segment_index).?.code; |
| 1697 | try writeDbgInfoNopsToArrayList(self.allocator, debug_info, 0, 0, di_buf.items, jmp_amt, false); |
| 1691 | 1698 | }, |
| 1692 | 1699 | else => unreachable, |
| 1693 | 1700 | } |
| ... | ... | @@ -2016,8 +2023,10 @@ pub fn writeDbgAranges(self: *Dwarf, file: *File, addr: u64, size: u64) !void { |
| 2016 | 2023 | }, |
| 2017 | 2024 | .wasm => { |
| 2018 | 2025 | const wasm_file = file.cast(File.Wasm).?; |
| 2019 | | try wasm_file.debug_aranges.resize(wasm_file.base.allocator, needed_size); |
| 2020 | | mem.copy(u8, wasm_file.debug_aranges.items, di_buf.items); |
| 2026 | const segment_index = try wasm_file.getOrSetDebugIndex(&wasm_file.debug_ranges_index); |
| 2027 | const debug_ranges = &wasm_file.atoms.get(segment_index).?.code; |
| 2028 | try debug_ranges.resize(wasm_file.base.allocator, needed_size); |
| 2029 | mem.copy(u8, debug_ranges.items, di_buf.items); |
| 2021 | 2030 | }, |
| 2022 | 2031 | else => unreachable, |
| 2023 | 2032 | } |
| ... | ... | @@ -2139,7 +2148,9 @@ pub fn writeDbgLineHeader(self: *Dwarf, file: *File, module: *Module) !void { |
| 2139 | 2148 | }, |
| 2140 | 2149 | .wasm => { |
| 2141 | 2150 | const wasm_file = file.cast(File.Wasm).?; |
| 2142 | | writeDbgLineNopsBuffered(wasm_file.debug_line.items, 0, 0, di_buf.items, jmp_amt); |
| 2151 | const segment_index = wasm_file.debug_line_index.?; |
| 2152 | const debug_line = wasm_file.atoms.get(segment_index).?.code; |
| 2153 | writeDbgLineNopsBuffered(debug_line.items, 0, 0, di_buf.items, jmp_amt); |
| 2143 | 2154 | }, |
| 2144 | 2155 | else => unreachable, |
| 2145 | 2156 | } |
| ... | ... | @@ -2287,7 +2298,9 @@ pub fn flushModule(self: *Dwarf, file: *File, module: *Module) !void { |
| 2287 | 2298 | }, |
| 2288 | 2299 | .wasm => { |
| 2289 | 2300 | const wasm_file = file.cast(File.Wasm).?; |
| 2290 | | mem.copy(u8, wasm_file.debug_info.items[reloc.atom.off + reloc.offset ..], &buf); |
| 2301 | const segment_index = wasm_file.debug_info_index.?; |
| 2302 | const debug_info = wasm_file.atoms.get(segment_index).?.code; |
| 2303 | mem.copy(u8, debug_info.items[reloc.atom.off + reloc.offset ..], &buf); |
| 2291 | 2304 | }, |
| 2292 | 2305 | else => unreachable, |
| 2293 | 2306 | } |