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(...@@ -1373,13 +1373,16 @@ fn addDbgInfoType(
1373 },1373 },
1374 .Pointer => {1374 .Pointer => {
1375 if (ty.isSlice()) {1375 if (ty.isSlice()) {
1376 // Slices are anonymous structs: struct { .ptr = *, .len = N }1376 // Slices are structs: struct { .ptr = *, .len = N }
1377 try dbg_info_buffer.ensureUnusedCapacity(23);
1378 // DW.AT.structure_type1377 // 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);
1380 // DW.AT.byte_size, DW.FORM.sdata1380 // 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});
1382 // DW.AT.member1384 // DW.AT.member
1385 try dbg_info_buffer.ensureUnusedCapacity(5);
1383 dbg_info_buffer.appendAssumeCapacity(abbrev_struct_member);1386 dbg_info_buffer.appendAssumeCapacity(abbrev_struct_member);
1384 // DW.AT.name, DW.FORM.string1387 // DW.AT.name, DW.FORM.string
1385 dbg_info_buffer.appendSliceAssumeCapacity("ptr");1388 dbg_info_buffer.appendSliceAssumeCapacity("ptr");
...@@ -1391,6 +1394,7 @@ fn addDbgInfoType(...@@ -1391,6 +1394,7 @@ fn addDbgInfoType(
1391 const ptr_ty = ty.slicePtrFieldType(buf);1394 const ptr_ty = ty.slicePtrFieldType(buf);
1392 try relocs.append(.{ .ty = ptr_ty, .reloc = @intCast(u32, index) });1395 try relocs.append(.{ .ty = ptr_ty, .reloc = @intCast(u32, index) });
1393 // DW.AT.data_member_location, DW.FORM.sdata1396 // DW.AT.data_member_location, DW.FORM.sdata
1397 try dbg_info_buffer.ensureUnusedCapacity(6);
1394 dbg_info_buffer.appendAssumeCapacity(0);1398 dbg_info_buffer.appendAssumeCapacity(0);
1395 // DW.AT.member1399 // DW.AT.member
1396 dbg_info_buffer.appendAssumeCapacity(abbrev_struct_member);1400 dbg_info_buffer.appendAssumeCapacity(abbrev_struct_member);
...@@ -1402,7 +1406,8 @@ fn addDbgInfoType(...@@ -1402,7 +1406,8 @@ fn addDbgInfoType(
1402 try dbg_info_buffer.resize(index + 4);1406 try dbg_info_buffer.resize(index + 4);
1403 try relocs.append(.{ .ty = Type.initTag(.usize), .reloc = @intCast(u32, index) });1407 try relocs.append(.{ .ty = Type.initTag(.usize), .reloc = @intCast(u32, index) });
1404 // DW.AT.data_member_location, DW.FORM.sdata1408 // 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));
1406 // DW.AT.structure_type delimit children1411 // DW.AT.structure_type delimit children
1407 dbg_info_buffer.appendAssumeCapacity(0);1412 dbg_info_buffer.appendAssumeCapacity(0);
1408 } else {1413 } else {