authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-03-24 20:18:26+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-03-24 20:18:26+01:00
logc5a5b420dc141c0a78d9f51f5bee986bae5ce8ab
treebd4f80a7697066bc2da76c64908053a33c8ac106
parente90583f5d17a5a841b7ed8e654af9ed8ce119de5

dwarf: actually write out well-defined placeholder bytes for relocs


1 files changed, 17 insertions(+), 17 deletions(-)

src/link/Dwarf.zig+17-17
......@@ -194,7 +194,7 @@ pub const DeclState = struct {
194194 dbg_info_buffer.appendAssumeCapacity(0);
195195 // DW.AT.type, DW.FORM.ref4
196196 var index = dbg_info_buffer.items.len;
197 try dbg_info_buffer.resize(index + 4);
197 try dbg_info_buffer.writer().writeByteNTimes(0, 4);
198198 try self.addTypeRelocGlobal(atom_index, Type.bool, @intCast(index));
199199 // DW.AT.data_member_location, DW.FORM.udata
200200 try dbg_info_buffer.ensureUnusedCapacity(6);
......@@ -206,7 +206,7 @@ pub const DeclState = struct {
206206 dbg_info_buffer.appendAssumeCapacity(0);
207207 // DW.AT.type, DW.FORM.ref4
208208 index = dbg_info_buffer.items.len;
209 try dbg_info_buffer.resize(index + 4);
209 try dbg_info_buffer.writer().writeByteNTimes(0, 4);
210210 try self.addTypeRelocGlobal(atom_index, payload_ty, @intCast(index));
211211 // DW.AT.data_member_location, DW.FORM.udata
212212 const offset = abi_size - payload_ty.abiSize(mod);
......@@ -235,7 +235,7 @@ pub const DeclState = struct {
235235 dbg_info_buffer.appendAssumeCapacity(0);
236236 // DW.AT.type, DW.FORM.ref4
237237 var index = dbg_info_buffer.items.len;
238 try dbg_info_buffer.resize(index + 4);
238 try dbg_info_buffer.writer().writeByteNTimes(0, 4);
239239 const ptr_ty = ty.slicePtrFieldType(mod);
240240 try self.addTypeRelocGlobal(atom_index, ptr_ty, @intCast(index));
241241 // DW.AT.data_member_location, DW.FORM.udata
......@@ -248,7 +248,7 @@ pub const DeclState = struct {
248248 dbg_info_buffer.appendAssumeCapacity(0);
249249 // DW.AT.type, DW.FORM.ref4
250250 index = dbg_info_buffer.items.len;
251 try dbg_info_buffer.resize(index + 4);
251 try dbg_info_buffer.writer().writeByteNTimes(0, 4);
252252 try self.addTypeRelocGlobal(atom_index, Type.usize, @intCast(index));
253253 // DW.AT.data_member_location, DW.FORM.udata
254254 try dbg_info_buffer.ensureUnusedCapacity(2);
......@@ -260,7 +260,7 @@ pub const DeclState = struct {
260260 dbg_info_buffer.appendAssumeCapacity(@intFromEnum(AbbrevCode.ptr_type));
261261 // DW.AT.type, DW.FORM.ref4
262262 const index = dbg_info_buffer.items.len;
263 try dbg_info_buffer.resize(index + 4);
263 try dbg_info_buffer.writer().writeByteNTimes(0, 4);
264264 try self.addTypeRelocGlobal(atom_index, ty.childType(mod), @intCast(index));
265265 }
266266 },
......@@ -271,13 +271,13 @@ pub const DeclState = struct {
271271 try dbg_info_buffer.writer().print("{}\x00", .{ty.fmt(mod)});
272272 // DW.AT.type, DW.FORM.ref4
273273 var index = dbg_info_buffer.items.len;
274 try dbg_info_buffer.resize(index + 4);
274 try dbg_info_buffer.writer().writeByteNTimes(0, 4);
275275 try self.addTypeRelocGlobal(atom_index, ty.childType(mod), @intCast(index));
276276 // DW.AT.subrange_type
277277 try dbg_info_buffer.append(@intFromEnum(AbbrevCode.array_dim));
278278 // DW.AT.type, DW.FORM.ref4
279279 index = dbg_info_buffer.items.len;
280 try dbg_info_buffer.resize(index + 4);
280 try dbg_info_buffer.writer().writeByteNTimes(0, 4);
281281 try self.addTypeRelocGlobal(atom_index, Type.usize, @intCast(index));
282282 // DW.AT.count, DW.FORM.udata
283283 const len = ty.arrayLenIncludingSentinel(mod);
......@@ -304,7 +304,7 @@ pub const DeclState = struct {
304304 try dbg_info_buffer.writer().print("{d}\x00", .{field_index});
305305 // DW.AT.type, DW.FORM.ref4
306306 const index = dbg_info_buffer.items.len;
307 try dbg_info_buffer.resize(index + 4);
307 try dbg_info_buffer.writer().writeByteNTimes(0, 4);
308308 try self.addTypeRelocGlobal(atom_index, Type.fromInterned(field_ty), @intCast(index));
309309 // DW.AT.data_member_location, DW.FORM.udata
310310 const field_off = ty.structFieldOffset(field_index, mod);
......@@ -331,7 +331,7 @@ pub const DeclState = struct {
331331 try dbg_info_buffer.writer().print("{d}\x00", .{field_index});
332332 // DW.AT.type, DW.FORM.ref4
333333 const index = dbg_info_buffer.items.len;
334 try dbg_info_buffer.resize(index + 4);
334 try dbg_info_buffer.writer().writeByteNTimes(0, 4);
335335 try self.addTypeRelocGlobal(atom_index, Type.fromInterned(field_ty), @intCast(index));
336336 // DW.AT.data_member_location, DW.FORM.udata
337337 try leb128.writeULEB128(dbg_info_buffer.writer(), field_off);
......@@ -352,7 +352,7 @@ pub const DeclState = struct {
352352 dbg_info_buffer.appendAssumeCapacity(0);
353353 // DW.AT.type, DW.FORM.ref4
354354 const index = dbg_info_buffer.items.len;
355 try dbg_info_buffer.resize(index + 4);
355 try dbg_info_buffer.writer().writeByteNTimes(0, 4);
356356 try self.addTypeRelocGlobal(atom_index, Type.fromInterned(field_ty), @intCast(index));
357357 // DW.AT.data_member_location, DW.FORM.udata
358358 try leb128.writeULEB128(dbg_info_buffer.writer(), field_off);
......@@ -425,7 +425,7 @@ pub const DeclState = struct {
425425 dbg_info_buffer.appendAssumeCapacity(0);
426426 // DW.AT.type, DW.FORM.ref4
427427 const inner_union_index = dbg_info_buffer.items.len;
428 try dbg_info_buffer.resize(inner_union_index + 4);
428 try dbg_info_buffer.writer().writeByteNTimes(0, 4);
429429 try self.addTypeRelocLocal(atom_index, @intCast(inner_union_index), 5);
430430 // DW.AT.data_member_location, DW.FORM.udata
431431 try leb128.writeULEB128(dbg_info_buffer.writer(), payload_offset);
......@@ -452,7 +452,7 @@ pub const DeclState = struct {
452452 try dbg_info_buffer.append(0);
453453 // DW.AT.type, DW.FORM.ref4
454454 const index = dbg_info_buffer.items.len;
455 try dbg_info_buffer.resize(index + 4);
455 try dbg_info_buffer.writer().writeByteNTimes(0, 4);
456456 try self.addTypeRelocGlobal(atom_index, Type.fromInterned(field_ty), @intCast(index));
457457 // DW.AT.data_member_location, DW.FORM.udata
458458 try dbg_info_buffer.append(0);
......@@ -469,7 +469,7 @@ pub const DeclState = struct {
469469 dbg_info_buffer.appendAssumeCapacity(0);
470470 // DW.AT.type, DW.FORM.ref4
471471 const index = dbg_info_buffer.items.len;
472 try dbg_info_buffer.resize(index + 4);
472 try dbg_info_buffer.writer().writeByteNTimes(0, 4);
473473 try self.addTypeRelocGlobal(atom_index, Type.fromInterned(union_obj.enum_tag_ty), @intCast(index));
474474 // DW.AT.data_member_location, DW.FORM.udata
475475 try leb128.writeULEB128(dbg_info_buffer.writer(), tag_offset);
......@@ -505,7 +505,7 @@ pub const DeclState = struct {
505505 dbg_info_buffer.appendAssumeCapacity(0);
506506 // DW.AT.type, DW.FORM.ref4
507507 const index = dbg_info_buffer.items.len;
508 try dbg_info_buffer.resize(index + 4);
508 try dbg_info_buffer.writer().writeByteNTimes(0, 4);
509509 try self.addTypeRelocGlobal(atom_index, payload_ty, @intCast(index));
510510 // DW.AT.data_member_location, DW.FORM.udata
511511 try leb128.writeULEB128(dbg_info_buffer.writer(), payload_off);
......@@ -520,7 +520,7 @@ pub const DeclState = struct {
520520 dbg_info_buffer.appendAssumeCapacity(0);
521521 // DW.AT.type, DW.FORM.ref4
522522 const index = dbg_info_buffer.items.len;
523 try dbg_info_buffer.resize(index + 4);
523 try dbg_info_buffer.writer().writeByteNTimes(0, 4);
524524 try self.addTypeRelocGlobal(atom_index, error_ty, @intCast(index));
525525 // DW.AT.data_member_location, DW.FORM.udata
526526 try leb128.writeULEB128(dbg_info_buffer.writer(), error_off);
......@@ -661,7 +661,7 @@ pub const DeclState = struct {
661661
662662 try dbg_info.ensureUnusedCapacity(5 + name_with_null.len);
663663 const index = dbg_info.items.len;
664 try dbg_info.resize(index + 4); // dw.at.type, dw.form.ref4
664 try dbg_info.writer().writeByteNTimes(0, 4);
665665 try self.addTypeRelocGlobal(atom_index, ty, @intCast(index)); // DW.AT.type, DW.FORM.ref4
666666 dbg_info.appendSliceAssumeCapacity(name_with_null); // DW.AT.name, DW.FORM.string
667667 }
......@@ -877,7 +877,7 @@ pub const DeclState = struct {
877877
878878 try dbg_info.ensureUnusedCapacity(5 + name_with_null.len);
879879 const index = dbg_info.items.len;
880 try dbg_info.resize(index + 4); // dw.at.type, dw.form.ref4
880 try dbg_info.writer().writeByteNTimes(0, 4); // dw.at.type, dw.form.ref4
881881 try self.addTypeRelocGlobal(atom_index, child_ty, @intCast(index));
882882 dbg_info.appendSliceAssumeCapacity(name_with_null); // DW.AT.name, DW.FORM.string
883883 }