diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-12-05 16:35:08 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2023-12-05 16:35:08 +0100 |
| commit | ab423bd63cd0c61e7299dc0b73cba4d83dffdd38 (patch) | |
| tree | 42f3e8d10fc1c6b739d41f30c2ed01dd5310a1c8 /src | |
| parent | ee1630beeaaa24cb6d65631517afabc0621b902f (diff) | |
| download | zig-ab423bd63cd0c61e7299dc0b73cba4d83dffdd38.tar.gz zig-ab423bd63cd0c61e7299dc0b73cba4d83dffdd38.zip | |
elf: exit early with an error when parsing or init failed when flushing object/archive
Diffstat (limited to 'src')
| -rw-r--r-- | src/link/Elf.zig | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 81b1ec5b6c..2ada57e59f 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -1331,6 +1331,8 @@ pub fn flushStaticLib(self: *Elf, comp: *Compilation, module_obj_path: ?[]const }; } + if (self.misc_errors.items.len > 0) return error.FlushFailure; + // First, we flush relocatable object file generated with our backends. if (self.zigObjectPtr()) |zig_object| { zig_object.resolveSymbols(self); @@ -1468,11 +1470,15 @@ pub fn flushObject(self: *Elf, comp: *Compilation, module_obj_path: ?[]const u8) }; } + if (self.misc_errors.items.len > 0) return error.FlushFailure; + // Init all objects for (self.objects.items) |index| { try self.file(index).?.object.init(self); } + if (self.misc_errors.items.len > 0) return error.FlushFailure; + // Now, we are ready to resolve the symbols across all input files. // We will first resolve the files in the ZigObject, next in the parsed // input Object files. |
