authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-03-05 14:43:48+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-03-05 17:55:01+01:00
log3318400ea33cfa5d8a5d547dc535d7e30207dea2
treee75ea6bd36f477aa11795400ff5c84167d6e7b6d
parenteaf08bfb849165ffbf68cd4e51531e393cc196f8

macho: migrate to named struct for slices


1 files changed, 10 insertions(+), 5 deletions(-)

src/link/MachO/DebugSymbols.zig+10-5
......@@ -1373,13 +1373,16 @@ fn addDbgInfoType(
13731373 },
13741374 .Pointer => {
13751375 if (ty.isSlice()) {
1376 // Slices are anonymous structs: struct { .ptr = *, .len = N }
1377 try dbg_info_buffer.ensureUnusedCapacity(23);
1376 // Slices are structs: struct { .ptr = *, .len = N }
13781377 // DW.AT.structure_type
1379 dbg_info_buffer.appendAssumeCapacity(abbrev_anon_struct_type);
1378 try dbg_info_buffer.ensureUnusedCapacity(2);
1379 dbg_info_buffer.appendAssumeCapacity(abbrev_struct_type);
13801380 // DW.AT.byte_size, DW.FORM.sdata
1381 dbg_info_buffer.appendAssumeCapacity(16);
1381 dbg_info_buffer.appendAssumeCapacity(@sizeOf(usize) * 2);
1382 // DW.AT.name, DW.FORM.string
1383 try dbg_info_buffer.writer().print("{}\x00", .{ty});
13821384 // DW.AT.member
1385 try dbg_info_buffer.ensureUnusedCapacity(5);
13831386 dbg_info_buffer.appendAssumeCapacity(abbrev_struct_member);
13841387 // DW.AT.name, DW.FORM.string
13851388 dbg_info_buffer.appendSliceAssumeCapacity("ptr");
......@@ -1391,6 +1394,7 @@ fn addDbgInfoType(
13911394 const ptr_ty = ty.slicePtrFieldType(buf);
13921395 try relocs.append(.{ .ty = ptr_ty, .reloc = @intCast(u32, index) });
13931396 // DW.AT.data_member_location, DW.FORM.sdata
1397 try dbg_info_buffer.ensureUnusedCapacity(6);
13941398 dbg_info_buffer.appendAssumeCapacity(0);
13951399 // DW.AT.member
13961400 dbg_info_buffer.appendAssumeCapacity(abbrev_struct_member);
......@@ -1402,7 +1406,8 @@ fn addDbgInfoType(
14021406 try dbg_info_buffer.resize(index + 4);
14031407 try relocs.append(.{ .ty = Type.initTag(.usize), .reloc = @intCast(u32, index) });
14041408 // DW.AT.data_member_location, DW.FORM.sdata
1405 dbg_info_buffer.appendAssumeCapacity(8);
1409 try dbg_info_buffer.ensureUnusedCapacity(2);
1410 dbg_info_buffer.appendAssumeCapacity(@sizeOf(usize));
14061411 // DW.AT.structure_type delimit children
14071412 dbg_info_buffer.appendAssumeCapacity(0);
14081413 } else {