diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-08-30 21:48:24 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2023-08-30 21:48:24 +0200 |
| commit | ebe371b75769dcc5526cdb7650c875764fb536e4 (patch) | |
| tree | 4fcd24e1212238b919cf747154fdcefc42a109e8 /src/link/MachO/Object.zig | |
| parent | ba710ec09dd3df4cd0ee8de9a5299aeaed53a847 (diff) | |
| download | zig-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.zig | 15 |
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); |
