From 3318400ea33cfa5d8a5d547dc535d7e30207dea2 Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Sat, 5 Mar 2022 14:43:48 +0100 Subject: macho: migrate to named struct for slices --- src/link/MachO/DebugSymbols.zig | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src/link') diff --git a/src/link/MachO/DebugSymbols.zig b/src/link/MachO/DebugSymbols.zig index 19bca5a43b..5173682f2b 100644 --- a/src/link/MachO/DebugSymbols.zig +++ b/src/link/MachO/DebugSymbols.zig @@ -1373,13 +1373,16 @@ fn addDbgInfoType( }, .Pointer => { if (ty.isSlice()) { - // Slices are anonymous structs: struct { .ptr = *, .len = N } - try dbg_info_buffer.ensureUnusedCapacity(23); + // Slices are structs: struct { .ptr = *, .len = N } // DW.AT.structure_type - dbg_info_buffer.appendAssumeCapacity(abbrev_anon_struct_type); + try dbg_info_buffer.ensureUnusedCapacity(2); + dbg_info_buffer.appendAssumeCapacity(abbrev_struct_type); // DW.AT.byte_size, DW.FORM.sdata - dbg_info_buffer.appendAssumeCapacity(16); + dbg_info_buffer.appendAssumeCapacity(@sizeOf(usize) * 2); + // DW.AT.name, DW.FORM.string + try dbg_info_buffer.writer().print("{}\x00", .{ty}); // DW.AT.member + try dbg_info_buffer.ensureUnusedCapacity(5); dbg_info_buffer.appendAssumeCapacity(abbrev_struct_member); // DW.AT.name, DW.FORM.string dbg_info_buffer.appendSliceAssumeCapacity("ptr"); @@ -1391,6 +1394,7 @@ fn addDbgInfoType( const ptr_ty = ty.slicePtrFieldType(buf); try relocs.append(.{ .ty = ptr_ty, .reloc = @intCast(u32, index) }); // DW.AT.data_member_location, DW.FORM.sdata + try dbg_info_buffer.ensureUnusedCapacity(6); dbg_info_buffer.appendAssumeCapacity(0); // DW.AT.member dbg_info_buffer.appendAssumeCapacity(abbrev_struct_member); @@ -1402,7 +1406,8 @@ fn addDbgInfoType( try dbg_info_buffer.resize(index + 4); try relocs.append(.{ .ty = Type.initTag(.usize), .reloc = @intCast(u32, index) }); // DW.AT.data_member_location, DW.FORM.sdata - dbg_info_buffer.appendAssumeCapacity(8); + try dbg_info_buffer.ensureUnusedCapacity(2); + dbg_info_buffer.appendAssumeCapacity(@sizeOf(usize)); // DW.AT.structure_type delimit children dbg_info_buffer.appendAssumeCapacity(0); } else { -- cgit v1.2.3