authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2026-09-08 11:37:26-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2026-09-08 11:59:20-04:00
log48b8eb249d7e73109c8603bd5ebc06665d9b1a2f
treecab7f8299fa27baf344ef767b632b27c67aedf09
parent2622cb368f0a3aa6b3efe625d2abc967ddf82f23

Dwarf2: fix struct instance names

Closes #35791

2 files changed, 169 insertions(+), 74 deletions(-)

src/link/Dwarf2.zig+168-73
......@@ -2897,43 +2897,52 @@ fn updateConstInner(
28972897 const loaded_struct = ip.loadStructType(@"const");
28982898 const src_inst = loaded_struct.zir_index.resolveFull(ip).?;
28992899 const zf = zcu.fileByIndex(src_inst.file);
2900 const is_empty = loaded_struct.captures.len == 0 and loaded_struct.field_types.len == 0;
29002901 if (src_inst.inst == .main_struct_inst) {
29012902 assert(loaded_struct.captures.len == 0);
29022903 const ui = dwarf.getUnit(zf.mod.?);
29032904 _, const fi = try ui.get(dwarf).getFile(zcu.gpa, ui, src_inst.file);
29042905 try dwarf.abbrevCode(di_nw, switch (loaded_struct.layout) {
2905 .auto => if (loaded_struct.field_types.len > 0) .file else .empty_file,
2906 .auto => if (is_empty) .empty_file else .file,
29062907 .@"extern", .@"packed" => unreachable,
29072908 });
29082909 try di_w.writeUleb128(@backingInt(fi));
29092910 try dwarf.strx(di_nw, loaded_struct.name.toSlice(ip));
29102911 } else if (loaded_struct.captures.len > 0 or loaded_struct.is_reified) {
2911 try dwarf.abbrevCode(di_nw, if (loaded_struct.captures.len > 0 or
2912 loaded_struct.field_types.len > 0) switch (loaded_struct.layout) {
2913 .auto, .@"extern" => .decl_instance_struct,
2914 .@"packed" => .decl_instance_packed_struct,
2915 } else switch (loaded_struct.layout) {
2916 .auto, .@"extern" => .decl_instance_empty_struct,
2917 .@"packed" => .decl_instance_empty_packed_struct,
2912 try dwarf.abbrevCode(di_nw, switch (loaded_struct.name_nav) {
2913 else => if (is_empty) switch (loaded_struct.layout) {
2914 .auto, .@"extern" => .decl_instance_empty_struct,
2915 .@"packed" => .decl_instance_empty_packed_struct,
2916 } else switch (loaded_struct.layout) {
2917 .auto, .@"extern" => .decl_instance_struct,
2918 .@"packed" => .decl_instance_packed_struct,
2919 },
2920 .none => if (is_empty) switch (loaded_struct.layout) {
2921 .auto, .@"extern" => .type_decl_instance_empty_struct,
2922 .@"packed" => .type_decl_instance_empty_packed_struct,
2923 } else switch (loaded_struct.layout) {
2924 .auto, .@"extern" => .type_decl_instance_struct,
2925 .@"packed" => .type_decl_instance_packed_struct,
2926 },
29182927 });
29192928 try dwarf.refType(pt, di_nw, .fromInterned(ip.namespacePtr(
29202929 ip.namespacePtr(loaded_struct.namespace).parent.unwrap().?,
29212930 ).owner_type));
29222931 try dwarf.secOffset(di_nw, try dwarf.getConstDecl(pt, @"const"), 0);
2932 if (loaded_struct.name_nav == .none)
2933 try dwarf.strx(di_nw, loaded_struct.name.toSlice(ip));
29232934 } else if (loaded_struct.name_nav.unwrap()) |name_ni| {
29242935 const name_nav = ip.getNav(name_ni);
29252936 const decl = zf.zir.?.getDeclaration(name_nav.srcInst(ip).resolve(ip).?);
29262937 const parent_ni = try dwarf.getConstDecl(pt, ip.namespacePtr(
29272938 name_nav.analysis.?.namespace,
29282939 ).owner_type);
2929 try dwarf.abbrevCode(di_nw, if (loaded_struct.field_types.len > 0)
2930 switch (loaded_struct.layout) {
2931 .auto, .@"extern" => .decl_struct,
2932 .@"packed" => .decl_packed_struct,
2933 }
2934 else switch (loaded_struct.layout) {
2940 try dwarf.abbrevCode(di_nw, if (is_empty) switch (loaded_struct.layout) {
29352941 .auto, .@"extern" => .decl_empty_struct,
29362942 .@"packed" => .decl_empty_packed_struct,
2943 } else switch (loaded_struct.layout) {
2944 .auto, .@"extern" => .decl_struct,
2945 .@"packed" => .decl_packed_struct,
29372946 });
29382947 try dwarf.secOffset(di_nw, parent_ni, 0);
29392948 try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian);
......@@ -2945,14 +2954,12 @@ fn updateConstInner(
29452954 const parent_ni = try dwarf.getConstDecl(pt, ip.namespacePtr(
29462955 ip.namespacePtr(loaded_struct.namespace).parent.unwrap().?,
29472956 ).owner_type);
2948 try dwarf.abbrevCode(di_nw, if (loaded_struct.field_types.len > 0)
2949 switch (loaded_struct.layout) {
2950 .auto, .@"extern" => .type_decl_struct,
2951 .@"packed" => .type_decl_packed_struct,
2952 }
2953 else switch (loaded_struct.layout) {
2957 try dwarf.abbrevCode(di_nw, if (is_empty) switch (loaded_struct.layout) {
29542958 .auto, .@"extern" => .type_decl_empty_struct,
29552959 .@"packed" => .type_decl_empty_packed_struct,
2960 } else switch (loaded_struct.layout) {
2961 .auto, .@"extern" => .type_decl_struct,
2962 .@"packed" => .type_decl_packed_struct,
29562963 });
29572964 try dwarf.secOffset(di_nw, parent_ni, 0);
29582965 try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian);
......@@ -3033,41 +3040,49 @@ fn updateConstInner(
30333040 }
30343041 },
30353042 }
3036 if (loaded_struct.captures.len > 0 or loaded_struct.field_types.len > 0)
3037 try di_w.writeUleb128(@backingInt(AbbrevCode.null));
3043 if (!is_empty) try di_w.writeUleb128(@backingInt(AbbrevCode.null));
30383044 },
30393045 .union_type => {
30403046 const loaded_union = ip.loadUnionType(@"const");
30413047 const loaded_tag = ip.loadEnumType(loaded_union.enum_tag_type);
30423048 const zfi = loaded_union.zir_index.resolveFile(ip);
30433049 const zf = zcu.fileByIndex(zfi);
3050 const is_empty = loaded_union.captures.len == 0 and loaded_union.field_types.len == 0;
30443051 if (loaded_union.captures.len > 0 or loaded_union.is_reified) {
3045 try dwarf.abbrevCode(di_nw, if (loaded_union.captures.len > 0 or
3046 loaded_union.field_types.len > 0) switch (loaded_union.layout) {
3047 .auto, .@"extern" => .decl_instance_union,
3048 .@"packed" => .decl_instance_packed_union,
3049 } else switch (loaded_union.layout) {
3050 .auto, .@"extern" => .decl_instance_empty_union,
3051 .@"packed" => .decl_instance_empty_packed_union,
3052 try dwarf.abbrevCode(di_nw, switch (loaded_union.name_nav) {
3053 else => if (is_empty) switch (loaded_union.layout) {
3054 .auto, .@"extern" => .decl_instance_empty_union,
3055 .@"packed" => .decl_instance_empty_packed_union,
3056 } else switch (loaded_union.layout) {
3057 .auto, .@"extern" => .decl_instance_union,
3058 .@"packed" => .decl_instance_packed_union,
3059 },
3060 .none => if (is_empty) switch (loaded_union.layout) {
3061 .auto, .@"extern" => .type_decl_instance_empty_union,
3062 .@"packed" => .type_decl_instance_empty_packed_union,
3063 } else switch (loaded_union.layout) {
3064 .auto, .@"extern" => .type_decl_instance_union,
3065 .@"packed" => .type_decl_instance_packed_union,
3066 },
30523067 });
30533068 try dwarf.refType(pt, di_nw, .fromInterned(ip.namespacePtr(
30543069 ip.namespacePtr(loaded_union.namespace).parent.unwrap().?,
30553070 ).owner_type));
30563071 try dwarf.secOffset(di_nw, try dwarf.getConstDecl(pt, @"const"), 0);
3072 if (loaded_union.name_nav == .none)
3073 try dwarf.strx(di_nw, loaded_union.name.toSlice(ip));
30573074 } else if (loaded_union.name_nav.unwrap()) |name_ni| {
30583075 const name_nav = ip.getNav(name_ni);
30593076 const decl = zf.zir.?.getDeclaration(name_nav.srcInst(ip).resolve(ip).?);
30603077 const parent_ni = try dwarf.getConstDecl(pt, ip.namespacePtr(
30613078 name_nav.analysis.?.namespace,
30623079 ).owner_type);
3063 try dwarf.abbrevCode(di_nw, if (loaded_union.field_types.len > 0)
3064 switch (loaded_union.layout) {
3065 .auto, .@"extern" => .decl_union,
3066 .@"packed" => .decl_packed_union,
3067 }
3068 else switch (loaded_union.layout) {
3080 try dwarf.abbrevCode(di_nw, if (is_empty) switch (loaded_union.layout) {
30693081 .auto, .@"extern" => .decl_empty_union,
30703082 .@"packed" => .decl_empty_packed_union,
3083 } else switch (loaded_union.layout) {
3084 .auto, .@"extern" => .decl_union,
3085 .@"packed" => .decl_packed_union,
30713086 });
30723087 try dwarf.secOffset(di_nw, parent_ni, 0);
30733088 try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian);
......@@ -3079,14 +3094,12 @@ fn updateConstInner(
30793094 const parent_ni = try dwarf.getConstDecl(pt, ip.namespacePtr(
30803095 ip.namespacePtr(loaded_union.namespace).parent.unwrap().?,
30813096 ).owner_type);
3082 try dwarf.abbrevCode(di_nw, if (loaded_union.field_types.len > 0)
3083 switch (loaded_union.layout) {
3084 .auto, .@"extern" => .type_decl_union,
3085 .@"packed" => .type_decl_packed_union,
3086 }
3087 else switch (loaded_union.layout) {
3097 try dwarf.abbrevCode(di_nw, if (is_empty) switch (loaded_union.layout) {
30883098 .auto, .@"extern" => .type_decl_empty_union,
30893099 .@"packed" => .type_decl_empty_packed_union,
3100 } else switch (loaded_union.layout) {
3101 .auto, .@"extern" => .type_decl_union,
3102 .@"packed" => .type_decl_packed_union,
30903103 });
30913104 try dwarf.secOffset(di_nw, parent_ni, 0);
30923105 try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian);
......@@ -3169,26 +3182,30 @@ fn updateConstInner(
31693182 }
31703183 },
31713184 }
3172 if (loaded_union.captures.len > 0 or loaded_union.field_types.len > 0)
3173 try di_w.writeUleb128(@backingInt(AbbrevCode.null));
3185 if (!is_empty) try di_w.writeUleb128(@backingInt(AbbrevCode.null));
31743186 },
31753187 .enum_type => {
31763188 const loaded_enum = ip.loadEnumType(@"const");
3189 const is_empty = loaded_enum.captures.len == 0 and loaded_enum.field_names.len == 0;
31773190 switch (loaded_enum.owner_union) {
31783191 .none => {
31793192 const zfi = loaded_enum.zir_index.unwrap().?.resolveFile(ip);
31803193 const zf = zcu.fileByIndex(zfi);
31813194 const zir = &zf.zir.?;
31823195 if (loaded_enum.captures.len > 0 or loaded_enum.is_reified) {
3183 try dwarf.abbrevCode(di_nw, if (loaded_enum.captures.len > 0 or
3184 loaded_enum.field_names.len > 0)
3185 .decl_instance_enum
3186 else
3187 .decl_instance_empty_enum);
3196 try dwarf.abbrevCode(di_nw, switch (loaded_enum.name_nav) {
3197 else => if (is_empty) .decl_instance_empty_enum else .decl_instance_enum,
3198 .none => if (is_empty)
3199 .type_decl_instance_empty_enum
3200 else
3201 .type_decl_instance_enum,
3202 });
31883203 try dwarf.refType(pt, di_nw, .fromInterned(ip.namespacePtr(
31893204 ip.namespacePtr(loaded_enum.namespace).parent.unwrap().?,
31903205 ).owner_type));
31913206 try dwarf.secOffset(di_nw, try dwarf.getConstDecl(pt, @"const"), 0);
3207 if (loaded_enum.name_nav == .none)
3208 try dwarf.strx(di_nw, loaded_enum.name.toSlice(ip));
31923209 } else if (loaded_enum.name_nav.unwrap()) |name_ni| {
31933210 const name_nav = ip.getNav(name_ni);
31943211 const decl = zir.getDeclaration(name_nav.srcInst(ip).resolve(ip).?);
......@@ -3197,7 +3214,7 @@ fn updateConstInner(
31973214 ).owner_type);
31983215 try dwarf.abbrevCode(
31993216 di_nw,
3200 if (loaded_enum.field_names.len > 0) .decl_enum else .decl_empty_enum,
3217 if (is_empty) .decl_empty_enum else .decl_enum,
32013218 );
32023219 try dwarf.secOffset(di_nw, parent_ni, 0);
32033220 try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian);
......@@ -3209,10 +3226,10 @@ fn updateConstInner(
32093226 const parent_ni = try dwarf.getConstDecl(pt, ip.namespacePtr(
32103227 ip.namespacePtr(loaded_enum.namespace).parent.unwrap().?,
32113228 ).owner_type);
3212 try dwarf.abbrevCode(di_nw, if (loaded_enum.field_names.len > 0)
3213 .type_decl_enum
3214 else
3215 .type_decl_empty_enum);
3229 try dwarf.abbrevCode(
3230 di_nw,
3231 if (is_empty) .type_decl_empty_enum else .type_decl_enum,
3232 );
32163233 try dwarf.secOffset(di_nw, parent_ni, 0);
32173234 try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian);
32183235 try di_w.writeUleb128(decl.src_column + 1);
......@@ -3220,10 +3237,10 @@ fn updateConstInner(
32203237 }
32213238 },
32223239 else => {
3223 try dwarf.abbrevCode(di_nw, if (loaded_enum.field_names.len > 0)
3224 .generated_enum_type
3225 else
3226 .generated_empty_enum_type);
3240 try dwarf.abbrevCode(
3241 di_nw,
3242 if (is_empty) .generated_empty_enum_type else .generated_enum_type,
3243 );
32273244 try dwarf.strx(di_nw, loaded_enum.fqn.toSlice(ip));
32283245 },
32293246 }
......@@ -3234,8 +3251,7 @@ fn updateConstInner(
32343251 try dwarf.enumConstValue(di_w, loaded_enum, field_index);
32353252 try dwarf.strx(di_nw, loaded_enum.field_names.get(ip)[field_index].toSlice(ip));
32363253 }
3237 if (loaded_enum.captures.len > 0 or loaded_enum.field_names.len > 0)
3238 try di_w.writeUleb128(@backingInt(AbbrevCode.null));
3254 if (!is_empty) try di_w.writeUleb128(@backingInt(AbbrevCode.null));
32393255 },
32403256 // no defined size, so lowered the same as incomplete struct types
32413257 .opaque_type => return dwarf.updateConstIncompleteInner(pt, di_nw, @"const"),
......@@ -4151,7 +4167,7 @@ fn genDeclInner(
41514167 done: switch (instance) {
41524168 .none => unreachable,
41534169 .@"const" => |@"const"| {
4154 const kind: enum { @"struct", @"union", @"enum" }, const zf, const src_line, const src_column, const capture_names, const captures, const name, const maybe_name_nav, const namespace = container: switch (ip.indexToKey(instance.@"const")) {
4170 const kind: enum { @"struct", @"union", @"enum" }, const zf, const src_line, const src_column, const capture_names, const captures, const maybe_name_nav, const namespace = container: switch (ip.indexToKey(instance.@"const")) {
41554171 else => unreachable,
41564172 .struct_type => {
41574173 const loaded_struct = ip.loadStructType(@"const");
......@@ -4200,7 +4216,6 @@ fn genDeclInner(
42004216 src_column,
42014217 capture_names,
42024218 loaded_struct.captures,
4203 loaded_struct.name,
42044219 loaded_struct.name_nav,
42054220 loaded_struct.namespace,
42064221 };
......@@ -4238,7 +4253,6 @@ fn genDeclInner(
42384253 src_column,
42394254 capture_names,
42404255 loaded_union.captures,
4241 loaded_union.name,
42424256 loaded_union.name_nav,
42434257 loaded_union.namespace,
42444258 };
......@@ -4276,7 +4290,6 @@ fn genDeclInner(
42764290 src_column,
42774291 capture_names,
42784292 loaded_enum.captures,
4279 loaded_enum.name,
42804293 loaded_enum.name_nav,
42814294 loaded_enum.namespace,
42824295 };
......@@ -4296,7 +4309,6 @@ fn genDeclInner(
42964309 decl.src_column,
42974310 decl.capture_names,
42984311 loaded_opaque.captures,
4299 loaded_opaque.name,
43004312 loaded_opaque.name_nav,
43014313 loaded_opaque.namespace,
43024314 };
......@@ -4340,7 +4352,7 @@ fn genDeclInner(
43404352 try di_w.writeInt(u32, decl.src_line + 1, dwarf.endian);
43414353 try di_w.writeUleb128(decl.src_column + 1);
43424354 try di_w.writeByte(if (decl.is_pub) DW.ACCESS.public else DW.ACCESS.private);
4343 try dwarf.strx(di_nw, name.toSlice(ip));
4355 try dwarf.strx(di_nw, name_nav.name.toSlice(ip));
43444356 } else {
43454357 const parent_ni = try dwarf.getConstDecl(pt, ip.namespacePtr(
43464358 ip.namespacePtr(namespace).parent.unwrap().?,
......@@ -4357,7 +4369,6 @@ fn genDeclInner(
43574369 try dwarf.secOffset(di_nw, parent_ni, 0);
43584370 try di_w.writeInt(u32, src_line + 1, dwarf.endian);
43594371 try di_w.writeUleb128(src_column + 1);
4360 try dwarf.strx(di_nw, name.toSlice(ip));
43614372 }
43624373 for (capture_names, captures.get(ip)) |capture_name, capture| {
43634374 try dwarf.abbrevCode(di_nw, .capture_specification);
......@@ -4409,9 +4420,12 @@ pub fn updateLineNumber(
44094420) void {
44104421 const di = dwarf.getDeclIfExists(inst) orelse return;
44114422 const decl_ni = di.get(dwarf).debug_info_ni.unwrap().?;
4423 comptime assert(AbbrevCode.common_decl_attrs[0][1] == .ref_addr);
4424 comptime assert(AbbrevCode.common_decl_attrs[1][0] == .decl_line);
4425 comptime assert(AbbrevCode.common_decl_attrs[1][1] == .data4);
44124426 std.mem.writeInt(
44134427 u32,
4414 decl_ni.slice(mf)[AbbrevCode.decl_size..][0..4],
4428 decl_ni.slice(mf)[AbbrevCode.decl_size + dwarf.secOffsetSize() ..][0..4],
44154429 line + 1,
44164430 dwarf.endian,
44174431 );
......@@ -4806,18 +4820,28 @@ pub const AbbrevCode = enum {
48064820 decl_instance_incomplete_enum,
48074821 decl_instance_empty_enum,
48084822 decl_instance_enum,
4823 type_decl_instance_empty_enum,
4824 type_decl_instance_enum,
48094825 decl_instance_empty_incomplete_struct,
48104826 decl_instance_incomplete_struct,
48114827 decl_instance_empty_struct,
48124828 decl_instance_struct,
4829 type_decl_instance_empty_struct,
4830 type_decl_instance_struct,
48134831 decl_instance_empty_packed_struct,
48144832 decl_instance_packed_struct,
4833 type_decl_instance_empty_packed_struct,
4834 type_decl_instance_packed_struct,
48154835 decl_instance_empty_incomplete_union,
48164836 decl_instance_incomplete_union,
48174837 decl_instance_empty_union,
48184838 decl_instance_union,
4839 type_decl_instance_empty_union,
4840 type_decl_instance_union,
48194841 decl_instance_empty_packed_union,
48204842 decl_instance_packed_union,
4843 type_decl_instance_empty_packed_union,
4844 type_decl_instance_packed_union,
48214845 decl_instance_type,
48224846 decl_instance_const,
48234847 decl_instance_const_fully_runtime,
......@@ -4926,29 +4950,31 @@ pub const AbbrevCode = enum {
49264950 DeclValEnum(DW.AT),
49274951 DeclValEnum(DW.FORM),
49284952 };
4929 const decl_attrs = &[_]Attr{
4953 const common_decl_attrs = &[_]Attr{
49304954 .{ .ZIG_parent, .ref_addr },
49314955 .{ .decl_line, .data4 },
49324956 .{ .decl_column, .udata },
4957 };
4958 const decl_attrs = common_decl_attrs ++ .{
49334959 .{ .accessibility, .data1 },
49344960 .{ .name, .strx },
49354961 };
4936 const type_decl_attrs = &[_]Attr{
4937 .{ .ZIG_parent, .ref_addr },
4938 .{ .decl_line, .data4 },
4939 .{ .decl_column, .udata },
4962 const type_decl_attrs = common_decl_attrs ++ .{
49404963 .{ .name, .strx },
49414964 };
49424965 const decl_specification_attrs = decl_attrs ++ &[_]Attr{
49434966 .{ .declaration, .flag_present },
49444967 };
4945 const type_decl_specification_attrs = type_decl_attrs ++ &[_]Attr{
4968 const type_decl_specification_attrs = common_decl_attrs ++ &[_]Attr{
49464969 .{ .declaration, .flag_present },
49474970 };
49484971 const decl_instance_attrs = &[_]Attr{
49494972 .{ .ZIG_parent, .ref_addr },
49504973 .{ .specification, .ref_addr },
49514974 };
4975 const type_decl_instance_attrs = decl_instance_attrs ++ .{
4976 .{ .name, .strx },
4977 };
49524978
49534979 const abbrevs = std.EnumArray(AbbrevCode, struct {
49544980 tag: DeclValEnum(DW.TAG),
......@@ -5367,6 +5393,19 @@ pub const AbbrevCode = enum {
53675393 .{ .type, .ref_addr },
53685394 },
53695395 },
5396 .type_decl_instance_empty_enum = .{
5397 .tag = .enumeration_type,
5398 .attrs = type_decl_instance_attrs ++ .{
5399 .{ .type, .ref_addr },
5400 },
5401 },
5402 .type_decl_instance_enum = .{
5403 .tag = .enumeration_type,
5404 .children = true,
5405 .attrs = type_decl_instance_attrs ++ .{
5406 .{ .type, .ref_addr },
5407 },
5408 },
53705409 .decl_instance_empty_incomplete_struct = .{
53715410 .tag = .structure_type,
53725411 .attrs = decl_instance_attrs,
......@@ -5391,6 +5430,21 @@ pub const AbbrevCode = enum {
53915430 .{ .alignment, .udata },
53925431 },
53935432 },
5433 .type_decl_instance_empty_struct = .{
5434 .tag = .structure_type,
5435 .attrs = type_decl_instance_attrs ++ .{
5436 .{ .byte_size, .udata },
5437 .{ .alignment, .udata },
5438 },
5439 },
5440 .type_decl_instance_struct = .{
5441 .tag = .structure_type,
5442 .children = true,
5443 .attrs = type_decl_instance_attrs ++ .{
5444 .{ .byte_size, .udata },
5445 .{ .alignment, .udata },
5446 },
5447 },
53945448 .decl_instance_empty_packed_struct = .{
53955449 .tag = .structure_type,
53965450 .attrs = decl_instance_attrs ++ .{
......@@ -5404,6 +5458,19 @@ pub const AbbrevCode = enum {
54045458 .{ .type, .ref_addr },
54055459 },
54065460 },
5461 .type_decl_instance_empty_packed_struct = .{
5462 .tag = .structure_type,
5463 .attrs = type_decl_instance_attrs ++ .{
5464 .{ .type, .ref_addr },
5465 },
5466 },
5467 .type_decl_instance_packed_struct = .{
5468 .tag = .structure_type,
5469 .children = true,
5470 .attrs = type_decl_instance_attrs ++ .{
5471 .{ .type, .ref_addr },
5472 },
5473 },
54075474 .decl_instance_empty_incomplete_union = .{
54085475 .tag = .union_type,
54095476 .attrs = decl_instance_attrs,
......@@ -5428,6 +5495,21 @@ pub const AbbrevCode = enum {
54285495 .{ .alignment, .udata },
54295496 },
54305497 },
5498 .type_decl_instance_empty_union = .{
5499 .tag = .union_type,
5500 .attrs = type_decl_instance_attrs ++ .{
5501 .{ .byte_size, .udata },
5502 .{ .alignment, .udata },
5503 },
5504 },
5505 .type_decl_instance_union = .{
5506 .tag = .union_type,
5507 .children = true,
5508 .attrs = type_decl_instance_attrs ++ .{
5509 .{ .byte_size, .udata },
5510 .{ .alignment, .udata },
5511 },
5512 },
54315513 .decl_instance_empty_packed_union = .{
54325514 .tag = .union_type,
54335515 .attrs = decl_instance_attrs ++ .{
......@@ -5441,6 +5523,19 @@ pub const AbbrevCode = enum {
54415523 .{ .type, .ref_addr },
54425524 },
54435525 },
5526 .type_decl_instance_empty_packed_union = .{
5527 .tag = .union_type,
5528 .attrs = type_decl_instance_attrs ++ .{
5529 .{ .type, .ref_addr },
5530 },
5531 },
5532 .type_decl_instance_packed_union = .{
5533 .tag = .union_type,
5534 .children = true,
5535 .attrs = type_decl_instance_attrs ++ .{
5536 .{ .type, .ref_addr },
5537 },
5538 },
54445539 .decl_instance_type = .{
54455540 .tag = .imported_declaration,
54465541 .attrs = decl_instance_attrs ++ .{
test/src/Debugger.zig+1-1
......@@ -2308,7 +2308,7 @@ pub fn addTests(db: *Debugger) void {
23082308 \\(lldb) breakpoint delete --force 1
23092309 \\1 breakpoints deleted; 0 breakpoint locations disabled.
23102310 },
2311 .{ .skip_new_linker = true },
2311 .{},
23122312 );
23132313}
23142314