| ... | @@ -862,7 +862,8 @@ pub fn commitDeclState( | ... | @@ -862,7 +862,8 @@ pub fn commitDeclState( |
| 862 | .wasm => { | 862 | .wasm => { |
| 863 | const wasm_file = file.cast(File.Wasm).?; | 863 | const wasm_file = file.cast(File.Wasm).?; |
| 864 | const segment_index = wasm_file.debug_line_index.?; | 864 | const segment_index = wasm_file.debug_line_index.?; |
| 865 | const debug_line = wasm_file.atoms.get(segment_index).?.code; | 865 | const atom = wasm_file.atoms.get(segment_index).?; |
| | 866 | const debug_line = atom.getFirstZigAtom().code; |
| 866 | writeDbgLineNopsBuffered(debug_line.items, src_fn.off, 0, &.{}, src_fn.len); | 867 | writeDbgLineNopsBuffered(debug_line.items, src_fn.off, 0, &.{}, src_fn.len); |
| 867 | }, | 868 | }, |
| 868 | else => unreachable, | 869 | else => unreachable, |
| ... | @@ -974,9 +975,10 @@ pub fn commitDeclState( | ... | @@ -974,9 +975,10 @@ pub fn commitDeclState( |
| 974 | }, | 975 | }, |
| 975 | .wasm => { | 976 | .wasm => { |
| 976 | const wasm_file = file.cast(File.Wasm).?; | 977 | const wasm_file = file.cast(File.Wasm).?; |
| 977 | const segment_index = try wasm_file.getOrSetDebugIndex(&wasm_file.debug_line_index); | 978 | const segment_index = wasm_file.debug_line_index.?; |
| 978 | const segment = &wasm_file.segments.items[segment_index]; | 979 | const segment = &wasm_file.segments.items[segment_index]; |
| 979 | const debug_line = &wasm_file.atoms.get(segment_index).?.code; | 980 | const atom = wasm_file.atoms.get(segment_index).?; |
| | 981 | const debug_line = &atom.getFirstZigAtom().code; |
| 980 | if (needed_size != segment.size) { | 982 | if (needed_size != segment.size) { |
| 981 | log.debug(" needed size does not equal allocated size: {d}", .{needed_size}); | 983 | log.debug(" needed size does not equal allocated size: {d}", .{needed_size}); |
| 982 | if (needed_size > segment.size) { | 984 | if (needed_size > segment.size) { |
| ... | @@ -1148,9 +1150,10 @@ fn updateDeclDebugInfoAllocation(self: *Dwarf, file: *File, atom: *Atom, len: u3 | ... | @@ -1148,9 +1150,10 @@ fn updateDeclDebugInfoAllocation(self: *Dwarf, file: *File, atom: *Atom, len: u3 |
| 1148 | }, | 1150 | }, |
| 1149 | .wasm => { | 1151 | .wasm => { |
| 1150 | const wasm_file = file.cast(File.Wasm).?; | 1152 | const wasm_file = file.cast(File.Wasm).?; |
| 1151 | const segment_index = try wasm_file.getOrSetDebugIndex(&wasm_file.debug_info_index); | 1153 | const segment_index = wasm_file.debug_info_index.?; |
| 1152 | const segment = &wasm_file.segments.items[segment_index]; | 1154 | const segment = &wasm_file.segments.items[segment_index]; |
| 1153 | const debug_info = &wasm_file.atoms.get(segment_index).?.code; | 1155 | const info_atom = wasm_file.atoms.get(segment_index).?; |
| | 1156 | const debug_info = &info_atom.getFirstZigAtom().code; |
| 1154 | const offset = segment.offset + atom.off; | 1157 | const offset = segment.offset + atom.off; |
| 1155 | try writeDbgInfoNopsToArrayList(gpa, debug_info, offset, 0, &.{0}, atom.len, false); | 1158 | try writeDbgInfoNopsToArrayList(gpa, debug_info, offset, 0, &.{0}, atom.len, false); |
| 1156 | }, | 1159 | }, |
| ... | @@ -1279,9 +1282,10 @@ fn writeDeclDebugInfo(self: *Dwarf, file: *File, atom: *Atom, dbg_info_buf: []co | ... | @@ -1279,9 +1282,10 @@ fn writeDeclDebugInfo(self: *Dwarf, file: *File, atom: *Atom, dbg_info_buf: []co |
| 1279 | }, | 1282 | }, |
| 1280 | .wasm => { | 1283 | .wasm => { |
| 1281 | const wasm_file = file.cast(File.Wasm).?; | 1284 | const wasm_file = file.cast(File.Wasm).?; |
| 1282 | const segment_index = try wasm_file.getOrSetDebugIndex(&wasm_file.debug_info_index); | 1285 | const segment_index = wasm_file.debug_info_index.?; |
| 1283 | const segment = &wasm_file.segments.items[segment_index]; | 1286 | const segment = &wasm_file.segments.items[segment_index]; |
| 1284 | const debug_info = &wasm_file.atoms.get(segment_index).?.code; | 1287 | const info_atom = wasm_file.atoms.get(segment_index).?; |
| | 1288 | const debug_info = &info_atom.getFirstZigAtom().code; |
| 1285 | if (needed_size != segment.size) { | 1289 | if (needed_size != segment.size) { |
| 1286 | log.debug(" needed size does not equal allocated size: {d}", .{needed_size}); | 1290 | log.debug(" needed size does not equal allocated size: {d}", .{needed_size}); |
| 1287 | if (needed_size > segment.size) { | 1291 | if (needed_size > segment.size) { |
| ... | @@ -1343,7 +1347,8 @@ pub fn updateDeclLineNumber(self: *Dwarf, file: *File, decl: *const Module.Decl) | ... | @@ -1343,7 +1347,8 @@ pub fn updateDeclLineNumber(self: *Dwarf, file: *File, decl: *const Module.Decl) |
| 1343 | const segment_index = wasm_file.debug_line_index.?; | 1347 | const segment_index = wasm_file.debug_line_index.?; |
| 1344 | const segment = wasm_file.segments.items[segment_index]; | 1348 | const segment = wasm_file.segments.items[segment_index]; |
| 1345 | const offset = segment.offset + decl.fn_link.wasm.src_fn.off + self.getRelocDbgLineOff(); | 1349 | const offset = segment.offset + decl.fn_link.wasm.src_fn.off + self.getRelocDbgLineOff(); |
| 1346 | mem.copy(u8, wasm_file.atoms.get(segment_index).?.code.items[offset..], &data); | 1350 | const atom = wasm_file.atoms.get(segment_index).?.getFirstZigAtom(); |
| | 1351 | mem.copy(u8, atom.code.items[offset..], &data); |
| 1347 | }, | 1352 | }, |
| 1348 | else => unreachable, | 1353 | else => unreachable, |
| 1349 | } | 1354 | } |
| ... | @@ -1579,8 +1584,8 @@ pub fn writeDbgAbbrev(self: *Dwarf, file: *File) !void { | ... | @@ -1579,8 +1584,8 @@ pub fn writeDbgAbbrev(self: *Dwarf, file: *File) !void { |
| 1579 | }, | 1584 | }, |
| 1580 | .wasm => { | 1585 | .wasm => { |
| 1581 | const wasm_file = file.cast(File.Wasm).?; | 1586 | const wasm_file = file.cast(File.Wasm).?; |
| 1582 | const segment_index = try wasm_file.getOrSetDebugIndex(&wasm_file.debug_abbrev_index); | 1587 | const segment_index = wasm_file.debug_abbrev_index.?; |
| 1583 | const debug_abbrev = &wasm_file.atoms.get(segment_index).?.code; | 1588 | const debug_abbrev = &wasm_file.atoms.get(segment_index).?.getFirstZigAtom().code; |
| 1584 | try debug_abbrev.resize(wasm_file.base.allocator, needed_size); | 1589 | try debug_abbrev.resize(wasm_file.base.allocator, needed_size); |
| 1585 | mem.copy(u8, debug_abbrev.items, &abbrev_buf); | 1590 | mem.copy(u8, debug_abbrev.items, &abbrev_buf); |
| 1586 | }, | 1591 | }, |
| ... | @@ -1693,7 +1698,7 @@ pub fn writeDbgInfoHeader(self: *Dwarf, file: *File, module: *Module, low_pc: u6 | ... | @@ -1693,7 +1698,7 @@ pub fn writeDbgInfoHeader(self: *Dwarf, file: *File, module: *Module, low_pc: u6 |
| 1693 | .wasm => { | 1698 | .wasm => { |
| 1694 | const wasm_file = file.cast(File.Wasm).?; | 1699 | const wasm_file = file.cast(File.Wasm).?; |
| 1695 | const segment_index = wasm_file.debug_info_index.?; | 1700 | const segment_index = wasm_file.debug_info_index.?; |
| 1696 | const debug_info = &wasm_file.atoms.get(segment_index).?.code; | 1701 | const debug_info = &wasm_file.atoms.get(segment_index).?.getFirstZigAtom().code; |
| 1697 | try writeDbgInfoNopsToArrayList(self.allocator, debug_info, 0, 0, di_buf.items, jmp_amt, false); | 1702 | try writeDbgInfoNopsToArrayList(self.allocator, debug_info, 0, 0, di_buf.items, jmp_amt, false); |
| 1698 | }, | 1703 | }, |
| 1699 | else => unreachable, | 1704 | else => unreachable, |
| ... | @@ -2023,8 +2028,8 @@ pub fn writeDbgAranges(self: *Dwarf, file: *File, addr: u64, size: u64) !void { | ... | @@ -2023,8 +2028,8 @@ pub fn writeDbgAranges(self: *Dwarf, file: *File, addr: u64, size: u64) !void { |
| 2023 | }, | 2028 | }, |
| 2024 | .wasm => { | 2029 | .wasm => { |
| 2025 | const wasm_file = file.cast(File.Wasm).?; | 2030 | const wasm_file = file.cast(File.Wasm).?; |
| 2026 | const segment_index = try wasm_file.getOrSetDebugIndex(&wasm_file.debug_ranges_index); | 2031 | const segment_index = wasm_file.debug_ranges_index.?; |
| 2027 | const debug_ranges = &wasm_file.atoms.get(segment_index).?.code; | 2032 | const debug_ranges = &wasm_file.atoms.get(segment_index).?.getFirstZigAtom().code; |
| 2028 | try debug_ranges.resize(wasm_file.base.allocator, needed_size); | 2033 | try debug_ranges.resize(wasm_file.base.allocator, needed_size); |
| 2029 | mem.copy(u8, debug_ranges.items, di_buf.items); | 2034 | mem.copy(u8, debug_ranges.items, di_buf.items); |
| 2030 | }, | 2035 | }, |
| ... | @@ -2149,7 +2154,7 @@ pub fn writeDbgLineHeader(self: *Dwarf, file: *File, module: *Module) !void { | ... | @@ -2149,7 +2154,7 @@ pub fn writeDbgLineHeader(self: *Dwarf, file: *File, module: *Module) !void { |
| 2149 | .wasm => { | 2154 | .wasm => { |
| 2150 | const wasm_file = file.cast(File.Wasm).?; | 2155 | const wasm_file = file.cast(File.Wasm).?; |
| 2151 | const segment_index = wasm_file.debug_line_index.?; | 2156 | const segment_index = wasm_file.debug_line_index.?; |
| 2152 | const debug_line = wasm_file.atoms.get(segment_index).?.code; | 2157 | const debug_line = wasm_file.atoms.get(segment_index).?.getFirstZigAtom().code; |
| 2153 | writeDbgLineNopsBuffered(debug_line.items, 0, 0, di_buf.items, jmp_amt); | 2158 | writeDbgLineNopsBuffered(debug_line.items, 0, 0, di_buf.items, jmp_amt); |
| 2154 | }, | 2159 | }, |
| 2155 | else => unreachable, | 2160 | else => unreachable, |
| ... | @@ -2299,7 +2304,7 @@ pub fn flushModule(self: *Dwarf, file: *File, module: *Module) !void { | ... | @@ -2299,7 +2304,7 @@ pub fn flushModule(self: *Dwarf, file: *File, module: *Module) !void { |
| 2299 | .wasm => { | 2304 | .wasm => { |
| 2300 | const wasm_file = file.cast(File.Wasm).?; | 2305 | const wasm_file = file.cast(File.Wasm).?; |
| 2301 | const segment_index = wasm_file.debug_info_index.?; | 2306 | const segment_index = wasm_file.debug_info_index.?; |
| 2302 | const debug_info = wasm_file.atoms.get(segment_index).?.code; | 2307 | const debug_info = wasm_file.atoms.get(segment_index).?.getFirstZigAtom().code; |
| 2303 | mem.copy(u8, debug_info.items[reloc.atom.off + reloc.offset ..], &buf); | 2308 | mem.copy(u8, debug_info.items[reloc.atom.off + reloc.offset ..], &buf); |
| 2304 | }, | 2309 | }, |
| 2305 | else => unreachable, | 2310 | else => unreachable, |