aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-08-23 00:28:15 -0700
committerAndrew Kelley <andrew@ziglang.org>2022-08-23 00:28:45 -0700
commit1ce71c86bff351a4ade4321e188a13c9d3cff8b4 (patch)
tree59cfb709ae37a1f737d30b074f1360a1f8f3b6c4 /src
parentc84e5ee87852eafff0cbf986bf02c5221cbcec35 (diff)
downloadzig-1ce71c86bff351a4ade4321e188a13c9d3cff8b4.tar.gz
zig-1ce71c86bff351a4ade4321e188a13c9d3cff8b4.zip
std.debug: implement support for DWARFv5
Diffstat (limited to 'src')
-rw-r--r--src/link/MachO.zig4
-rw-r--r--src/link/MachO/Object.zig15
2 files changed, 17 insertions, 2 deletions
diff --git a/src/link/MachO.zig b/src/link/MachO.zig
index 8eb29dcfc7..91eaedc734 100644
--- a/src/link/MachO.zig
+++ b/src/link/MachO.zig
@@ -5862,8 +5862,8 @@ pub fn generateSymbolStabs(
else => |e| return e,
};
- const tu_name = try compile_unit.die.getAttrString(&debug_info, dwarf.AT.name, compile_unit.is_64);
- const tu_comp_dir = try compile_unit.die.getAttrString(&debug_info, dwarf.AT.comp_dir, compile_unit.is_64);
+ const tu_name = try compile_unit.die.getAttrString(&debug_info, dwarf.AT.name, debug_info.debug_str);
+ const tu_comp_dir = try compile_unit.die.getAttrString(&debug_info, dwarf.AT.comp_dir, debug_info.debug_str);
// Open scope
try locals.ensureUnusedCapacity(3);
diff --git a/src/link/MachO/Object.zig b/src/link/MachO/Object.zig
index 9bcf5243c1..22627975f2 100644
--- a/src/link/MachO/Object.zig
+++ b/src/link/MachO/Object.zig
@@ -584,6 +584,11 @@ pub fn parseDwarfInfo(self: Object) error{Overflow}!dwarf.DwarfInfo {
.debug_line = &[0]u8{},
.debug_line_str = &[0]u8{},
.debug_ranges = &[0]u8{},
+ .debug_loclists = &[0]u8{},
+ .debug_rnglists = &[0]u8{},
+ .debug_addr = &[0]u8{},
+ .debug_names = &[0]u8{},
+ .debug_frame = &[0]u8{},
};
for (self.sections.items) |sect| {
const segname = sect.segName();
@@ -601,6 +606,16 @@ pub fn parseDwarfInfo(self: Object) error{Overflow}!dwarf.DwarfInfo {
di.debug_line_str = try self.getSectionContents(sect);
} else if (mem.eql(u8, sectname, "__debug_ranges")) {
di.debug_ranges = try self.getSectionContents(sect);
+ } else if (mem.eql(u8, sectname, "__debug_loclists")) {
+ di.debug_loclists = try self.getSectionContents(sect);
+ } else if (mem.eql(u8, sectname, "__debug_rnglists")) {
+ di.debug_rnglists = try self.getSectionContents(sect);
+ } else if (mem.eql(u8, sectname, "__debug_addr")) {
+ di.debug_addr = try self.getSectionContents(sect);
+ } else if (mem.eql(u8, sectname, "__debug_names")) {
+ di.debug_names = try self.getSectionContents(sect);
+ } else if (mem.eql(u8, sectname, "__debug_frame")) {
+ di.debug_frame = try self.getSectionContents(sect);
}
}
}