| ... | @@ -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_type | 1377 | // 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.sdata | 1380 | // 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.member | 1384 | // 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.string | 1387 | // 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.sdata | 1396 | // 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.member | 1399 | // 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.sdata | 1408 | // 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 children | 1411 | // DW.AT.structure_type delimit children |
| 1407 | dbg_info_buffer.appendAssumeCapacity(0); | 1412 | dbg_info_buffer.appendAssumeCapacity(0); |
| 1408 | } else { | 1413 | } else { |