diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2022-12-07 22:41:22 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2022-12-09 09:24:25 +0100 |
| commit | be2b85f670d5fd1d3a8b5cea60bfc8a7b5f2e1e0 (patch) | |
| tree | 4e25e5bdd51f9f34af33e275320f667db2461404 /src/link/Dwarf.zig | |
| parent | 8e71a79e4b8252eba22465ebe7e305a2a348f438 (diff) | |
| download | zig-be2b85f670d5fd1d3a8b5cea60bfc8a7b5f2e1e0.tar.gz zig-be2b85f670d5fd1d3a8b5cea60bfc8a7b5f2e1e0.zip | |
dwarf: refactor object file format and ptr width switches in writeDbgLineHeader
Diffstat (limited to 'src/link/Dwarf.zig')
| -rw-r--r-- | src/link/Dwarf.zig | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/src/link/Dwarf.zig b/src/link/Dwarf.zig index 3a4d70cb6a..26d08b708e 100644 --- a/src/link/Dwarf.zig +++ b/src/link/Dwarf.zig @@ -2306,15 +2306,19 @@ pub fn writeDbgLineHeader(self: *Dwarf, module: *Module) !void { // not including the initial length itself. const after_init_len = di_buf.items.len + init_len_size; const init_len = dbg_line_prg_end - after_init_len; - if (self.bin_file.tag == .macho) { - mem.writeIntLittle(u32, di_buf.addManyAsArrayAssumeCapacity(4), @intCast(u32, init_len)); - } else switch (self.ptr_width) { - .p32 => { - mem.writeInt(u32, di_buf.addManyAsArrayAssumeCapacity(4), @intCast(u32, init_len), target_endian); + + switch (self.bin_file.tag) { + .macho => { + mem.writeIntLittle(u32, di_buf.addManyAsArrayAssumeCapacity(4), @intCast(u32, init_len)); }, - .p64 => { - di_buf.appendNTimesAssumeCapacity(0xff, 4); - mem.writeInt(u64, di_buf.addManyAsArrayAssumeCapacity(8), init_len, target_endian); + else => switch (self.ptr_width) { + .p32 => { + mem.writeInt(u32, di_buf.addManyAsArrayAssumeCapacity(4), @intCast(u32, init_len), target_endian); + }, + .p64 => { + di_buf.appendNTimesAssumeCapacity(0xff, 4); + mem.writeInt(u64, di_buf.addManyAsArrayAssumeCapacity(8), init_len, target_endian); + }, }, } @@ -2325,7 +2329,12 @@ pub fn writeDbgLineHeader(self: *Dwarf, module: *Module) !void { // Therefore we rely on the NOP jump at the beginning of the Line Number Program for // padding rather than this field. const before_header_len = di_buf.items.len; - di_buf.items.len += if (self.bin_file.tag == .macho) @sizeOf(u32) else ptr_width_bytes; // We will come back and write this. + + di_buf.items.len += switch (self.bin_file.tag) { // We will come back and write this. + .macho => @sizeOf(u32), + else => ptr_width_bytes, + }; + const after_header_len = di_buf.items.len; const opcode_base = DW.LNS.set_isa + 1; @@ -2374,14 +2383,18 @@ pub fn writeDbgLineHeader(self: *Dwarf, module: *Module) !void { di_buf.appendAssumeCapacity(0); // file names sentinel const header_len = di_buf.items.len - after_header_len; - if (self.bin_file.tag == .macho) { - mem.writeIntLittle(u32, di_buf.items[before_header_len..][0..4], @intCast(u32, header_len)); - } else switch (self.ptr_width) { - .p32 => { - mem.writeInt(u32, di_buf.items[before_header_len..][0..4], @intCast(u32, header_len), target_endian); + + switch (self.bin_file.tag) { + .macho => { + mem.writeIntLittle(u32, di_buf.items[before_header_len..][0..4], @intCast(u32, header_len)); }, - .p64 => { - mem.writeInt(u64, di_buf.items[before_header_len..][0..8], header_len, target_endian); + else => switch (self.ptr_width) { + .p32 => { + mem.writeInt(u32, di_buf.items[before_header_len..][0..4], @intCast(u32, header_len), target_endian); + }, + .p64 => { + mem.writeInt(u64, di_buf.items[before_header_len..][0..8], header_len, target_endian); + }, }, } |
