diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2024-12-03 17:35:47 -0800 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2025-01-15 15:11:35 -0800 |
| commit | da25ed95fce32449f70942ea77aa5e00e75dbbdd (patch) | |
| tree | 6e9e979184325aa9f4d73e0c29de5e1f55f5e4f5 /src/link/Elf.zig | |
| parent | 6235cc3da4d2c6ebf7fd31242e8d82d39f5c81cf (diff) | |
| download | zig-da25ed95fce32449f70942ea77aa5e00e75dbbdd.tar.gz zig-da25ed95fce32449f70942ea77aa5e00e75dbbdd.zip | |
macho linker conforms to explicit error sets, again
Diffstat (limited to 'src/link/Elf.zig')
| -rw-r--r-- | src/link/Elf.zig | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 543cd80f6a..be9ab135a8 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -807,7 +807,6 @@ pub fn flushModule(self: *Elf, arena: Allocator, tid: Zcu.PerThread.Id, prog_nod defer tracy.end(); const comp = self.base.comp; - const gpa = comp.gpa; const diags = &comp.link_diags; if (self.llvm_object) |llvm_object| { @@ -821,6 +820,18 @@ pub fn flushModule(self: *Elf, arena: Allocator, tid: Zcu.PerThread.Id, prog_nod const sub_prog_node = prog_node.start("ELF Flush", 0); defer sub_prog_node.end(); + return flushModuleInner(self, arena, tid) catch |err| switch (err) { + error.OutOfMemory => return error.OutOfMemory, + error.LinkFailure => return error.LinkFailure, + else => |e| return diags.fail("ELF flush failed: {s}", .{@errorName(e)}), + }; +} + +fn flushModuleInner(self: *Elf, arena: Allocator, tid: Zcu.PerThread.Id) !void { + const comp = self.base.comp; + const gpa = comp.gpa; + const diags = &comp.link_diags; + const module_obj_path: ?Path = if (self.base.zcu_object_sub_path) |path| .{ .root_dir = self.base.emit.root_dir, .sub_path = if (fs.path.dirname(self.base.emit.sub_path)) |dirname| @@ -2432,7 +2443,7 @@ pub fn addCommentString(self: *Elf) !void { self.comment_merge_section_index = msec_index; } -pub fn resolveMergeSections(self: *Elf) link.File.FlushError!void { +pub fn resolveMergeSections(self: *Elf) !void { const tracy = trace(@src()); defer tracy.end(); |
