| ... | ... | @@ -199,8 +199,8 @@ pub const Line = struct { |
| 199 | 199 | |
| 200 | 200 | pub const Str = struct { |
| 201 | 201 | ni: link.MappedFile.Node.Index.Optional, |
| 202 | | offset: usize, |
| 203 | | map: std.HashMapUnmanaged(usize, void, Context, std.hash_map.default_max_load_percentage), |
| 202 | end: usize, |
| 203 | map: std.array_hash_map.Custom(usize, void, Context, true), |
| 204 | 204 | |
| 205 | 205 | fn get( |
| 206 | 206 | s: *Str, |
| ... | ... | @@ -217,21 +217,21 @@ pub const Str = struct { |
| 217 | 217 | .{ .slice = slice }, |
| 218 | 218 | ); |
| 219 | 219 | if (!gop.found_existing) { |
| 220 | | gop.key_ptr.* = s.offset; |
| 221 | | try ni.ensureMinimumSize(gpa, mf, s.offset + str.len + 1); |
| 220 | gop.key_ptr.* = s.end; |
| 221 | try ni.ensureMinimumSize(gpa, mf, s.end + str.len + 1); |
| 222 | 222 | const slice_mut = ni.slice(mf); |
| 223 | | @memcpy(slice_mut[s.offset..][0..str.len], str); |
| 224 | | s.offset += str.len; |
| 225 | | slice_mut[s.offset] = 0; |
| 226 | | s.offset += 1; |
| 223 | @memcpy(slice_mut[s.end..][0..str.len], str); |
| 224 | s.end += str.len; |
| 225 | slice_mut[s.end] = 0; |
| 226 | s.end += 1; |
| 227 | 227 | } |
| 228 | 228 | return gop.key_ptr.*; |
| 229 | 229 | } |
| 230 | 230 | |
| 231 | 231 | const Context = struct { |
| 232 | 232 | slice: []const u8, |
| 233 | | pub fn hash(context: Context, offset: usize) u64 { |
| 234 | | return std.hash.Wyhash.hash(0, std.mem.sliceTo(context.slice[offset..], 0)); |
| 233 | pub fn hash(context: Context, offset: usize) u32 { |
| 234 | return @truncate(std.hash.Wyhash.hash(0, std.mem.sliceTo(context.slice[offset..], 0))); |
| 235 | 235 | } |
| 236 | 236 | pub fn eql(_: Context, lhs_offset: usize, rhs_offset: usize) bool { |
| 237 | 237 | return lhs_offset == rhs_offset; |
| ... | ... | @@ -240,10 +240,10 @@ pub const Str = struct { |
| 240 | 240 | |
| 241 | 241 | const Adapter = struct { |
| 242 | 242 | slice: []const u8, |
| 243 | | pub fn hash(_: Adapter, key: []const u8) u64 { |
| 244 | | return std.hash.Wyhash.hash(0, key); |
| 243 | pub fn hash(_: Adapter, key: []const u8) u32 { |
| 244 | return @truncate(std.hash.Wyhash.hash(0, key)); |
| 245 | 245 | } |
| 246 | | pub fn eql(adapter: Adapter, key: []const u8, rhs_offset: usize) bool { |
| 246 | pub fn eql(adapter: Adapter, key: []const u8, rhs_offset: usize, _: usize) bool { |
| 247 | 247 | return std.mem.startsWith(u8, adapter.slice[rhs_offset..], key) and |
| 248 | 248 | adapter.slice[rhs_offset + key.len] == 0; |
| 249 | 249 | } |
| ... | ... | @@ -251,17 +251,47 @@ pub const Str = struct { |
| 251 | 251 | }; |
| 252 | 252 | |
| 253 | 253 | pub const Rnglists = struct { |
| 254 | | fn offsetsTableOffset(dwarf: *Dwarf) usize { |
| 254 | fn tableOffset(dwarf: *Dwarf) usize { |
| 255 | 255 | return dwarf.unitLengthSize() + 2 + 1 + 1 + 4; |
| 256 | 256 | } |
| 257 | |
| 258 | pub fn size(dwarf: *Dwarf, ui: Unit.Index) usize { |
| 259 | return ui.get(dwarf).debug_rnglists_end + 1; |
| 260 | } |
| 257 | 261 | }; |
| 258 | 262 | |
| 259 | 263 | pub const StrOffsets = struct { |
| 260 | 264 | ni: link.MappedFile.Node.Index.Optional, |
| 261 | | offset: usize, |
| 265 | pending_index: usize, |
| 266 | map: std.array_hash_map.Auto(usize, void), |
| 267 | |
| 268 | fn get( |
| 269 | so: *StrOffsets, |
| 270 | dwarf: *Dwarf, |
| 271 | s: *Str, |
| 272 | mf: *link.MappedFile, |
| 273 | str: []const u8, |
| 274 | ) link.Error!usize { |
| 275 | const comp = dwarf.lf.comp; |
| 276 | try so.map.ensureUnusedCapacity(comp.gpa, 1); |
| 277 | return so.map.getOrPutAssumeCapacity(s.get(comp.gpa, mf, str) catch |err| switch (err) { |
| 278 | else => |e| return e, |
| 279 | error.MappedFileIo => return comp.link_diags.fail("failed to write output file: {t}", .{ |
| 280 | mf.io_err.?, |
| 281 | }), |
| 282 | }).index; |
| 283 | } |
| 284 | |
| 285 | fn tableOffset(dwarf: *Dwarf) usize { |
| 286 | return dwarf.unitLengthSize() + 2 + 2; |
| 287 | } |
| 288 | |
| 289 | pub fn size(so: *StrOffsets, dwarf: *Dwarf) usize { |
| 290 | return tableOffset(dwarf) + dwarf.secOffsetSize() * so.pending_index; |
| 291 | } |
| 262 | 292 | }; |
| 263 | 293 | |
| 264 | | pub const SharedSection = enum { debug_abbrev, debug_line_str, debug_str, debug_str_offsets }; |
| 294 | pub const SharedSection = enum { debug_abbrev, debug_line_str, debug_str }; |
| 265 | 295 | |
| 266 | 296 | pub const Loc = union(enum) { |
| 267 | 297 | empty, |
| ... | ... | @@ -695,8 +725,8 @@ pub const WipFunc = struct { |
| 695 | 725 | try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian); |
| 696 | 726 | try di_w.writeUleb128(decl.src_column + 1); |
| 697 | 727 | try di_w.writeByte(if (decl.is_pub) DW.ACCESS.public else DW.ACCESS.private); |
| 698 | | try dwarf.strp(&dwarf.debug_str, di_nw, nav.name.toSlice(ip)); |
| 699 | | try dwarf.strp(&dwarf.debug_str, di_nw, switch (decl.linkage) { |
| 728 | try dwarf.strx(di_nw, nav.name.toSlice(ip)); |
| 729 | try dwarf.strx(di_nw, switch (decl.linkage) { |
| 700 | 730 | .normal => nav.fqn, |
| 701 | 731 | .@"extern", .@"export" => nav.name, |
| 702 | 732 | }.toSlice(ip)); |
| ... | ... | @@ -813,7 +843,7 @@ pub const WipFunc = struct { |
| 813 | 843 | .arg => if (opt_name) |_| .arg else .unnamed_arg, |
| 814 | 844 | .local_var => if (opt_name) |_| .local_var else unreachable, |
| 815 | 845 | }); |
| 816 | | if (opt_name) |name| try dwarf.strp(&dwarf.debug_str, di_nw, name); |
| 846 | if (opt_name) |name| try dwarf.strx(di_nw, name); |
| 817 | 847 | try dwarf.refType(debug.pt, di_nw, ty); |
| 818 | 848 | try dwarf.exprLoc(di_nw, loc); |
| 819 | 849 | debug.empty = false; |
| ... | ... | @@ -865,7 +895,7 @@ pub const WipFunc = struct { |
| 865 | 895 | .fully_comptime => .local_const_fully_comptime, |
| 866 | 896 | } else unreachable, |
| 867 | 897 | }); |
| 868 | | if (opt_name) |name| try dwarf.strp(&dwarf.debug_str, di_nw, name); |
| 898 | if (opt_name) |name| try dwarf.strx(di_nw, name); |
| 869 | 899 | try dwarf.refType(pt, di_nw, ty); |
| 870 | 900 | if (ty_class.hasRuntimeBits()) try dwarf.blockConst(pt, di_nw, val); |
| 871 | 901 | if (ty_class.comptimeOnly()) try dwarf.refConst(pt, di_nw, val); |
| ... | ... | @@ -1297,18 +1327,19 @@ pub fn init(lf: *link.File, format: DW.Format) Dwarf { |
| 1297 | 1327 | }, |
| 1298 | 1328 | .debug_line_str = .{ |
| 1299 | 1329 | .ni = .none, |
| 1300 | | .offset = 0, |
| 1330 | .end = 0, |
| 1301 | 1331 | .map = .empty, |
| 1302 | 1332 | }, |
| 1303 | 1333 | .debug_rnglists = .{}, |
| 1304 | 1334 | .debug_str = .{ |
| 1305 | 1335 | .ni = .none, |
| 1306 | | .offset = 0, |
| 1336 | .end = 0, |
| 1307 | 1337 | .map = .empty, |
| 1308 | 1338 | }, |
| 1309 | 1339 | .debug_str_offsets = .{ |
| 1310 | 1340 | .ni = .none, |
| 1311 | | .offset = 0, |
| 1341 | .pending_index = 0, |
| 1342 | .map = .empty, |
| 1312 | 1343 | }, |
| 1313 | 1344 | }; |
| 1314 | 1345 | } |
| ... | ... | @@ -1324,6 +1355,7 @@ pub fn deinit(dwarf: *Dwarf) void { |
| 1324 | 1355 | dwarf.decls.deinit(gpa); |
| 1325 | 1356 | dwarf.debug_line_str.map.deinit(gpa); |
| 1326 | 1357 | dwarf.debug_str.map.deinit(gpa); |
| 1358 | dwarf.debug_str_offsets.map.deinit(gpa); |
| 1327 | 1359 | dwarf.* = undefined; |
| 1328 | 1360 | } |
| 1329 | 1361 | |
| ... | ... | @@ -1499,7 +1531,7 @@ fn getConstDeclInst(dwarf: *Dwarf, val: InternPool.Index) ?InternPool.TrackedIns |
| 1499 | 1531 | }).srcInst(ip), |
| 1500 | 1532 | } |
| 1501 | 1533 | } |
| 1502 | | fn getConstDecl( |
| 1534 | pub fn getConstDecl( |
| 1503 | 1535 | dwarf: *Dwarf, |
| 1504 | 1536 | pt: Zcu.PerThread, |
| 1505 | 1537 | instance_const: InternPool.Index, |
| ... | ... | @@ -1509,7 +1541,7 @@ fn getConstDecl( |
| 1509 | 1541 | return Const.get(cpi, dwarf).debug_info_ni.unwrap().?; |
| 1510 | 1542 | }, .{ .@"const" = instance_const }); |
| 1511 | 1543 | } |
| 1512 | | fn getGlobalDecl( |
| 1544 | pub fn getGlobalDecl( |
| 1513 | 1545 | dwarf: *Dwarf, |
| 1514 | 1546 | pt: Zcu.PerThread, |
| 1515 | 1547 | instance_global: InternPool.Nav.Index, |
| ... | ... | @@ -1567,7 +1599,7 @@ pub fn unitLengthSize(dwarf: *Dwarf) usize { |
| 1567 | 1599 | .@"64" => 4 + 8, |
| 1568 | 1600 | }; |
| 1569 | 1601 | } |
| 1570 | | pub fn genUnitLength(dwarf: *Dwarf, w: *std.Io.Writer) std.Io.Writer.Error!void { |
| 1602 | fn genUnitLength(dwarf: *Dwarf, w: *std.Io.Writer) std.Io.Writer.Error!void { |
| 1571 | 1603 | switch (dwarf.format) { |
| 1572 | 1604 | .@"32" => try w.writeInt(u32, undefined, dwarf.endian), |
| 1573 | 1605 | .@"64" => { |
| ... | ... | @@ -1700,22 +1732,23 @@ pub fn genDebugInfoHeader( |
| 1700 | 1732 | const compile_unit_offset = dih_w.end; |
| 1701 | 1733 | try dwarf.abbrevCode(dih_nw, .compile_unit); |
| 1702 | 1734 | try dih_w.writeByte(DW.LANG.Zig); |
| 1703 | | try dwarf.strp(&dwarf.debug_str, dih_nw, "zig " ++ @import("build_options").version); |
| 1704 | | const root_dir_path = try mod.root.toAbsolute(&comp.dirs, comp.gpa); |
| 1705 | | defer comp.gpa.free(root_dir_path); |
| 1706 | | try dwarf.strp(&dwarf.debug_line_str, dih_nw, root_dir_path); |
| 1707 | | try dwarf.strp(&dwarf.debug_line_str, dih_nw, mod.root_src_path); |
| 1708 | 1735 | try dwarf.secOffset( |
| 1709 | 1736 | dih_nw, |
| 1710 | 1737 | dwarf.getUnit(zcu.root_mod).get(dwarf).debug_info_header_ni.unwrap().?, |
| 1711 | 1738 | compile_unit_offset, |
| 1712 | 1739 | ); |
| 1713 | 1740 | try dwarf.secOffset(dih_nw, unit.debug_line_header_ni.unwrap().?, 0); |
| 1714 | | try dwarf.secOffset(dih_nw, unit.debug_rnglists_ni.unwrap().?, Rnglists.offsetsTableOffset(dwarf)); |
| 1741 | try dwarf.secOffset(dih_nw, unit.debug_rnglists_ni.unwrap().?, Rnglists.tableOffset(dwarf)); |
| 1742 | try dwarf.secOffset(dih_nw, dwarf.debug_str_offsets.ni.unwrap().?, StrOffsets.tableOffset(dwarf)); |
| 1743 | try dwarf.strx1(dih_nw, "zig " ++ @import("build_options").version); |
| 1744 | const root_dir_path = try mod.root.toAbsolute(&comp.dirs, comp.gpa); |
| 1745 | defer comp.gpa.free(root_dir_path); |
| 1746 | try dwarf.strp(&dwarf.debug_line_str, dih_nw, root_dir_path); |
| 1747 | try dwarf.strp(&dwarf.debug_line_str, dih_nw, mod.root_src_path); |
| 1715 | 1748 | try dih_w.writeUleb128(0); |
| 1716 | 1749 | const module_offset = dih_w.end; |
| 1717 | 1750 | try dwarf.abbrevCode(dih_nw, .module); |
| 1718 | | try dwarf.strp(&dwarf.debug_str, dih_nw, mod.fully_qualified_name); |
| 1751 | try dwarf.strx(dih_nw, mod.fully_qualified_name); |
| 1719 | 1752 | try dih_w.writeUleb128(0); |
| 1720 | 1753 | try dwarf.genModuleDependency( |
| 1721 | 1754 | dih_nw, |
| ... | ... | @@ -1741,7 +1774,7 @@ fn genModuleDependency( |
| 1741 | 1774 | const dep_unit = dwarf.getUnit(dep).get(dwarf); |
| 1742 | 1775 | if (!dep_unit.alive) return; |
| 1743 | 1776 | try dwarf.abbrevCode(di_nw, .module_dependency); |
| 1744 | | try dwarf.strp(&dwarf.debug_str, di_nw, name); |
| 1777 | try dwarf.strx(di_nw, name); |
| 1745 | 1778 | try dwarf.secOffset(di_nw, dep_unit.debug_info_header_ni.unwrap().?, module_offset); |
| 1746 | 1779 | } |
| 1747 | 1780 | |
| ... | ... | @@ -1858,11 +1891,7 @@ pub fn genDebugLineHeader( |
| 1858 | 1891 | } |
| 1859 | 1892 | try dlh_w.writeInt(i64, @truncate(zf.stat.mtime.nanoseconds), dwarf.endian); |
| 1860 | 1893 | try dlh_w.writeInt(u64, zf.stat.size, dwarf.endian); |
| 1861 | | try dwarf.strp( |
| 1862 | | &dwarf.debug_line_str, |
| 1863 | | dlh_nw, |
| 1864 | | if (zf.is_builtin) zf.source.? else "", |
| 1865 | | ); |
| 1894 | try dwarf.strp(&dwarf.debug_line_str, dlh_nw, if (zf.is_builtin) zf.source.? else ""); |
| 1866 | 1895 | } |
| 1867 | 1896 | switch (dwarf.format) { |
| 1868 | 1897 | .@"32" => std.mem.writeInt( |
| ... | ... | @@ -1924,7 +1953,7 @@ pub fn genDebugRnglistsHeader( |
| 1924 | 1953 | try drh_w.writeByte(@backingInt(dwarf.address_size)); |
| 1925 | 1954 | try drh_w.writeByte(0); |
| 1926 | 1955 | try drh_w.writeInt(u32, 1, dwarf.endian); |
| 1927 | | assert(drh_w.end == Rnglists.offsetsTableOffset(dwarf)); |
| 1956 | assert(drh_w.end == Rnglists.tableOffset(dwarf)); |
| 1928 | 1957 | switch (dwarf.format) { |
| 1929 | 1958 | .@"32" => try drh_w.writeInt(u32, 4, dwarf.endian), |
| 1930 | 1959 | .@"64" => try drh_w.writeInt(u64, 8, dwarf.endian), |
| ... | ... | @@ -1933,7 +1962,7 @@ pub fn genDebugRnglistsHeader( |
| 1933 | 1962 | try drh_w.writeByte(DW.RLE.end_of_list); |
| 1934 | 1963 | } |
| 1935 | 1964 | |
| 1936 | | pub fn genDebugRnglists( |
| 1965 | pub fn genDebugRnglistsRange( |
| 1937 | 1966 | dwarf: *Dwarf, |
| 1938 | 1967 | unit: *Unit, |
| 1939 | 1968 | dr_nw: *link.MappedFile.Node.Writer, |
| ... | ... | @@ -1949,6 +1978,24 @@ pub fn genDebugRnglists( |
| 1949 | 1978 | try dr_w.writeByte(DW.RLE.end_of_list); |
| 1950 | 1979 | } |
| 1951 | 1980 | |
| 1981 | pub fn genDebugStrOffsetsHeader(dwarf: *Dwarf, dsoh_w: *std.Io.Writer) std.Io.Writer.Error!void { |
| 1982 | try dwarf.genUnitLength(dsoh_w); |
| 1983 | try dsoh_w.writeInt(u16, 5, dwarf.endian); |
| 1984 | try dsoh_w.writeInt(u16, 0, dwarf.endian); |
| 1985 | assert(dsoh_w.end == StrOffsets.tableOffset(dwarf)); |
| 1986 | } |
| 1987 | |
| 1988 | pub fn genPendingDebugStrOffsets(dwarf: *Dwarf, dso_nw: *link.MappedFile.Node.Writer) link.Error!void { |
| 1989 | dso_nw.interface.end = dwarf.debug_str_offsets.size(dwarf); |
| 1990 | for (dwarf.debug_str_offsets.map.keys()[dwarf.debug_str_offsets.pending_index..]) |offset| { |
| 1991 | dwarf.secOffset(dso_nw, dwarf.debug_str.ni.unwrap().?, offset) catch |err| switch (err) { |
| 1992 | else => |e| return e, |
| 1993 | error.WriteFailed => return dwarf.reportWriteError(dso_nw), |
| 1994 | }; |
| 1995 | dwarf.debug_str_offsets.pending_index += 1; |
| 1996 | } |
| 1997 | } |
| 1998 | |
| 1952 | 1999 | pub fn updateExtern( |
| 1953 | 2000 | dwarf: *Dwarf, |
| 1954 | 2001 | pt: Zcu.PerThread, |
| ... | ... | @@ -2012,17 +2059,17 @@ fn updateExternInner( |
| 2012 | 2059 | try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian); |
| 2013 | 2060 | try di_w.writeUleb128(decl.src_column + 1); |
| 2014 | 2061 | try di_w.writeByte(if (decl.is_pub) DW.ACCESS.public else DW.ACCESS.private); |
| 2015 | | try dwarf.strp(&dwarf.debug_str, di_nw, nav.name.toSlice(ip)); |
| 2062 | try dwarf.strx(di_nw, nav.name.toSlice(ip)); |
| 2016 | 2063 | } else { |
| 2017 | 2064 | try dwarf.abbrevCode(di_nw, .decl_var); |
| 2018 | 2065 | try dwarf.refType(pt, di_nw, .fromInterned(zcu.fileRootType(inst_info.file))); |
| 2019 | 2066 | try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian); |
| 2020 | 2067 | try di_w.writeUleb128(decl.src_column + 1); |
| 2021 | 2068 | try di_w.writeByte(if (decl.is_pub) DW.ACCESS.public else DW.ACCESS.private); |
| 2022 | | try dwarf.strp(&dwarf.debug_str, di_nw, nav.name.toSlice(ip)); |
| 2069 | try dwarf.strx(di_nw, nav.name.toSlice(ip)); |
| 2023 | 2070 | }, |
| 2024 | 2071 | } |
| 2025 | | try dwarf.strp(&dwarf.debug_str, di_nw, nav_extern.name.toSlice(ip)); |
| 2072 | try dwarf.strx(di_nw, nav_extern.name.toSlice(ip)); |
| 2026 | 2073 | if (maybe_func_type) |func_type| { |
| 2027 | 2074 | try dwarf.refType(pt, di_nw, .fromInterned(func_type.return_type)); |
| 2028 | 2075 | try dwarf.addrSym(di_nw, si, 0); |
| ... | ... | @@ -2115,9 +2162,9 @@ fn updateGlobalInner( |
| 2115 | 2162 | try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian); |
| 2116 | 2163 | try di_w.writeUleb128(decl.src_column + 1); |
| 2117 | 2164 | try di_w.writeByte(if (decl.is_pub) DW.ACCESS.public else DW.ACCESS.private); |
| 2118 | | try dwarf.strp(&dwarf.debug_str, di_nw, nav.name.toSlice(ip)); |
| 2165 | try dwarf.strx(di_nw, nav.name.toSlice(ip)); |
| 2119 | 2166 | } |
| 2120 | | try dwarf.strp(&dwarf.debug_str, di_nw, switch (decl.linkage) { |
| 2167 | try dwarf.strx(di_nw, switch (decl.linkage) { |
| 2121 | 2168 | .normal => nav.fqn, |
| 2122 | 2169 | .@"extern" => unreachable, |
| 2123 | 2170 | .@"export" => nav.name, |
| ... | ... | @@ -2286,12 +2333,12 @@ fn genComptimeGlobalInner( |
| 2286 | 2333 | try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian); |
| 2287 | 2334 | try di_w.writeUleb128(decl.src_column + 1); |
| 2288 | 2335 | try di_w.writeByte(if (decl.is_pub) DW.ACCESS.public else DW.ACCESS.private); |
| 2289 | | try dwarf.strp(&dwarf.debug_str, di_nw, nav.name.toSlice(ip)); |
| 2336 | try dwarf.strx(di_nw, nav.name.toSlice(ip)); |
| 2290 | 2337 | } |
| 2291 | 2338 | switch (nav_ty.toIntern()) { |
| 2292 | 2339 | .type_type => try dwarf.refConst(pt, di_nw, nav_val), |
| 2293 | 2340 | else => { |
| 2294 | | try dwarf.strp(&dwarf.debug_str, di_nw, switch (decl.linkage) { |
| 2341 | try dwarf.strx(di_nw, switch (decl.linkage) { |
| 2295 | 2342 | .normal => nav.fqn, |
| 2296 | 2343 | .@"extern", .@"export" => nav.name, |
| 2297 | 2344 | }.toSlice(ip)); |
| ... | ... | @@ -2389,7 +2436,7 @@ fn updateConstInner( |
| 2389 | 2436 | const ty: Type = .fromInterned(val); |
| 2390 | 2437 | try dwarf.abbrevCode(di_nw, .numeric_type); |
| 2391 | 2438 | var name_buf: [std.fmt.count("i{d}", .{std.math.maxInt(u16)})]u8 = undefined; |
| 2392 | | try dwarf.strp(&dwarf.debug_str, di_nw, std.mem.print(&name_buf, "{f}", .{ |
| 2439 | try dwarf.strx(di_nw, std.mem.print(&name_buf, "{f}", .{ |
| 2393 | 2440 | ty.fmt(pt), |
| 2394 | 2441 | }) catch unreachable); |
| 2395 | 2442 | try di_w.writeByte(switch (int_type.signedness) { |
| ... | ... | @@ -2408,7 +2455,7 @@ fn updateConstInner( |
| 2408 | 2455 | .none => .ptr_type, |
| 2409 | 2456 | else => .ptr_sentinel_type, |
| 2410 | 2457 | }); |
| 2411 | | try dwarf.strp(&dwarf.debug_str, di_nw, name); |
| 2458 | try dwarf.strx(di_nw, name); |
| 2412 | 2459 | switch (ptr_type.sentinel) { |
| 2413 | 2460 | .none => {}, |
| 2414 | 2461 | else => |sentinel| try dwarf.blockConst(pt, di_nw, .fromInterned(sentinel)), |
| ... | ... | @@ -2440,16 +2487,16 @@ fn updateConstInner( |
| 2440 | 2487 | const name = try zcu.gpa.print("{f}", .{ty.fmt(pt)}); |
| 2441 | 2488 | defer zcu.gpa.free(name); |
| 2442 | 2489 | try dwarf.abbrevCode(di_nw, .generated_struct_type); |
| 2443 | | try dwarf.strp(&dwarf.debug_str, di_nw, name); |
| 2490 | try dwarf.strx(di_nw, name); |
| 2444 | 2491 | try di_w.writeUleb128(ty.abiSize(zcu)); |
| 2445 | 2492 | try di_w.writeUleb128(ty.abiAlignment(zcu).toByteUnits().?); |
| 2446 | 2493 | try dwarf.abbrevCode(di_nw, .generated_field); |
| 2447 | | try dwarf.strp(&dwarf.debug_str, di_nw, "ptr"); |
| 2494 | try dwarf.strx(di_nw, "ptr"); |
| 2448 | 2495 | const ptr_field_ty = ty.slicePtrFieldType(zcu); |
| 2449 | 2496 | try dwarf.refType(pt, di_nw, ptr_field_ty); |
| 2450 | 2497 | try di_w.writeUleb128(0); |
| 2451 | 2498 | try dwarf.abbrevCode(di_nw, .generated_field); |
| 2452 | | try dwarf.strp(&dwarf.debug_str, di_nw, "len"); |
| 2499 | try dwarf.strx(di_nw, "len"); |
| 2453 | 2500 | const len_field_ty: Type = .usize; |
| 2454 | 2501 | try dwarf.refType(pt, di_nw, len_field_ty); |
| 2455 | 2502 | try di_w.writeUleb128(len_field_ty.abiAlignment(zcu).forward(ptr_field_ty.abiSize(zcu))); |
| ... | ... | @@ -2463,7 +2510,7 @@ fn updateConstInner( |
| 2463 | 2510 | di_nw, |
| 2464 | 2511 | if (array_type.sentinel == .none) .array_type else .array_sentinel_type, |
| 2465 | 2512 | ); |
| 2466 | | try dwarf.strp(&dwarf.debug_str, di_nw, name); |
| 2513 | try dwarf.strx(di_nw, name); |
| 2467 | 2514 | if (array_type.sentinel != .none) |
| 2468 | 2515 | try dwarf.blockConst(pt, di_nw, .fromInterned(array_type.sentinel)); |
| 2469 | 2516 | try dwarf.refType(pt, di_nw, .fromInterned(array_type.child)); |
| ... | ... | @@ -2476,7 +2523,7 @@ fn updateConstInner( |
| 2476 | 2523 | const name = try zcu.gpa.print("{f}", .{Type.fromInterned(val).fmt(pt)}); |
| 2477 | 2524 | defer zcu.gpa.free(name); |
| 2478 | 2525 | try dwarf.abbrevCode(di_nw, .vector_type); |
| 2479 | | try dwarf.strp(&dwarf.debug_str, di_nw, name); |
| 2526 | try dwarf.strx(di_nw, name); |
| 2480 | 2527 | try dwarf.refType(pt, di_nw, .fromInterned(vector_type.child)); |
| 2481 | 2528 | try dwarf.abbrevCode(di_nw, .array_len); |
| 2482 | 2529 | try dwarf.refType(pt, di_nw, .usize); |
| ... | ... | @@ -2490,13 +2537,13 @@ fn updateConstInner( |
| 2490 | 2537 | const name = try zcu.gpa.print("{f}", .{opt_ty.fmt(pt)}); |
| 2491 | 2538 | defer zcu.gpa.free(name); |
| 2492 | 2539 | try dwarf.abbrevCode(di_nw, .generated_union_type); |
| 2493 | | try dwarf.strp(&dwarf.debug_str, di_nw, name); |
| 2540 | try dwarf.strx(di_nw, name); |
| 2494 | 2541 | try di_w.writeUleb128(opt_ty.abiSize(zcu)); |
| 2495 | 2542 | try di_w.writeUleb128(opt_ty.abiAlignment(zcu).toByteUnits().?); |
| 2496 | 2543 | switch (opt_repr) { |
| 2497 | 2544 | .opv_null => { |
| 2498 | 2545 | try dwarf.abbrevCode(di_nw, .generated_field); |
| 2499 | | try dwarf.strp(&dwarf.debug_str, di_nw, "null"); |
| 2546 | try dwarf.strx(di_nw, "null"); |
| 2500 | 2547 | try dwarf.refType(pt, di_nw, .null); |
| 2501 | 2548 | try di_w.writeUleb128(0); |
| 2502 | 2549 | }, |
| ... | ... | @@ -2507,7 +2554,7 @@ fn updateConstInner( |
| 2507 | 2554 | { |
| 2508 | 2555 | try dwarf.secOffsetFinish(di_nw, discr_offset, di_nw.ni, di_w.end); |
| 2509 | 2556 | try dwarf.abbrevCode(di_nw, .generated_field); |
| 2510 | | try dwarf.strp(&dwarf.debug_str, di_nw, "has_value"); |
| 2557 | try dwarf.strx(di_nw, "has_value"); |
| 2511 | 2558 | switch (opt_repr) { |
| 2512 | 2559 | .opv_null => unreachable, |
| 2513 | 2560 | .unpacked => { |
| ... | ... | @@ -2535,7 +2582,7 @@ fn updateConstInner( |
| 2535 | 2582 | try di_w.writeByte(0); |
| 2536 | 2583 | { |
| 2537 | 2584 | try dwarf.abbrevCode(di_nw, .generated_field); |
| 2538 | | try dwarf.strp(&dwarf.debug_str, di_nw, "null"); |
| 2585 | try dwarf.strx(di_nw, "null"); |
| 2539 | 2586 | try dwarf.refType(pt, di_nw, .null); |
| 2540 | 2587 | try di_w.writeUleb128(0); |
| 2541 | 2588 | } |
| ... | ... | @@ -2544,7 +2591,7 @@ fn updateConstInner( |
| 2544 | 2591 | try dwarf.abbrevCode(di_nw, .tagged_union_default_field); |
| 2545 | 2592 | { |
| 2546 | 2593 | try dwarf.abbrevCode(di_nw, .generated_field); |
| 2547 | | try dwarf.strp(&dwarf.debug_str, di_nw, "?"); |
| 2594 | try dwarf.strx(di_nw, "?"); |
| 2548 | 2595 | try dwarf.refType(pt, di_nw, opt_child_ty); |
| 2549 | 2596 | try di_w.writeUleb128(0); |
| 2550 | 2597 | } |
| ... | ... | @@ -2571,7 +2618,7 @@ fn updateConstInner( |
| 2571 | 2618 | defer zcu.gpa.free(name); |
| 2572 | 2619 | |
| 2573 | 2620 | try dwarf.abbrevCode(di_nw, .generated_union_type); |
| 2574 | | try dwarf.strp(&dwarf.debug_str, di_nw, name); |
| 2621 | try dwarf.strx(di_nw, name); |
| 2575 | 2622 | if (error_union_type.error_set_type != .generic_poison_type and |
| 2576 | 2623 | error_union_type.payload_type != .generic_poison_type) |
| 2577 | 2624 | { |
| ... | ... | @@ -2588,7 +2635,7 @@ fn updateConstInner( |
| 2588 | 2635 | { |
| 2589 | 2636 | try dwarf.secOffsetFinish(di_nw, discr_offset, di_nw.ni, di_w.end); |
| 2590 | 2637 | try dwarf.abbrevCode(di_nw, .generated_field); |
| 2591 | | try dwarf.strp(&dwarf.debug_str, di_nw, "is_error"); |
| 2638 | try dwarf.strx(di_nw, "is_error"); |
| 2592 | 2639 | try dwarf.refType(pt, di_nw, try pt.intType(.unsigned, zcu.errorSetBits())); |
| 2593 | 2640 | try di_w.writeUleb128(eu_error_set_offset); |
| 2594 | 2641 | |
| ... | ... | @@ -2597,7 +2644,7 @@ fn updateConstInner( |
| 2597 | 2644 | try di_w.writeUleb128(0); |
| 2598 | 2645 | { |
| 2599 | 2646 | try dwarf.abbrevCode(di_nw, .generated_field); |
| 2600 | | try dwarf.strp(&dwarf.debug_str, di_nw, "value"); |
| 2647 | try dwarf.strx(di_nw, "value"); |
| 2601 | 2648 | try dwarf.refType(pt, di_nw, eu_payload_ty); |
| 2602 | 2649 | try di_w.writeUleb128(eu_payload_offset); |
| 2603 | 2650 | } |
| ... | ... | @@ -2606,7 +2653,7 @@ fn updateConstInner( |
| 2606 | 2653 | try dwarf.abbrevCode(di_nw, .tagged_union_default_field); |
| 2607 | 2654 | { |
| 2608 | 2655 | try dwarf.abbrevCode(di_nw, .generated_field); |
| 2609 | | try dwarf.strp(&dwarf.debug_str, di_nw, "error"); |
| 2656 | try dwarf.strx(di_nw, "error"); |
| 2610 | 2657 | try dwarf.refType(pt, di_nw, eu_error_set_ty); |
| 2611 | 2658 | try di_w.writeUleb128(eu_error_set_offset); |
| 2612 | 2659 | } |
| ... | ... | @@ -2638,7 +2685,7 @@ fn updateConstInner( |
| 2638 | 2685 | => { |
| 2639 | 2686 | const ty: Type = .fromInterned(val); |
| 2640 | 2687 | try dwarf.abbrevCode(di_nw, .numeric_type); |
| 2641 | | try dwarf.strp(&dwarf.debug_str, di_nw, @tagName(simple_type)); |
| 2688 | try dwarf.strx(di_nw, @tagName(simple_type)); |
| 2642 | 2689 | try di_w.writeByte(if (val == .bool_type) |
| 2643 | 2690 | DW.ATE.boolean |
| 2644 | 2691 | else if (ty.isRuntimeFloat()) |
| ... | ... | @@ -2655,7 +2702,7 @@ fn updateConstInner( |
| 2655 | 2702 | }, |
| 2656 | 2703 | .generic_poison => { |
| 2657 | 2704 | try dwarf.abbrevCode(di_nw, .void_type); |
| 2658 | | try dwarf.strp(&dwarf.debug_str, di_nw, "anytype"); |
| 2705 | try dwarf.strx(di_nw, "anytype"); |
| 2659 | 2706 | }, |
| 2660 | 2707 | .anyopaque, |
| 2661 | 2708 | .void, |
| ... | ... | @@ -2670,7 +2717,7 @@ fn updateConstInner( |
| 2670 | 2717 | const ty: Type = .fromInterned(val); |
| 2671 | 2718 | try dwarf.abbrevCode(di_nw, .void_type); |
| 2672 | 2719 | var name_buf: ["@TypeOf(undefined)".len]u8 = undefined; |
| 2673 | | try dwarf.strp(&dwarf.debug_str, di_nw, std.mem.print(&name_buf, "{f}", .{ |
| 2720 | try dwarf.strx(di_nw, std.mem.print(&name_buf, "{f}", .{ |
| 2674 | 2721 | ty.fmt(pt), |
| 2675 | 2722 | }) catch unreachable); |
| 2676 | 2723 | }, |
| ... | ... | @@ -2680,13 +2727,13 @@ fn updateConstInner( |
| 2680 | 2727 | .generated_enum_type |
| 2681 | 2728 | else |
| 2682 | 2729 | .generated_empty_enum_type); |
| 2683 | | try dwarf.strp(&dwarf.debug_str, di_nw, "anyerror"); |
| 2730 | try dwarf.strx(di_nw, "anyerror"); |
| 2684 | 2731 | try dwarf.refType(pt, di_nw, try pt.intType(.unsigned, zcu.errorSetBits())); |
| 2685 | 2732 | for (global_error_set_names, 1..) |name, value| { |
| 2686 | 2733 | try dwarf.abbrevCode(di_nw, .enum_field); |
| 2687 | 2734 | try di_w.writeUleb128(DW.FORM.udata); |
| 2688 | 2735 | try di_w.writeUleb128(value); |
| 2689 | | try dwarf.strp(&dwarf.debug_str, di_nw, name.toSlice(ip)); |
| 2736 | try dwarf.strx(di_nw, name.toSlice(ip)); |
| 2690 | 2737 | } |
| 2691 | 2738 | if (global_error_set_names.len > 0) try di_w.writeUleb128(@backingInt(AbbrevCode.null)); |
| 2692 | 2739 | }, |
| ... | ... | @@ -2698,11 +2745,11 @@ fn updateConstInner( |
| 2698 | 2745 | defer zcu.gpa.free(name); |
| 2699 | 2746 | if (tuple_type.types.len == 0) { |
| 2700 | 2747 | try dwarf.abbrevCode(di_nw, .generated_empty_struct_type); |
| 2701 | | try dwarf.strp(&dwarf.debug_str, di_nw, name); |
| 2748 | try dwarf.strx(di_nw, name); |
| 2702 | 2749 | try di_w.writeByte(@intFromBool(false)); |
| 2703 | 2750 | } else { |
| 2704 | 2751 | try dwarf.abbrevCode(di_nw, .generated_struct_type); |
| 2705 | | try dwarf.strp(&dwarf.debug_str, di_nw, name); |
| 2752 | try dwarf.strx(di_nw, name); |
| 2706 | 2753 | try di_w.writeUleb128(ty.abiSize(zcu)); |
| 2707 | 2754 | try di_w.writeUleb128(ty.abiAlignment(zcu).toByteUnits().?); |
| 2708 | 2755 | var field_byte_offset: u64 = 0; |
| ... | ... | @@ -2723,7 +2770,7 @@ fn updateConstInner( |
| 2723 | 2770 | }, |
| 2724 | 2771 | }); |
| 2725 | 2772 | var field_name_buf: [std.fmt.count("{d}", .{std.math.maxInt(u32)})]u8 = undefined; |
| 2726 | | try dwarf.strp(&dwarf.debug_str, di_nw, std.mem.print(&field_name_buf, "{d}", .{ |
| 2773 | try dwarf.strx(di_nw, std.mem.print(&field_name_buf, "{d}", .{ |
| 2727 | 2774 | field_index, |
| 2728 | 2775 | }) catch unreachable); |
| 2729 | 2776 | try dwarf.refType(pt, di_nw, field_ty); |
| ... | ... | @@ -2755,7 +2802,7 @@ fn updateConstInner( |
| 2755 | 2802 | .@"extern", .@"packed" => unreachable, |
| 2756 | 2803 | }); |
| 2757 | 2804 | try di_w.writeUleb128(@backingInt(fi)); |
| 2758 | | try dwarf.strp(&dwarf.debug_str, di_nw, loaded_struct.name.toSlice(ip)); |
| 2805 | try dwarf.strx(di_nw, loaded_struct.name.toSlice(ip)); |
| 2759 | 2806 | } else if (loaded_struct.captures.len > 0 or loaded_struct.is_reified) { |
| 2760 | 2807 | try dwarf.abbrevCode(di_nw, if (loaded_struct.captures.len > 0 or |
| 2761 | 2808 | loaded_struct.field_types.len > 0) switch (loaded_struct.layout) { |
| ... | ... | @@ -2788,7 +2835,7 @@ fn updateConstInner( |
| 2788 | 2835 | try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian); |
| 2789 | 2836 | try di_w.writeUleb128(decl.src_column + 1); |
| 2790 | 2837 | try di_w.writeByte(if (decl.is_pub) DW.ACCESS.public else DW.ACCESS.private); |
| 2791 | | try dwarf.strp(&dwarf.debug_str, di_nw, name_nav.name.toSlice(ip)); |
| 2838 | try dwarf.strx(di_nw, name_nav.name.toSlice(ip)); |
| 2792 | 2839 | } else { |
| 2793 | 2840 | const decl = zf.zir.?.getStructDecl(src_inst.inst); |
| 2794 | 2841 | const parent_ni = try dwarf.getConstDecl(pt, ip.namespacePtr( |
| ... | ... | @@ -2806,7 +2853,7 @@ fn updateConstInner( |
| 2806 | 2853 | try dwarf.secOffset(di_nw, parent_ni, 0); |
| 2807 | 2854 | try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian); |
| 2808 | 2855 | try di_w.writeUleb128(decl.src_column + 1); |
| 2809 | | try dwarf.strp(&dwarf.debug_str, di_nw, loaded_struct.name.toSlice(ip)); |
| 2856 | try dwarf.strx(di_nw, loaded_struct.name.toSlice(ip)); |
| 2810 | 2857 | } |
| 2811 | 2858 | switch (loaded_struct.layout) { |
| 2812 | 2859 | .auto, .@"extern" => { |
| ... | ... | @@ -2846,8 +2893,7 @@ fn updateConstInner( |
| 2846 | 2893 | .partially_comptime => .field_default_partially_comptime, |
| 2847 | 2894 | .fully_comptime => .field_default_fully_comptime, |
| 2848 | 2895 | }); |
| 2849 | | try dwarf.strp( |
| 2850 | | &dwarf.debug_str, |
| 2896 | try dwarf.strx( |
| 2851 | 2897 | di_nw, |
| 2852 | 2898 | loaded_struct.field_names.get(ip)[field_index].toSlice(ip), |
| 2853 | 2899 | ); |
| ... | ... | @@ -2871,8 +2917,7 @@ fn updateConstInner( |
| 2871 | 2917 | var field_bit_offset: u16 = 0; |
| 2872 | 2918 | for (0..loaded_struct.field_types.len) |field_index| { |
| 2873 | 2919 | try dwarf.abbrevCode(di_nw, .packed_field); |
| 2874 | | try dwarf.strp( |
| 2875 | | &dwarf.debug_str, |
| 2920 | try dwarf.strx( |
| 2876 | 2921 | di_nw, |
| 2877 | 2922 | loaded_struct.field_names.get(ip)[field_index].toSlice(ip), |
| 2878 | 2923 | ); |
| ... | ... | @@ -2924,7 +2969,7 @@ fn updateConstInner( |
| 2924 | 2969 | try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian); |
| 2925 | 2970 | try di_w.writeUleb128(decl.src_column + 1); |
| 2926 | 2971 | try di_w.writeByte(if (decl.is_pub) DW.ACCESS.public else DW.ACCESS.private); |
| 2927 | | try dwarf.strp(&dwarf.debug_str, di_nw, name_nav.name.toSlice(ip)); |
| 2972 | try dwarf.strx(di_nw, name_nav.name.toSlice(ip)); |
| 2928 | 2973 | } else { |
| 2929 | 2974 | const decl = zf.zir.?.getUnionDecl(loaded_union.zir_index.resolve(ip).?); |
| 2930 | 2975 | const parent_ni = try dwarf.getConstDecl(pt, ip.namespacePtr( |
| ... | ... | @@ -2942,7 +2987,7 @@ fn updateConstInner( |
| 2942 | 2987 | try dwarf.secOffset(di_nw, parent_ni, 0); |
| 2943 | 2988 | try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian); |
| 2944 | 2989 | try di_w.writeUleb128(decl.src_column + 1); |
| 2945 | | try dwarf.strp(&dwarf.debug_str, di_nw, loaded_union.name.toSlice(ip)); |
| 2990 | try dwarf.strx(di_nw, loaded_union.name.toSlice(ip)); |
| 2946 | 2991 | } |
| 2947 | 2992 | switch (loaded_union.layout) { |
| 2948 | 2993 | .auto, .@"extern" => { |
| ... | ... | @@ -2957,7 +3002,7 @@ fn updateConstInner( |
| 2957 | 3002 | { |
| 2958 | 3003 | try dwarf.secOffsetFinish(di_nw, discr_offset, di_nw.ni, di_w.end); |
| 2959 | 3004 | try dwarf.abbrevCode(di_nw, .generated_field); |
| 2960 | | try dwarf.strp(&dwarf.debug_str, di_nw, "tag"); |
| 3005 | try dwarf.strx(di_nw, "tag"); |
| 2961 | 3006 | try dwarf.refType(pt, di_nw, .fromInterned(loaded_union.enum_tag_type)); |
| 2962 | 3007 | try di_w.writeUleb128(union_layout.tagOffset()); |
| 2963 | 3008 | |
| ... | ... | @@ -2966,8 +3011,7 @@ fn updateConstInner( |
| 2966 | 3011 | try dwarf.enumConstValue(di_w, loaded_tag, field_index); |
| 2967 | 3012 | { |
| 2968 | 3013 | try dwarf.abbrevCode(di_nw, .field); |
| 2969 | | try dwarf.strp( |
| 2970 | | &dwarf.debug_str, |
| 3014 | try dwarf.strx( |
| 2971 | 3015 | di_nw, |
| 2972 | 3016 | loaded_tag.field_names.get(ip)[field_index].toSlice(ip), |
| 2973 | 3017 | ); |
| ... | ... | @@ -2989,8 +3033,7 @@ fn updateConstInner( |
| 2989 | 3033 | try di_w.writeUleb128(@backingInt(AbbrevCode.null)); |
| 2990 | 3034 | } else for (0..loaded_union.field_types.len) |field_index| { |
| 2991 | 3035 | try dwarf.abbrevCode(di_nw, .field); |
| 2992 | | try dwarf.strp( |
| 2993 | | &dwarf.debug_str, |
| 3036 | try dwarf.strx( |
| 2994 | 3037 | di_nw, |
| 2995 | 3038 | loaded_tag.field_names.get(ip)[field_index].toSlice(ip), |
| 2996 | 3039 | ); |
| ... | ... | @@ -3011,8 +3054,7 @@ fn updateConstInner( |
| 3011 | 3054 | try dwarf.refType(pt, di_nw, .fromInterned(loaded_union.packed_backing_int_type)); |
| 3012 | 3055 | for (0..loaded_union.field_types.len) |field_index| { |
| 3013 | 3056 | try dwarf.abbrevCode(di_nw, .packed_field); |
| 3014 | | try dwarf.strp( |
| 3015 | | &dwarf.debug_str, |
| 3057 | try dwarf.strx( |
| 3016 | 3058 | di_nw, |
| 3017 | 3059 | loaded_tag.field_names.get(ip)[field_index].toSlice(ip), |
| 3018 | 3060 | ); |
| ... | ... | @@ -3057,7 +3099,7 @@ fn updateConstInner( |
| 3057 | 3099 | try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian); |
| 3058 | 3100 | try di_w.writeUleb128(decl.src_column + 1); |
| 3059 | 3101 | try di_w.writeByte(if (decl.is_pub) DW.ACCESS.public else DW.ACCESS.private); |
| 3060 | | try dwarf.strp(&dwarf.debug_str, di_nw, name_nav.name.toSlice(ip)); |
| 3102 | try dwarf.strx(di_nw, name_nav.name.toSlice(ip)); |
| 3061 | 3103 | } else { |
| 3062 | 3104 | const decl = zir.getEnumDecl(loaded_enum.zir_index.unwrap().?.resolve(ip).?); |
| 3063 | 3105 | const parent_ni = try dwarf.getConstDecl(pt, ip.namespacePtr( |
| ... | ... | @@ -3070,7 +3112,7 @@ fn updateConstInner( |
| 3070 | 3112 | try dwarf.secOffset(di_nw, parent_ni, 0); |
| 3071 | 3113 | try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian); |
| 3072 | 3114 | try di_w.writeUleb128(decl.src_column + 1); |
| 3073 | | try dwarf.strp(&dwarf.debug_str, di_nw, loaded_enum.name.toSlice(ip)); |
| 3115 | try dwarf.strx(di_nw, loaded_enum.name.toSlice(ip)); |
| 3074 | 3116 | } |
| 3075 | 3117 | }, |
| 3076 | 3118 | else => { |
| ... | ... | @@ -3078,7 +3120,7 @@ fn updateConstInner( |
| 3078 | 3120 | .generated_enum_type |
| 3079 | 3121 | else |
| 3080 | 3122 | .generated_empty_enum_type); |
| 3081 | | try dwarf.strp(&dwarf.debug_str, di_nw, loaded_enum.fqn.toSlice(ip)); |
| 3123 | try dwarf.strx(di_nw, loaded_enum.fqn.toSlice(ip)); |
| 3082 | 3124 | }, |
| 3083 | 3125 | } |
| 3084 | 3126 | try dwarf.refType(pt, di_nw, .fromInterned(loaded_enum.int_tag_type)); |
| ... | ... | @@ -3086,11 +3128,7 @@ fn updateConstInner( |
| 3086 | 3128 | for (0..loaded_enum.field_names.len) |field_index| { |
| 3087 | 3129 | try dwarf.abbrevCode(di_nw, .enum_field); |
| 3088 | 3130 | try dwarf.enumConstValue(di_w, loaded_enum, field_index); |
| 3089 | | try dwarf.strp( |
| 3090 | | &dwarf.debug_str, |
| 3091 | | di_nw, |
| 3092 | | loaded_enum.field_names.get(ip)[field_index].toSlice(ip), |
| 3093 | | ); |
| 3131 | try dwarf.strx(di_nw, loaded_enum.field_names.get(ip)[field_index].toSlice(ip)); |
| 3094 | 3132 | } |
| 3095 | 3133 | if (loaded_enum.captures.len > 0 or loaded_enum.field_names.len > 0) |
| 3096 | 3134 | try di_w.writeUleb128(@backingInt(AbbrevCode.null)); |
| ... | ... | @@ -3103,7 +3141,7 @@ fn updateConstInner( |
| 3103 | 3141 | const name = try zcu.gpa.print("{f}", .{Type.fromInterned(val).fmt(pt)}); |
| 3104 | 3142 | defer zcu.gpa.free(name); |
| 3105 | 3143 | try dwarf.abbrevCode(di_nw, if (is_empty) .empty_func_type else .func_type); |
| 3106 | | try dwarf.strp(&dwarf.debug_str, di_nw, name); |
| 3144 | try dwarf.strx(di_nw, name); |
| 3107 | 3145 | const cc: DW.CC = cc: { |
| 3108 | 3146 | if (zcu.getTarget().cCallingConvention()) |cc| { |
| 3109 | 3147 | if (@as(std.lang.CallingConvention.Tag, cc) == func_type.cc) { |
| ... | ... | @@ -3191,14 +3229,14 @@ fn updateConstInner( |
| 3191 | 3229 | di_nw, |
| 3192 | 3230 | if (error_set_type.names.len > 0) .generated_enum_type else .generated_empty_enum_type, |
| 3193 | 3231 | ); |
| 3194 | | try dwarf.strp(&dwarf.debug_str, di_nw, name); |
| 3232 | try dwarf.strx(di_nw, name); |
| 3195 | 3233 | try dwarf.refType(pt, di_nw, try pt.intType(.unsigned, zcu.errorSetBits())); |
| 3196 | 3234 | for (0..error_set_type.names.len) |field_index| { |
| 3197 | 3235 | const field_name = error_set_type.names.get(ip)[field_index]; |
| 3198 | 3236 | try dwarf.abbrevCode(di_nw, .enum_field); |
| 3199 | 3237 | try di_w.writeUleb128(DW.FORM.udata); |
| 3200 | 3238 | try di_w.writeUleb128(ip.getErrorValueIfExists(field_name).?); |
| 3201 | | try dwarf.strp(&dwarf.debug_str, di_nw, field_name.toSlice(ip)); |
| 3239 | try dwarf.strx(di_nw, field_name.toSlice(ip)); |
| 3202 | 3240 | } |
| 3203 | 3241 | if (error_set_type.names.len > 0) try di_w.writeUleb128(@backingInt(AbbrevCode.null)); |
| 3204 | 3242 | }, |
| ... | ... | @@ -3206,7 +3244,7 @@ fn updateConstInner( |
| 3206 | 3244 | const name = try zcu.gpa.print("{f}", .{Type.fromInterned(val).fmt(pt)}); |
| 3207 | 3245 | defer zcu.gpa.free(name); |
| 3208 | 3246 | try dwarf.abbrevCode(di_nw, .inferred_error_set_type); |
| 3209 | | try dwarf.strp(&dwarf.debug_str, di_nw, name); |
| 3247 | try dwarf.strx(di_nw, name); |
| 3210 | 3248 | try dwarf.refType(pt, di_nw, switch (ies: { |
| 3211 | 3249 | const fi = dwarf.getFuncIfExists(ip.indexToKey(func).func.owner_nav) orelse |
| 3212 | 3250 | break :ies .none; |
| ... | ... | @@ -3248,7 +3286,7 @@ fn updateConstInner( |
| 3248 | 3286 | try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian); |
| 3249 | 3287 | try di_w.writeUleb128(decl.src_column + 1); |
| 3250 | 3288 | try di_w.writeByte(if (decl.is_pub) DW.ACCESS.public else DW.ACCESS.private); |
| 3251 | | try dwarf.strp(&dwarf.debug_str, di_nw, nav.name.toSlice(ip)); |
| 3289 | try dwarf.strx(di_nw, nav.name.toSlice(ip)); |
| 3252 | 3290 | try dwarf.refType(pt, di_nw, .fromInterned(func_type.return_type)); |
| 3253 | 3291 | for ( |
| 3254 | 3292 | zir.getParamBody(func.zir_body_inst.resolve(ip).?)[0..func_type.param_types.len], |
| ... | ... | @@ -3258,7 +3296,7 @@ fn updateConstInner( |
| 3258 | 3296 | .empty => try dwarf.abbrevCode(di_nw, .unnamed_param), |
| 3259 | 3297 | else => |param_name| { |
| 3260 | 3298 | try dwarf.abbrevCode(di_nw, .param); |
| 3261 | | try dwarf.strp(&dwarf.debug_str, di_nw, zir.nullTerminatedString(param_name)); |
| 3299 | try dwarf.strx(di_nw, zir.nullTerminatedString(param_name)); |
| 3262 | 3300 | }, |
| 3263 | 3301 | } |
| 3264 | 3302 | try dwarf.refType(pt, di_nw, .fromInterned(param_ty)); |
| ... | ... | @@ -3313,7 +3351,7 @@ fn updateConstInner( |
| 3313 | 3351 | } |
| 3314 | 3352 | { |
| 3315 | 3353 | try dwarf.abbrevCode(di_nw, .comptime_value_field_runtime); |
| 3316 | | try dwarf.strp(&dwarf.debug_str, di_nw, "is_error"); |
| 3354 | try dwarf.strx(di_nw, "is_error"); |
| 3317 | 3355 | try di_w.writeUleb128(err_bytes.len); |
| 3318 | 3356 | try di_w.writeAll(err_bytes); |
| 3319 | 3357 | } |
| ... | ... | @@ -3328,7 +3366,7 @@ fn updateConstInner( |
| 3328 | 3366 | .comptime_value_field_runtime |
| 3329 | 3367 | else |
| 3330 | 3368 | break :payload_field); |
| 3331 | | try dwarf.strp(&dwarf.debug_str, di_nw, "value"); |
| 3369 | try dwarf.strx(di_nw, "value"); |
| 3332 | 3370 | if (payload_class.comptimeOnly()) |
| 3333 | 3371 | try dwarf.refConst(pt, di_nw, .fromInterned(payload_val)) |
| 3334 | 3372 | else if (payload_class.hasRuntimeBits()) |
| ... | ... | @@ -3339,7 +3377,7 @@ fn updateConstInner( |
| 3339 | 3377 | } |
| 3340 | 3378 | { |
| 3341 | 3379 | try dwarf.abbrevCode(di_nw, .comptime_value_field_runtime); |
| 3342 | | try dwarf.strp(&dwarf.debug_str, di_nw, "error"); |
| 3380 | try dwarf.strx(di_nw, "error"); |
| 3343 | 3381 | try di_w.writeUleb128(err_bytes.len); |
| 3344 | 3382 | try di_w.writeAll(err_bytes); |
| 3345 | 3383 | } |
| ... | ... | @@ -3348,8 +3386,8 @@ fn updateConstInner( |
| 3348 | 3386 | .enum_literal => |enum_literal| { |
| 3349 | 3387 | try dwarf.abbrevCode(di_nw, .comptime_value); |
| 3350 | 3388 | try dwarf.refType(pt, di_nw, .enum_literal); |
| 3351 | | try di_w.writeUleb128(DW.FORM.strp); |
| 3352 | | try dwarf.strp(&dwarf.debug_str, di_nw, enum_literal.toSlice(ip)); |
| 3389 | try di_w.writeUleb128(DW.FORM.strx); |
| 3390 | try dwarf.strx(di_nw, enum_literal.toSlice(ip)); |
| 3353 | 3391 | }, |
| 3354 | 3392 | .enum_tag => |enum_tag| { |
| 3355 | 3393 | var big_int_space: Value.BigIntSpace = undefined; |
| ... | ... | @@ -3493,11 +3531,11 @@ fn updateConstInner( |
| 3493 | 3531 | }, |
| 3494 | 3532 | .field => |field| { |
| 3495 | 3533 | try dwarf.abbrevCode(di_nw, .access); |
| 3496 | | try dwarf.strp(&dwarf.debug_str, di_nw, field.toSlice(ip)); |
| 3534 | try dwarf.strx(di_nw, field.toSlice(ip)); |
| 3497 | 3535 | }, |
| 3498 | 3536 | .synthetic_field => |field| { |
| 3499 | 3537 | try dwarf.abbrevCode(di_nw, .access); |
| 3500 | | try dwarf.strp(&dwarf.debug_str, di_nw, field); |
| 3538 | try dwarf.strx(di_nw, field); |
| 3501 | 3539 | }, |
| 3502 | 3540 | .tuple_index => |index| { |
| 3503 | 3541 | try dwarf.abbrevCode(di_nw, .access); |
| ... | ... | @@ -3505,7 +3543,7 @@ fn updateConstInner( |
| 3505 | 3543 | undefined; |
| 3506 | 3544 | const field_name = std.mem.print(&field_name_buf, "{d}", .{index}) catch |
| 3507 | 3545 | unreachable; |
| 3508 | | try dwarf.strp(&dwarf.debug_str, di_nw, field_name); |
| 3546 | try dwarf.strx(di_nw, field_name); |
| 3509 | 3547 | }, |
| 3510 | 3548 | }; |
| 3511 | 3549 | try di_w.writeUleb128(@backingInt(AbbrevCode.null)); |
| ... | ... | @@ -3516,12 +3554,12 @@ fn updateConstInner( |
| 3516 | 3554 | try dwarf.refType(pt, di_nw, .fromInterned(slice.ty)); |
| 3517 | 3555 | { |
| 3518 | 3556 | try dwarf.abbrevCode(di_nw, .comptime_value_field_comptime); |
| 3519 | | try dwarf.strp(&dwarf.debug_str, di_nw, "ptr"); |
| 3557 | try dwarf.strx(di_nw, "ptr"); |
| 3520 | 3558 | try dwarf.refConst(pt, di_nw, .fromInterned(slice.ptr)); |
| 3521 | 3559 | } |
| 3522 | 3560 | { |
| 3523 | 3561 | try dwarf.abbrevCode(di_nw, .comptime_value_field_runtime); |
| 3524 | | try dwarf.strp(&dwarf.debug_str, di_nw, "len"); |
| 3562 | try dwarf.strx(di_nw, "len"); |
| 3525 | 3563 | try dwarf.blockConst(pt, di_nw, .fromInterned(slice.len)); |
| 3526 | 3564 | } |
| 3527 | 3565 | try di_w.writeUleb128(@backingInt(AbbrevCode.null)); |
| ... | ... | @@ -3532,7 +3570,7 @@ fn updateConstInner( |
| 3532 | 3570 | try dwarf.refType(pt, di_nw, .fromInterned(opt.ty)); |
| 3533 | 3571 | { |
| 3534 | 3572 | try dwarf.abbrevCode(di_nw, .comptime_value_field_runtime); |
| 3535 | | try dwarf.strp(&dwarf.debug_str, di_nw, "has_value"); |
| 3573 | try dwarf.strx(di_nw, "has_value"); |
| 3536 | 3574 | switch (optRepr(opt_child_ty, zcu)) { |
| 3537 | 3575 | .opv_null => try di_w.writeUleb128(0), |
| 3538 | 3576 | .unpacked => try dwarf.blockConst(pt, di_nw, .makeBool(opt.val != .none)), |
| ... | ... | @@ -3547,7 +3585,7 @@ fn updateConstInner( |
| 3547 | 3585 | .comptime_value_field_runtime |
| 3548 | 3586 | else |
| 3549 | 3587 | break :child_field); |
| 3550 | | try dwarf.strp(&dwarf.debug_str, di_nw, "?"); |
| 3588 | try dwarf.strx(di_nw, "?"); |
| 3551 | 3589 | if (opt_child_class.comptimeOnly()) |
| 3552 | 3590 | try dwarf.refConst(pt, di_nw, .fromInterned(opt.val)) |
| 3553 | 3591 | else if (opt_child_class.hasRuntimeBits()) |
| ... | ... | @@ -3575,8 +3613,7 @@ fn updateConstInner( |
| 3575 | 3613 | .comptime_value_field_runtime |
| 3576 | 3614 | else |
| 3577 | 3615 | continue); |
| 3578 | | try dwarf.strp( |
| 3579 | | &dwarf.debug_str, |
| 3616 | try dwarf.strx( |
| 3580 | 3617 | di_nw, |
| 3581 | 3618 | loaded_struct.field_names.get(ip)[field_index].toSlice(ip), |
| 3582 | 3619 | ); |
| ... | ... | @@ -3608,7 +3645,7 @@ fn updateConstInner( |
| 3608 | 3645 | undefined; |
| 3609 | 3646 | const field_name = std.mem.print(&field_name_buf, "{d}", .{field_index}) catch |
| 3610 | 3647 | unreachable; |
| 3611 | | try dwarf.strp(&dwarf.debug_str, di_nw, field_name); |
| 3648 | try dwarf.strx(di_nw, field_name); |
| 3612 | 3649 | } |
| 3613 | 3650 | const field_value: Value = .fromInterned(switch (aggregate.storage) { |
| 3614 | 3651 | .bytes => unreachable, |
| ... | ... | @@ -3665,7 +3702,7 @@ fn updateConstInner( |
| 3665 | 3702 | .comptime_value_field_runtime |
| 3666 | 3703 | else |
| 3667 | 3704 | .access); |
| 3668 | | try dwarf.strp(&dwarf.debug_str, di_nw, field_name.toSlice(ip)); |
| 3705 | try dwarf.strx(di_nw, field_name.toSlice(ip)); |
| 3669 | 3706 | if (field_class.comptimeOnly()) |
| 3670 | 3707 | try dwarf.refConst(pt, di_nw, .fromInterned(un.val)) |
| 3671 | 3708 | else if (field_class.hasRuntimeBits()) |
| ... | ... | @@ -3727,7 +3764,7 @@ fn updateConstIncompleteInner( |
| 3727 | 3764 | _, const fi = try ui.get(dwarf).getFile(zcu.gpa, ui, src_inst.file); |
| 3728 | 3765 | try dwarf.abbrevCode(di_nw, .empty_file); |
| 3729 | 3766 | try di_w.writeUleb128(@backingInt(fi)); |
| 3730 | | try dwarf.strp(&dwarf.debug_str, di_nw, loaded_struct.name.toSlice(ip)); |
| 3767 | try dwarf.strx(di_nw, loaded_struct.name.toSlice(ip)); |
| 3731 | 3768 | try di_w.writeByte(@intFromBool(true)); |
| 3732 | 3769 | break :done; |
| 3733 | 3770 | }, |
| ... | ... | @@ -3798,7 +3835,7 @@ fn updateConstIncompleteInner( |
| 3798 | 3835 | const loaded_enum = ip.loadEnumType(val); |
| 3799 | 3836 | const zir_index = loaded_enum.zir_index.unwrap() orelse { |
| 3800 | 3837 | try dwarf.abbrevCode(di_nw, .generated_empty_struct_type); |
| 3801 | | try dwarf.strp(&dwarf.debug_str, di_nw, loaded_enum.name.toSlice(ip)); |
| 3838 | try dwarf.strx(di_nw, loaded_enum.name.toSlice(ip)); |
| 3802 | 3839 | try di_w.writeByte(@intFromBool(true)); |
| 3803 | 3840 | break :done; |
| 3804 | 3841 | }; |
| ... | ... | @@ -3858,7 +3895,7 @@ fn updateConstIncompleteInner( |
| 3858 | 3895 | const name = try zcu.gpa.print("{f}", .{Type.fromInterned(val).fmt(pt)}); |
| 3859 | 3896 | defer zcu.gpa.free(name); |
| 3860 | 3897 | try dwarf.abbrevCode(di_nw, .generated_empty_struct_type); |
| 3861 | | try dwarf.strp(&dwarf.debug_str, di_nw, name); |
| 3898 | try dwarf.strx(di_nw, name); |
| 3862 | 3899 | try di_w.writeByte(@intFromBool(true)); |
| 3863 | 3900 | }, |
| 3864 | 3901 | else => |ty| { |
| ... | ... | @@ -3899,7 +3936,7 @@ fn updateConstIncompleteInner( |
| 3899 | 3936 | try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian); |
| 3900 | 3937 | try di_w.writeUleb128(decl.src_column + 1); |
| 3901 | 3938 | try di_w.writeByte(if (decl.is_pub) DW.ACCESS.public else DW.ACCESS.private); |
| 3902 | | try dwarf.strp(&dwarf.debug_str, di_nw, name_nav.name.toSlice(ip)); |
| 3939 | try dwarf.strx(di_nw, name_nav.name.toSlice(ip)); |
| 3903 | 3940 | } else { |
| 3904 | 3941 | const parent_ni = try dwarf.getConstDecl(pt, ip.namespacePtr( |
| 3905 | 3942 | ip.namespacePtr(namespace).parent.unwrap().?, |
| ... | ... | @@ -3916,7 +3953,7 @@ fn updateConstIncompleteInner( |
| 3916 | 3953 | try dwarf.secOffset(di_nw, parent_ni, 0); |
| 3917 | 3954 | try di_w.writeInt(u32, src_line + 1, dwarf.endian); |
| 3918 | 3955 | try di_w.writeUleb128(src_column + 1); |
| 3919 | | try dwarf.strp(&dwarf.debug_str, di_nw, name.toSlice(ip)); |
| 3956 | try dwarf.strx(di_nw, name.toSlice(ip)); |
| 3920 | 3957 | } |
| 3921 | 3958 | try dwarf.genCaptures(pt, di_nw, captures); |
| 3922 | 3959 | if (captures.len > 0) try di_w.writeByte(@backingInt(AbbrevCode.null)); |
| ... | ... | @@ -4169,7 +4206,7 @@ fn genDeclInner( |
| 4169 | 4206 | try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian); |
| 4170 | 4207 | try di_w.writeUleb128(decl.src_column + 1); |
| 4171 | 4208 | try di_w.writeByte(if (decl.is_pub) DW.ACCESS.public else DW.ACCESS.private); |
| 4172 | | try dwarf.strp(&dwarf.debug_str, di_nw, name.toSlice(ip)); |
| 4209 | try dwarf.strx(di_nw, name.toSlice(ip)); |
| 4173 | 4210 | } else { |
| 4174 | 4211 | const parent_ni = try dwarf.getConstDecl(pt, ip.namespacePtr( |
| 4175 | 4212 | ip.namespacePtr(namespace).parent.unwrap().?, |
| ... | ... | @@ -4186,21 +4223,20 @@ fn genDeclInner( |
| 4186 | 4223 | try dwarf.secOffset(di_nw, parent_ni, 0); |
| 4187 | 4224 | try di_w.writeInt(u32, src_line + 1, dwarf.endian); |
| 4188 | 4225 | try di_w.writeUleb128(src_column + 1); |
| 4189 | | try dwarf.strp(&dwarf.debug_str, di_nw, name.toSlice(ip)); |
| 4226 | try dwarf.strx(di_nw, name.toSlice(ip)); |
| 4190 | 4227 | } |
| 4191 | 4228 | for (capture_names, captures.get(ip)) |capture_name, capture| { |
| 4192 | 4229 | try dwarf.abbrevCode(di_nw, .capture_specification); |
| 4193 | 4230 | switch (capture.unwrap()) { |
| 4194 | | .@"comptime", .runtime, .nav_val => try dwarf.strp( |
| 4195 | | &dwarf.debug_str, |
| 4196 | | di_nw, |
| 4197 | | zir.nullTerminatedString(capture_name), |
| 4198 | | ), |
| 4231 | .@"comptime", |
| 4232 | .runtime, |
| 4233 | .nav_val, |
| 4234 | => try dwarf.strx(di_nw, zir.nullTerminatedString(capture_name)), |
| 4199 | 4235 | .nav_ref => { |
| 4200 | 4236 | const capture_name_slice = |
| 4201 | 4237 | try zcu.gpa.print("&{s}", .{zir.nullTerminatedString(capture_name)}); |
| 4202 | 4238 | defer zcu.gpa.free(capture_name_slice); |
| 4203 | | try dwarf.strp(&dwarf.debug_str, di_nw, capture_name_slice); |
| 4239 | try dwarf.strx(di_nw, capture_name_slice); |
| 4204 | 4240 | }, |
| 4205 | 4241 | } |
| 4206 | 4242 | } |
| ... | ... | @@ -4225,7 +4261,7 @@ fn genDeclInner( |
| 4225 | 4261 | try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian); |
| 4226 | 4262 | try di_w.writeUleb128(decl.src_column + 1); |
| 4227 | 4263 | try di_w.writeByte(if (decl.is_pub) DW.ACCESS.public else DW.ACCESS.private); |
| 4228 | | try dwarf.strp(&dwarf.debug_str, di_nw, nav.name.toSlice(ip)); |
| 4264 | try dwarf.strx(di_nw, nav.name.toSlice(ip)); |
| 4229 | 4265 | }, |
| 4230 | 4266 | } |
| 4231 | 4267 | try dwarf.genDebugInfoPadding(di_w, di_w.unusedCapacityLen()); |
| ... | ... | @@ -4310,7 +4346,7 @@ fn genDebugAbbrev( |
| 4310 | 4346 | dwarf.debug_abbrev.end = da_w.end; |
| 4311 | 4347 | } |
| 4312 | 4348 | |
| 4313 | | pub fn secOffsetSize(dwarf: *Dwarf) usize { |
| 4349 | fn secOffsetSize(dwarf: *Dwarf) usize { |
| 4314 | 4350 | return switch (dwarf.format) { |
| 4315 | 4351 | .@"32" => 4, |
| 4316 | 4352 | .@"64" => 8, |
| ... | ... | @@ -4487,6 +4523,30 @@ fn strp(dwarf: *Dwarf, s: *Str, nw: *link.MappedFile.Node.Writer, str: []const u |
| 4487 | 4523 | }); |
| 4488 | 4524 | } |
| 4489 | 4525 | |
| 4526 | fn strx(dwarf: *Dwarf, nw: *link.MappedFile.Node.Writer, str: []const u8) link.EmitError!void { |
| 4527 | try nw.interface.writeUleb128(try dwarf.debug_str_offsets.get(dwarf, &dwarf.debug_str, nw.mf, str)); |
| 4528 | } |
| 4529 | fn strx1(dwarf: *Dwarf, nw: *link.MappedFile.Node.Writer, str: []const u8) link.EmitError!void { |
| 4530 | try nw.interface.writeByte(@intCast( |
| 4531 | try dwarf.debug_str_offsets.get(dwarf, &dwarf.debug_str, nw.mf, str), |
| 4532 | )); |
| 4533 | } |
| 4534 | fn strx2(dwarf: *Dwarf, nw: *link.MappedFile.Node.Writer, str: []const u8) link.EmitError!void { |
| 4535 | try nw.interface.writeInt(u16, @intCast( |
| 4536 | try dwarf.debug_str_offsets.get(dwarf, &dwarf.debug_str, nw.mf, str), |
| 4537 | ), dwarf.endian); |
| 4538 | } |
| 4539 | fn strx3(dwarf: *Dwarf, nw: *link.MappedFile.Node.Writer, str: []const u8) link.EmitError!void { |
| 4540 | try nw.interface.writeInt(u24, @intCast( |
| 4541 | try dwarf.debug_str_offsets.get(dwarf, &dwarf.debug_str, nw.mf, str), |
| 4542 | ), dwarf.endian); |
| 4543 | } |
| 4544 | fn strx4(dwarf: *Dwarf, nw: *link.MappedFile.Node.Writer, str: []const u8) link.EmitError!void { |
| 4545 | try nw.interface.writeInt(u32, @intCast( |
| 4546 | try dwarf.debug_str_offsets.get(dwarf, &dwarf.debug_str, nw.mf, str), |
| 4547 | ), dwarf.endian); |
| 4548 | } |
| 4549 | |
| 4490 | 4550 | fn reportWriteError(dwarf: *Dwarf, nw: *const link.MappedFile.Node.Writer) link.Error { |
| 4491 | 4551 | switch (nw.err.?) { |
| 4492 | 4552 | else => |e| return e, |
| ... | ... | @@ -4621,9 +4681,6 @@ pub const AbbrevCode = enum { |
| 4621 | 4681 | decl_instance_func_generic, |
| 4622 | 4682 | // the rest are unrestricted other than empty variants must not be longer |
| 4623 | 4683 | // than the non-empty variant, and so should appear first |
| 4624 | | compile_unit, |
| 4625 | | module, |
| 4626 | | module_dependency, |
| 4627 | 4684 | empty_file, |
| 4628 | 4685 | file, |
| 4629 | 4686 | access, |
| ... | ... | @@ -4704,6 +4761,10 @@ pub const AbbrevCode = enum { |
| 4704 | 4761 | comptime_value_field_comptime, |
| 4705 | 4762 | comptime_value_elem_runtime, |
| 4706 | 4763 | comptime_value_elem_comptime, |
| 4764 | // low-frequency should appear last |
| 4765 | compile_unit, |
| 4766 | module, |
| 4767 | module_dependency, |
| 4707 | 4768 | |
| 4708 | 4769 | const decl_size = uleb128Size(@backingInt(AbbrevCode.decl_func_generic)); |
| 4709 | 4770 | comptime { |
| ... | ... | @@ -4721,13 +4782,13 @@ pub const AbbrevCode = enum { |
| 4721 | 4782 | .{ .decl_line, .data4 }, |
| 4722 | 4783 | .{ .decl_column, .udata }, |
| 4723 | 4784 | .{ .accessibility, .data1 }, |
| 4724 | | .{ .name, .strp }, |
| 4785 | .{ .name, .strx }, |
| 4725 | 4786 | }; |
| 4726 | 4787 | const type_decl_attrs = &[_]Attr{ |
| 4727 | 4788 | .{ .ZIG_parent, .ref_addr }, |
| 4728 | 4789 | .{ .decl_line, .data4 }, |
| 4729 | 4790 | .{ .decl_column, .udata }, |
| 4730 | | .{ .name, .strp }, |
| 4791 | .{ .name, .strx }, |
| 4731 | 4792 | }; |
| 4732 | 4793 | const decl_specification_attrs = decl_attrs ++ &[_]Attr{ |
| 4733 | 4794 | .{ .declaration, .flag_present }, |
| ... | ... | @@ -4959,7 +5020,7 @@ pub const AbbrevCode = enum { |
| 4959 | 5020 | .decl_const = .{ |
| 4960 | 5021 | .tag = .constant, |
| 4961 | 5022 | .attrs = decl_attrs ++ .{ |
| 4962 | | .{ .linkage_name, .strp }, |
| 5023 | .{ .linkage_name, .strx }, |
| 4963 | 5024 | .{ .type, .ref_addr }, |
| 4964 | 5025 | .{ .alignment, .udata }, |
| 4965 | 5026 | .{ .external, .flag }, |
| ... | ... | @@ -4968,7 +5029,7 @@ pub const AbbrevCode = enum { |
| 4968 | 5029 | .decl_const_fully_runtime = .{ |
| 4969 | 5030 | .tag = .constant, |
| 4970 | 5031 | .attrs = decl_attrs ++ .{ |
| 4971 | | .{ .linkage_name, .strp }, |
| 5032 | .{ .linkage_name, .strx }, |
| 4972 | 5033 | .{ .type, .ref_addr }, |
| 4973 | 5034 | .{ .alignment, .udata }, |
| 4974 | 5035 | .{ .external, .flag }, |
| ... | ... | @@ -4978,7 +5039,7 @@ pub const AbbrevCode = enum { |
| 4978 | 5039 | .decl_const_partially_comptime = .{ |
| 4979 | 5040 | .tag = .constant, |
| 4980 | 5041 | .attrs = decl_attrs ++ .{ |
| 4981 | | .{ .linkage_name, .strp }, |
| 5042 | .{ .linkage_name, .strx }, |
| 4982 | 5043 | .{ .type, .ref_addr }, |
| 4983 | 5044 | .{ .alignment, .udata }, |
| 4984 | 5045 | .{ .external, .flag }, |
| ... | ... | @@ -4989,7 +5050,7 @@ pub const AbbrevCode = enum { |
| 4989 | 5050 | .decl_const_fully_comptime = .{ |
| 4990 | 5051 | .tag = .constant, |
| 4991 | 5052 | .attrs = decl_attrs ++ .{ |
| 4992 | | .{ .linkage_name, .strp }, |
| 5053 | .{ .linkage_name, .strx }, |
| 4993 | 5054 | .{ .type, .ref_addr }, |
| 4994 | 5055 | .{ .alignment, .udata }, |
| 4995 | 5056 | .{ .external, .flag }, |
| ... | ... | @@ -4999,7 +5060,7 @@ pub const AbbrevCode = enum { |
| 4999 | 5060 | .decl_var = .{ |
| 5000 | 5061 | .tag = .variable, |
| 5001 | 5062 | .attrs = decl_attrs ++ .{ |
| 5002 | | .{ .linkage_name, .strp }, |
| 5063 | .{ .linkage_name, .strx }, |
| 5003 | 5064 | .{ .type, .ref_addr }, |
| 5004 | 5065 | .{ .location, .exprloc }, |
| 5005 | 5066 | .{ .alignment, .udata }, |
| ... | ... | @@ -5009,7 +5070,7 @@ pub const AbbrevCode = enum { |
| 5009 | 5070 | .decl_empty_func = .{ |
| 5010 | 5071 | .tag = .subprogram, |
| 5011 | 5072 | .attrs = decl_attrs ++ .{ |
| 5012 | | .{ .linkage_name, .strp }, |
| 5073 | .{ .linkage_name, .strx }, |
| 5013 | 5074 | .{ .type, .ref_addr }, |
| 5014 | 5075 | .{ .low_pc, .addr }, |
| 5015 | 5076 | .{ .high_pc, .data4 }, |
| ... | ... | @@ -5022,7 +5083,7 @@ pub const AbbrevCode = enum { |
| 5022 | 5083 | .tag = .subprogram, |
| 5023 | 5084 | .children = true, |
| 5024 | 5085 | .attrs = decl_attrs ++ .{ |
| 5025 | | .{ .linkage_name, .strp }, |
| 5086 | .{ .linkage_name, .strx }, |
| 5026 | 5087 | .{ .type, .ref_addr }, |
| 5027 | 5088 | .{ .low_pc, .addr }, |
| 5028 | 5089 | .{ .high_pc, .data4 }, |
| ... | ... | @@ -5047,7 +5108,7 @@ pub const AbbrevCode = enum { |
| 5047 | 5108 | .decl_extern_empty_func = .{ |
| 5048 | 5109 | .tag = .subprogram, |
| 5049 | 5110 | .attrs = decl_attrs ++ .{ |
| 5050 | | .{ .linkage_name, .strp }, |
| 5111 | .{ .linkage_name, .strx }, |
| 5051 | 5112 | .{ .type, .ref_addr }, |
| 5052 | 5113 | .{ .low_pc, .addr }, |
| 5053 | 5114 | .{ .external, .flag_present }, |
| ... | ... | @@ -5058,7 +5119,7 @@ pub const AbbrevCode = enum { |
| 5058 | 5119 | .tag = .subprogram, |
| 5059 | 5120 | .children = true, |
| 5060 | 5121 | .attrs = decl_attrs ++ .{ |
| 5061 | | .{ .linkage_name, .strp }, |
| 5122 | .{ .linkage_name, .strx }, |
| 5062 | 5123 | .{ .type, .ref_addr }, |
| 5063 | 5124 | .{ .low_pc, .addr }, |
| 5064 | 5125 | .{ .external, .flag_present }, |
| ... | ... | @@ -5240,7 +5301,7 @@ pub const AbbrevCode = enum { |
| 5240 | 5301 | .decl_instance_const = .{ |
| 5241 | 5302 | .tag = .constant, |
| 5242 | 5303 | .attrs = decl_instance_attrs ++ .{ |
| 5243 | | .{ .linkage_name, .strp }, |
| 5304 | .{ .linkage_name, .strx }, |
| 5244 | 5305 | .{ .type, .ref_addr }, |
| 5245 | 5306 | .{ .alignment, .udata }, |
| 5246 | 5307 | .{ .external, .flag }, |
| ... | ... | @@ -5249,7 +5310,7 @@ pub const AbbrevCode = enum { |
| 5249 | 5310 | .decl_instance_const_fully_runtime = .{ |
| 5250 | 5311 | .tag = .constant, |
| 5251 | 5312 | .attrs = decl_instance_attrs ++ .{ |
| 5252 | | .{ .linkage_name, .strp }, |
| 5313 | .{ .linkage_name, .strx }, |
| 5253 | 5314 | .{ .type, .ref_addr }, |
| 5254 | 5315 | .{ .alignment, .udata }, |
| 5255 | 5316 | .{ .external, .flag }, |
| ... | ... | @@ -5259,7 +5320,7 @@ pub const AbbrevCode = enum { |
| 5259 | 5320 | .decl_instance_const_partially_comptime = .{ |
| 5260 | 5321 | .tag = .constant, |
| 5261 | 5322 | .attrs = decl_instance_attrs ++ .{ |
| 5262 | | .{ .linkage_name, .strp }, |
| 5323 | .{ .linkage_name, .strx }, |
| 5263 | 5324 | .{ .type, .ref_addr }, |
| 5264 | 5325 | .{ .alignment, .udata }, |
| 5265 | 5326 | .{ .external, .flag }, |
| ... | ... | @@ -5270,7 +5331,7 @@ pub const AbbrevCode = enum { |
| 5270 | 5331 | .decl_instance_const_fully_comptime = .{ |
| 5271 | 5332 | .tag = .constant, |
| 5272 | 5333 | .attrs = decl_instance_attrs ++ .{ |
| 5273 | | .{ .linkage_name, .strp }, |
| 5334 | .{ .linkage_name, .strx }, |
| 5274 | 5335 | .{ .type, .ref_addr }, |
| 5275 | 5336 | .{ .alignment, .udata }, |
| 5276 | 5337 | .{ .external, .flag }, |
| ... | ... | @@ -5280,7 +5341,7 @@ pub const AbbrevCode = enum { |
| 5280 | 5341 | .decl_instance_var = .{ |
| 5281 | 5342 | .tag = .variable, |
| 5282 | 5343 | .attrs = decl_instance_attrs ++ .{ |
| 5283 | | .{ .linkage_name, .strp }, |
| 5344 | .{ .linkage_name, .strx }, |
| 5284 | 5345 | .{ .type, .ref_addr }, |
| 5285 | 5346 | .{ .location, .exprloc }, |
| 5286 | 5347 | .{ .alignment, .udata }, |
| ... | ... | @@ -5290,7 +5351,7 @@ pub const AbbrevCode = enum { |
| 5290 | 5351 | .decl_instance_empty_func = .{ |
| 5291 | 5352 | .tag = .subprogram, |
| 5292 | 5353 | .attrs = decl_instance_attrs ++ .{ |
| 5293 | | .{ .linkage_name, .strp }, |
| 5354 | .{ .linkage_name, .strx }, |
| 5294 | 5355 | .{ .type, .ref_addr }, |
| 5295 | 5356 | .{ .low_pc, .addr }, |
| 5296 | 5357 | .{ .high_pc, .data4 }, |
| ... | ... | @@ -5303,7 +5364,7 @@ pub const AbbrevCode = enum { |
| 5303 | 5364 | .tag = .subprogram, |
| 5304 | 5365 | .children = true, |
| 5305 | 5366 | .attrs = decl_instance_attrs ++ .{ |
| 5306 | | .{ .linkage_name, .strp }, |
| 5367 | .{ .linkage_name, .strx }, |
| 5307 | 5368 | .{ .type, .ref_addr }, |
| 5308 | 5369 | .{ .low_pc, .addr }, |
| 5309 | 5370 | .{ .high_pc, .data4 }, |
| ... | ... | @@ -5325,41 +5386,11 @@ pub const AbbrevCode = enum { |
| 5325 | 5386 | .{ .type, .ref_addr }, |
| 5326 | 5387 | }, |
| 5327 | 5388 | }, |
| 5328 | | .compile_unit = .{ |
| 5329 | | .tag = .compile_unit, |
| 5330 | | .children = true, |
| 5331 | | .attrs = &.{ |
| 5332 | | .{ .language, .data1 }, |
| 5333 | | .{ .producer, .strp }, |
| 5334 | | .{ .comp_dir, .line_strp }, |
| 5335 | | .{ .name, .line_strp }, |
| 5336 | | .{ .base_types, .ref_addr }, |
| 5337 | | .{ .stmt_list, .sec_offset }, |
| 5338 | | .{ .rnglists_base, .sec_offset }, |
| 5339 | | .{ .ranges, .rnglistx }, |
| 5340 | | .{ .use_UTF8, .flag_present }, |
| 5341 | | }, |
| 5342 | | }, |
| 5343 | | .module = .{ |
| 5344 | | .tag = .module, |
| 5345 | | .children = true, |
| 5346 | | .attrs = &.{ |
| 5347 | | .{ .name, .strp }, |
| 5348 | | .{ .ranges, .rnglistx }, |
| 5349 | | }, |
| 5350 | | }, |
| 5351 | | .module_dependency = .{ |
| 5352 | | .tag = .imported_module, |
| 5353 | | .attrs = &.{ |
| 5354 | | .{ .name, .strp }, |
| 5355 | | .{ .import, .ref_addr }, |
| 5356 | | }, |
| 5357 | | }, |
| 5358 | 5389 | .empty_file = .{ |
| 5359 | 5390 | .tag = .structure_type, |
| 5360 | 5391 | .attrs = &.{ |
| 5361 | 5392 | .{ .decl_file, .udata }, |
| 5362 | | .{ .name, .strp }, |
| 5393 | .{ .name, .strx }, |
| 5363 | 5394 | .{ .declaration, .flag }, |
| 5364 | 5395 | }, |
| 5365 | 5396 | }, |
| ... | ... | @@ -5368,7 +5399,7 @@ pub const AbbrevCode = enum { |
| 5368 | 5399 | .children = true, |
| 5369 | 5400 | .attrs = &.{ |
| 5370 | 5401 | .{ .decl_file, .udata }, |
| 5371 | | .{ .name, .strp }, |
| 5402 | .{ .name, .strx }, |
| 5372 | 5403 | .{ .byte_size, .udata }, |
| 5373 | 5404 | .{ .alignment, .udata }, |
| 5374 | 5405 | }, |
| ... | ... | @@ -5376,20 +5407,20 @@ pub const AbbrevCode = enum { |
| 5376 | 5407 | .access = .{ |
| 5377 | 5408 | .tag = .member, |
| 5378 | 5409 | .attrs = &.{ |
| 5379 | | .{ .name, .strp }, |
| 5410 | .{ .name, .strx }, |
| 5380 | 5411 | }, |
| 5381 | 5412 | }, |
| 5382 | 5413 | .enum_field = .{ |
| 5383 | 5414 | .tag = .enumerator, |
| 5384 | 5415 | .attrs = &.{ |
| 5385 | 5416 | .{ .const_value, .indirect }, |
| 5386 | | .{ .name, .strp }, |
| 5417 | .{ .name, .strx }, |
| 5387 | 5418 | }, |
| 5388 | 5419 | }, |
| 5389 | 5420 | .generated_field = .{ |
| 5390 | 5421 | .tag = .member, |
| 5391 | 5422 | .attrs = &.{ |
| 5392 | | .{ .name, .strp }, |
| 5423 | .{ .name, .strx }, |
| 5393 | 5424 | .{ .type, .ref_addr }, |
| 5394 | 5425 | .{ .data_member_location, .udata }, |
| 5395 | 5426 | .{ .artificial, .flag_present }, |
| ... | ... | @@ -5398,7 +5429,7 @@ pub const AbbrevCode = enum { |
| 5398 | 5429 | .field = .{ |
| 5399 | 5430 | .tag = .member, |
| 5400 | 5431 | .attrs = &.{ |
| 5401 | | .{ .name, .strp }, |
| 5432 | .{ .name, .strx }, |
| 5402 | 5433 | .{ .type, .ref_addr }, |
| 5403 | 5434 | .{ .data_member_location, .udata }, |
| 5404 | 5435 | .{ .alignment, .udata }, |
| ... | ... | @@ -5407,7 +5438,7 @@ pub const AbbrevCode = enum { |
| 5407 | 5438 | .field_default_fully_runtime = .{ |
| 5408 | 5439 | .tag = .member, |
| 5409 | 5440 | .attrs = &.{ |
| 5410 | | .{ .name, .strp }, |
| 5441 | .{ .name, .strx }, |
| 5411 | 5442 | .{ .type, .ref_addr }, |
| 5412 | 5443 | .{ .data_member_location, .udata }, |
| 5413 | 5444 | .{ .alignment, .udata }, |
| ... | ... | @@ -5417,7 +5448,7 @@ pub const AbbrevCode = enum { |
| 5417 | 5448 | .field_default_partially_comptime = .{ |
| 5418 | 5449 | .tag = .member, |
| 5419 | 5450 | .attrs = &.{ |
| 5420 | | .{ .name, .strp }, |
| 5451 | .{ .name, .strx }, |
| 5421 | 5452 | .{ .type, .ref_addr }, |
| 5422 | 5453 | .{ .data_member_location, .udata }, |
| 5423 | 5454 | .{ .alignment, .udata }, |
| ... | ... | @@ -5428,7 +5459,7 @@ pub const AbbrevCode = enum { |
| 5428 | 5459 | .field_default_fully_comptime = .{ |
| 5429 | 5460 | .tag = .member, |
| 5430 | 5461 | .attrs = &.{ |
| 5431 | | .{ .name, .strp }, |
| 5462 | .{ .name, .strx }, |
| 5432 | 5463 | .{ .type, .ref_addr }, |
| 5433 | 5464 | .{ .data_member_location, .udata }, |
| 5434 | 5465 | .{ .alignment, .udata }, |
| ... | ... | @@ -5439,7 +5470,7 @@ pub const AbbrevCode = enum { |
| 5439 | 5470 | .tag = .member, |
| 5440 | 5471 | .attrs = &.{ |
| 5441 | 5472 | .{ .const_expr, .flag_present }, |
| 5442 | | .{ .name, .strp }, |
| 5473 | .{ .name, .strx }, |
| 5443 | 5474 | .{ .type, .ref_addr }, |
| 5444 | 5475 | }, |
| 5445 | 5476 | }, |
| ... | ... | @@ -5447,7 +5478,7 @@ pub const AbbrevCode = enum { |
| 5447 | 5478 | .tag = .member, |
| 5448 | 5479 | .attrs = &.{ |
| 5449 | 5480 | .{ .const_expr, .flag_present }, |
| 5450 | | .{ .name, .strp }, |
| 5481 | .{ .name, .strx }, |
| 5451 | 5482 | .{ .type, .ref_addr }, |
| 5452 | 5483 | .{ .const_value, .block }, |
| 5453 | 5484 | }, |
| ... | ... | @@ -5456,7 +5487,7 @@ pub const AbbrevCode = enum { |
| 5456 | 5487 | .tag = .member, |
| 5457 | 5488 | .attrs = &.{ |
| 5458 | 5489 | .{ .const_expr, .flag_present }, |
| 5459 | | .{ .name, .strp }, |
| 5490 | .{ .name, .strx }, |
| 5460 | 5491 | .{ .type, .ref_addr }, |
| 5461 | 5492 | .{ .const_value, .block }, |
| 5462 | 5493 | .{ .ZIG_comptime_value, .ref_addr }, |
| ... | ... | @@ -5466,7 +5497,7 @@ pub const AbbrevCode = enum { |
| 5466 | 5497 | .tag = .member, |
| 5467 | 5498 | .attrs = &.{ |
| 5468 | 5499 | .{ .const_expr, .flag_present }, |
| 5469 | | .{ .name, .strp }, |
| 5500 | .{ .name, .strx }, |
| 5470 | 5501 | .{ .type, .ref_addr }, |
| 5471 | 5502 | .{ .ZIG_comptime_value, .ref_addr }, |
| 5472 | 5503 | }, |
| ... | ... | @@ -5474,7 +5505,7 @@ pub const AbbrevCode = enum { |
| 5474 | 5505 | .packed_field = .{ |
| 5475 | 5506 | .tag = .member, |
| 5476 | 5507 | .attrs = &.{ |
| 5477 | | .{ .name, .strp }, |
| 5508 | .{ .name, .strx }, |
| 5478 | 5509 | .{ .type, .ref_addr }, |
| 5479 | 5510 | .{ .data_bit_offset, .udata }, |
| 5480 | 5511 | }, |
| ... | ... | @@ -5500,13 +5531,13 @@ pub const AbbrevCode = enum { |
| 5500 | 5531 | .void_type = .{ |
| 5501 | 5532 | .tag = .unspecified_type, |
| 5502 | 5533 | .attrs = &.{ |
| 5503 | | .{ .name, .strp }, |
| 5534 | .{ .name, .strx }, |
| 5504 | 5535 | }, |
| 5505 | 5536 | }, |
| 5506 | 5537 | .numeric_type = .{ |
| 5507 | 5538 | .tag = .base_type, |
| 5508 | 5539 | .attrs = &.{ |
| 5509 | | .{ .name, .strp }, |
| 5540 | .{ .name, .strx }, |
| 5510 | 5541 | .{ .encoding, .data1 }, |
| 5511 | 5542 | .{ .bit_size, .udata }, |
| 5512 | 5543 | .{ .byte_size, .udata }, |
| ... | ... | @@ -5516,14 +5547,14 @@ pub const AbbrevCode = enum { |
| 5516 | 5547 | .inferred_error_set_type = .{ |
| 5517 | 5548 | .tag = .typedef, |
| 5518 | 5549 | .attrs = &.{ |
| 5519 | | .{ .name, .strp }, |
| 5550 | .{ .name, .strx }, |
| 5520 | 5551 | .{ .type, .ref_addr }, |
| 5521 | 5552 | }, |
| 5522 | 5553 | }, |
| 5523 | 5554 | .ptr_type = .{ |
| 5524 | 5555 | .tag = .pointer_type, |
| 5525 | 5556 | .attrs = &.{ |
| 5526 | | .{ .name, .strp }, |
| 5557 | .{ .name, .strx }, |
| 5527 | 5558 | .{ .address_class, .data1 }, |
| 5528 | 5559 | .{ .type, .ref_addr }, |
| 5529 | 5560 | }, |
| ... | ... | @@ -5531,7 +5562,7 @@ pub const AbbrevCode = enum { |
| 5531 | 5562 | .ptr_sentinel_type = .{ |
| 5532 | 5563 | .tag = .pointer_type, |
| 5533 | 5564 | .attrs = &.{ |
| 5534 | | .{ .name, .strp }, |
| 5565 | .{ .name, .strx }, |
| 5535 | 5566 | .{ .ZIG_sentinel, .block }, |
| 5536 | 5567 | .{ .address_class, .data1 }, |
| 5537 | 5568 | .{ .type, .ref_addr }, |
| ... | ... | @@ -5560,7 +5591,7 @@ pub const AbbrevCode = enum { |
| 5560 | 5591 | .tag = .array_type, |
| 5561 | 5592 | .children = true, |
| 5562 | 5593 | .attrs = &.{ |
| 5563 | | .{ .name, .strp }, |
| 5594 | .{ .name, .strx }, |
| 5564 | 5595 | .{ .type, .ref_addr }, |
| 5565 | 5596 | }, |
| 5566 | 5597 | }, |
| ... | ... | @@ -5568,7 +5599,7 @@ pub const AbbrevCode = enum { |
| 5568 | 5599 | .tag = .array_type, |
| 5569 | 5600 | .children = true, |
| 5570 | 5601 | .attrs = &.{ |
| 5571 | | .{ .name, .strp }, |
| 5602 | .{ .name, .strx }, |
| 5572 | 5603 | .{ .ZIG_sentinel, .block }, |
| 5573 | 5604 | .{ .type, .ref_addr }, |
| 5574 | 5605 | }, |
| ... | ... | @@ -5577,7 +5608,7 @@ pub const AbbrevCode = enum { |
| 5577 | 5608 | .tag = .array_type, |
| 5578 | 5609 | .children = true, |
| 5579 | 5610 | .attrs = &.{ |
| 5580 | | .{ .name, .strp }, |
| 5611 | .{ .name, .strx }, |
| 5581 | 5612 | .{ .type, .ref_addr }, |
| 5582 | 5613 | .{ .GNU_vector, .flag_present }, |
| 5583 | 5614 | }, |
| ... | ... | @@ -5598,7 +5629,7 @@ pub const AbbrevCode = enum { |
| 5598 | 5629 | .empty_func_type = .{ |
| 5599 | 5630 | .tag = .subroutine_type, |
| 5600 | 5631 | .attrs = &.{ |
| 5601 | | .{ .name, .strp }, |
| 5632 | .{ .name, .strx }, |
| 5602 | 5633 | .{ .calling_convention, .data1 }, |
| 5603 | 5634 | .{ .type, .ref_addr }, |
| 5604 | 5635 | }, |
| ... | ... | @@ -5607,7 +5638,7 @@ pub const AbbrevCode = enum { |
| 5607 | 5638 | .tag = .subroutine_type, |
| 5608 | 5639 | .children = true, |
| 5609 | 5640 | .attrs = &.{ |
| 5610 | | .{ .name, .strp }, |
| 5641 | .{ .name, .strx }, |
| 5611 | 5642 | .{ .calling_convention, .data1 }, |
| 5612 | 5643 | .{ .type, .ref_addr }, |
| 5613 | 5644 | }, |
| ... | ... | @@ -5615,7 +5646,7 @@ pub const AbbrevCode = enum { |
| 5615 | 5646 | .param = .{ |
| 5616 | 5647 | .tag = .formal_parameter, |
| 5617 | 5648 | .attrs = &.{ |
| 5618 | | .{ .name, .strp }, |
| 5649 | .{ .name, .strx }, |
| 5619 | 5650 | .{ .type, .ref_addr }, |
| 5620 | 5651 | }, |
| 5621 | 5652 | }, |
| ... | ... | @@ -5631,7 +5662,7 @@ pub const AbbrevCode = enum { |
| 5631 | 5662 | .generated_empty_enum_type = .{ |
| 5632 | 5663 | .tag = .enumeration_type, |
| 5633 | 5664 | .attrs = &.{ |
| 5634 | | .{ .name, .strp }, |
| 5665 | .{ .name, .strx }, |
| 5635 | 5666 | .{ .type, .ref_addr }, |
| 5636 | 5667 | }, |
| 5637 | 5668 | }, |
| ... | ... | @@ -5639,14 +5670,14 @@ pub const AbbrevCode = enum { |
| 5639 | 5670 | .tag = .enumeration_type, |
| 5640 | 5671 | .children = true, |
| 5641 | 5672 | .attrs = &.{ |
| 5642 | | .{ .name, .strp }, |
| 5673 | .{ .name, .strx }, |
| 5643 | 5674 | .{ .type, .ref_addr }, |
| 5644 | 5675 | }, |
| 5645 | 5676 | }, |
| 5646 | 5677 | .generated_empty_struct_type = .{ |
| 5647 | 5678 | .tag = .structure_type, |
| 5648 | 5679 | .attrs = &.{ |
| 5649 | | .{ .name, .strp }, |
| 5680 | .{ .name, .strx }, |
| 5650 | 5681 | .{ .declaration, .flag }, |
| 5651 | 5682 | }, |
| 5652 | 5683 | }, |
| ... | ... | @@ -5654,7 +5685,7 @@ pub const AbbrevCode = enum { |
| 5654 | 5685 | .tag = .structure_type, |
| 5655 | 5686 | .children = true, |
| 5656 | 5687 | .attrs = &.{ |
| 5657 | | .{ .name, .strp }, |
| 5688 | .{ .name, .strx }, |
| 5658 | 5689 | .{ .byte_size, .udata }, |
| 5659 | 5690 | .{ .alignment, .udata }, |
| 5660 | 5691 | }, |
| ... | ... | @@ -5663,7 +5694,7 @@ pub const AbbrevCode = enum { |
| 5663 | 5694 | .tag = .union_type, |
| 5664 | 5695 | .children = true, |
| 5665 | 5696 | .attrs = &.{ |
| 5666 | | .{ .name, .strp }, |
| 5697 | .{ .name, .strx }, |
| 5667 | 5698 | .{ .byte_size, .udata }, |
| 5668 | 5699 | .{ .alignment, .udata }, |
| 5669 | 5700 | }, |
| ... | ... | @@ -5671,7 +5702,7 @@ pub const AbbrevCode = enum { |
| 5671 | 5702 | .capture_specification = .{ |
| 5672 | 5703 | .tag = .template_value_parameter, |
| 5673 | 5704 | .attrs = &.{ |
| 5674 | | .{ .name, .strp }, |
| 5705 | .{ .name, .strx }, |
| 5675 | 5706 | }, |
| 5676 | 5707 | }, |
| 5677 | 5708 | .comptime_capture = .{ |
| ... | ... | @@ -5718,7 +5749,7 @@ pub const AbbrevCode = enum { |
| 5718 | 5749 | .tag = .subprogram, |
| 5719 | 5750 | .attrs = &.{ |
| 5720 | 5751 | .{ .ZIG_parent, .ref_addr }, |
| 5721 | | .{ .linkage_name, .strp }, |
| 5752 | .{ .linkage_name, .strx }, |
| 5722 | 5753 | .{ .type, .ref_addr }, |
| 5723 | 5754 | .{ .low_pc, .addr }, |
| 5724 | 5755 | .{ .external, .flag_present }, |
| ... | ... | @@ -5730,7 +5761,7 @@ pub const AbbrevCode = enum { |
| 5730 | 5761 | .children = true, |
| 5731 | 5762 | .attrs = &.{ |
| 5732 | 5763 | .{ .ZIG_parent, .ref_addr }, |
| 5733 | | .{ .linkage_name, .strp }, |
| 5764 | .{ .linkage_name, .strx }, |
| 5734 | 5765 | .{ .type, .ref_addr }, |
| 5735 | 5766 | .{ .low_pc, .addr }, |
| 5736 | 5767 | .{ .external, .flag_present }, |
| ... | ... | @@ -5741,7 +5772,7 @@ pub const AbbrevCode = enum { |
| 5741 | 5772 | .tag = .variable, |
| 5742 | 5773 | .attrs = &.{ |
| 5743 | 5774 | .{ .ZIG_parent, .ref_addr }, |
| 5744 | | .{ .linkage_name, .strp }, |
| 5775 | .{ .linkage_name, .strx }, |
| 5745 | 5776 | .{ .type, .ref_addr }, |
| 5746 | 5777 | .{ .location, .exprloc }, |
| 5747 | 5778 | .{ .alignment, .udata }, |
| ... | ... | @@ -5787,7 +5818,7 @@ pub const AbbrevCode = enum { |
| 5787 | 5818 | .arg = .{ |
| 5788 | 5819 | .tag = .formal_parameter, |
| 5789 | 5820 | .attrs = &.{ |
| 5790 | | .{ .name, .strp }, |
| 5821 | .{ .name, .strx }, |
| 5791 | 5822 | .{ .type, .ref_addr }, |
| 5792 | 5823 | .{ .location, .exprloc }, |
| 5793 | 5824 | }, |
| ... | ... | @@ -5803,7 +5834,7 @@ pub const AbbrevCode = enum { |
| 5803 | 5834 | .tag = .formal_parameter, |
| 5804 | 5835 | .attrs = &.{ |
| 5805 | 5836 | .{ .const_expr, .flag_present }, |
| 5806 | | .{ .name, .strp }, |
| 5837 | .{ .name, .strx }, |
| 5807 | 5838 | .{ .type, .ref_addr }, |
| 5808 | 5839 | }, |
| 5809 | 5840 | }, |
| ... | ... | @@ -5811,7 +5842,7 @@ pub const AbbrevCode = enum { |
| 5811 | 5842 | .tag = .formal_parameter, |
| 5812 | 5843 | .attrs = &.{ |
| 5813 | 5844 | .{ .const_expr, .flag_present }, |
| 5814 | | .{ .name, .strp }, |
| 5845 | .{ .name, .strx }, |
| 5815 | 5846 | .{ .type, .ref_addr }, |
| 5816 | 5847 | .{ .const_value, .block }, |
| 5817 | 5848 | }, |
| ... | ... | @@ -5820,7 +5851,7 @@ pub const AbbrevCode = enum { |
| 5820 | 5851 | .tag = .formal_parameter, |
| 5821 | 5852 | .attrs = &.{ |
| 5822 | 5853 | .{ .const_expr, .flag_present }, |
| 5823 | | .{ .name, .strp }, |
| 5854 | .{ .name, .strx }, |
| 5824 | 5855 | .{ .type, .ref_addr }, |
| 5825 | 5856 | .{ .const_value, .block }, |
| 5826 | 5857 | .{ .ZIG_comptime_value, .ref_addr }, |
| ... | ... | @@ -5830,7 +5861,7 @@ pub const AbbrevCode = enum { |
| 5830 | 5861 | .tag = .formal_parameter, |
| 5831 | 5862 | .attrs = &.{ |
| 5832 | 5863 | .{ .const_expr, .flag_present }, |
| 5833 | | .{ .name, .strp }, |
| 5864 | .{ .name, .strx }, |
| 5834 | 5865 | .{ .type, .ref_addr }, |
| 5835 | 5866 | .{ .ZIG_comptime_value, .ref_addr }, |
| 5836 | 5867 | }, |
| ... | ... | @@ -5876,7 +5907,7 @@ pub const AbbrevCode = enum { |
| 5876 | 5907 | .local_var = .{ |
| 5877 | 5908 | .tag = .variable, |
| 5878 | 5909 | .attrs = &.{ |
| 5879 | | .{ .name, .strp }, |
| 5910 | .{ .name, .strx }, |
| 5880 | 5911 | .{ .type, .ref_addr }, |
| 5881 | 5912 | .{ .location, .exprloc }, |
| 5882 | 5913 | }, |
| ... | ... | @@ -5884,14 +5915,14 @@ pub const AbbrevCode = enum { |
| 5884 | 5915 | .local_const = .{ |
| 5885 | 5916 | .tag = .constant, |
| 5886 | 5917 | .attrs = &.{ |
| 5887 | | .{ .name, .strp }, |
| 5918 | .{ .name, .strx }, |
| 5888 | 5919 | .{ .type, .ref_addr }, |
| 5889 | 5920 | }, |
| 5890 | 5921 | }, |
| 5891 | 5922 | .local_const_fully_runtime = .{ |
| 5892 | 5923 | .tag = .constant, |
| 5893 | 5924 | .attrs = &.{ |
| 5894 | | .{ .name, .strp }, |
| 5925 | .{ .name, .strx }, |
| 5895 | 5926 | .{ .type, .ref_addr }, |
| 5896 | 5927 | .{ .const_value, .block }, |
| 5897 | 5928 | }, |
| ... | ... | @@ -5899,7 +5930,7 @@ pub const AbbrevCode = enum { |
| 5899 | 5930 | .local_const_partially_comptime = .{ |
| 5900 | 5931 | .tag = .constant, |
| 5901 | 5932 | .attrs = &.{ |
| 5902 | | .{ .name, .strp }, |
| 5933 | .{ .name, .strx }, |
| 5903 | 5934 | .{ .type, .ref_addr }, |
| 5904 | 5935 | .{ .const_value, .block }, |
| 5905 | 5936 | .{ .ZIG_comptime_value, .ref_addr }, |
| ... | ... | @@ -5908,7 +5939,7 @@ pub const AbbrevCode = enum { |
| 5908 | 5939 | .local_const_fully_comptime = .{ |
| 5909 | 5940 | .tag = .constant, |
| 5910 | 5941 | .attrs = &.{ |
| 5911 | | .{ .name, .strp }, |
| 5942 | .{ .name, .strx }, |
| 5912 | 5943 | .{ .type, .ref_addr }, |
| 5913 | 5944 | .{ .ZIG_comptime_value, .ref_addr }, |
| 5914 | 5945 | }, |
| ... | ... | @@ -5959,14 +5990,14 @@ pub const AbbrevCode = enum { |
| 5959 | 5990 | .comptime_value_field_runtime = .{ |
| 5960 | 5991 | .tag = .member, |
| 5961 | 5992 | .attrs = &.{ |
| 5962 | | .{ .name, .strp }, |
| 5993 | .{ .name, .strx }, |
| 5963 | 5994 | .{ .const_value, .block }, |
| 5964 | 5995 | }, |
| 5965 | 5996 | }, |
| 5966 | 5997 | .comptime_value_field_comptime = .{ |
| 5967 | 5998 | .tag = .member, |
| 5968 | 5999 | .attrs = &.{ |
| 5969 | | .{ .name, .strp }, |
| 6000 | .{ .name, .strx }, |
| 5970 | 6001 | .{ .ZIG_comptime_value, .ref_addr }, |
| 5971 | 6002 | }, |
| 5972 | 6003 | }, |
| ... | ... | @@ -5982,6 +6013,37 @@ pub const AbbrevCode = enum { |
| 5982 | 6013 | .{ .ZIG_comptime_value, .ref_addr }, |
| 5983 | 6014 | }, |
| 5984 | 6015 | }, |
| 6016 | .compile_unit = .{ |
| 6017 | .tag = .compile_unit, |
| 6018 | .children = true, |
| 6019 | .attrs = &.{ |
| 6020 | .{ .language, .data1 }, |
| 6021 | .{ .base_types, .ref_addr }, |
| 6022 | .{ .stmt_list, .sec_offset }, |
| 6023 | .{ .rnglists_base, .sec_offset }, |
| 6024 | .{ .str_offsets_base, .sec_offset }, |
| 6025 | .{ .producer, .strx1 }, |
| 6026 | .{ .comp_dir, .line_strp }, |
| 6027 | .{ .name, .line_strp }, |
| 6028 | .{ .ranges, .rnglistx }, |
| 6029 | .{ .use_UTF8, .flag_present }, |
| 6030 | }, |
| 6031 | }, |
| 6032 | .module = .{ |
| 6033 | .tag = .module, |
| 6034 | .children = true, |
| 6035 | .attrs = &.{ |
| 6036 | .{ .name, .strx }, |
| 6037 | .{ .ranges, .rnglistx }, |
| 6038 | }, |
| 6039 | }, |
| 6040 | .module_dependency = .{ |
| 6041 | .tag = .imported_module, |
| 6042 | .attrs = &.{ |
| 6043 | .{ .name, .strx }, |
| 6044 | .{ .import, .ref_addr }, |
| 6045 | }, |
| 6046 | }, |
| 5985 | 6047 | }); |
| 5986 | 6048 | }; |
| 5987 | 6049 | |