diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2024-12-03 20:35:23 -0800 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2025-01-15 15:11:35 -0800 |
| commit | 9bf715de74a7d5badeae932afb594b7c6b33afa3 (patch) | |
| tree | 302e2c5a42d30e379c5bb2e86c24360ea49ab3fb /src/link/Elf.zig | |
| parent | 77accf597d845245847b143e42ec4109c9468480 (diff) | |
| download | zig-9bf715de74a7d5badeae932afb594b7c6b33afa3.tar.gz zig-9bf715de74a7d5badeae932afb594b7c6b33afa3.zip | |
rework error handling in the backends
Diffstat (limited to 'src/link/Elf.zig')
| -rw-r--r-- | src/link/Elf.zig | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 115c9f4550..7dd092782a 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -2368,12 +2368,25 @@ pub fn updateContainerType( self: *Elf, pt: Zcu.PerThread, ty: InternPool.Index, -) link.File.UpdateNavError!void { +) link.File.UpdateContainerTypeError!void { if (build_options.skip_non_native and builtin.object_format != .elf) { @panic("Attempted to compile for object format that was disabled by build configuration"); } if (self.llvm_object) |_| return; - return self.zigObjectPtr().?.updateContainerType(pt, ty); + const zcu = pt.zcu; + const gpa = zcu.gpa; + return self.zigObjectPtr().?.updateContainerType(pt, ty) catch |err| switch (err) { + error.OutOfMemory => return error.OutOfMemory, + else => |e| { + try zcu.failed_types.putNoClobber(gpa, ty, try Zcu.ErrorMsg.create( + gpa, + zcu.typeSrcLoc(ty), + "failed to update container type: {s}", + .{@errorName(e)}, + )); + return error.TypeFailureReported; + }, + }; } pub fn updateExports( |
