aboutsummaryrefslogtreecommitdiff
path: root/src/link/MachO/Object.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-08-30 21:48:24 +0200
committerJakub Konka <kubkon@jakubkonka.com>2023-08-30 21:48:24 +0200
commitebe371b75769dcc5526cdb7650c875764fb536e4 (patch)
tree4fcd24e1212238b919cf747154fdcefc42a109e8 /src/link/MachO/Object.zig
parentba710ec09dd3df4cd0ee8de9a5299aeaed53a847 (diff)
downloadzig-ebe371b75769dcc5526cdb7650c875764fb536e4.tar.gz
zig-ebe371b75769dcc5526cdb7650c875764fb536e4.zip
macho: report basic __eh_frame problems as errors
Diffstat (limited to 'src/link/MachO/Object.zig')
-rw-r--r--src/link/MachO/Object.zig15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/link/MachO/Object.zig b/src/link/MachO/Object.zig
index 43c87cf092..ab12ede5d7 100644
--- a/src/link/MachO/Object.zig
+++ b/src/link/MachO/Object.zig
@@ -334,7 +334,14 @@ fn sectionLessThanByAddress(ctx: void, lhs: SortedSection, rhs: SortedSection) b
return lhs.header.addr < rhs.header.addr;
}
-pub fn splitIntoAtoms(self: *Object, macho_file: *MachO, object_id: u32) !void {
+pub const SplitIntoAtomsError = error{
+ OutOfMemory,
+ EndOfStream,
+ MissingEhFrameSection,
+ BadDwarfCfi,
+};
+
+pub fn splitIntoAtoms(self: *Object, macho_file: *MachO, object_id: u32) SplitIntoAtomsError!void {
log.debug("splitting object({d}, {s}) into atoms", .{ object_id, self.name });
try self.splitRegularSections(macho_file, object_id);
@@ -788,11 +795,7 @@ fn parseUnwindInfo(self: *Object, macho_file: *MachO, object_id: u32) !void {
if (UnwindInfo.UnwindEncoding.isDwarf(record.compactUnwindEncoding, cpu_arch)) break true;
} else false;
- if (needs_eh_frame and !self.hasEhFrameRecords()) {
- log.err("missing __TEXT,__eh_frame section", .{});
- log.err(" in object {s}", .{self.name});
- return error.MissingSection;
- }
+ if (needs_eh_frame and !self.hasEhFrameRecords()) return error.MissingEhFrameSection;
try self.parseRelocs(gpa, sect_id);
const relocs = self.getRelocs(sect_id);