aboutsummaryrefslogtreecommitdiff
path: root/src/link/Elf/Object.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-12-05 13:49:55 +0100
committerJakub Konka <kubkon@jakubkonka.com>2023-12-05 13:49:55 +0100
commit3f42ed3ca25d6ef32c92a8ed43129b789cf846c5 (patch)
treefacf0de891161731d209fa865a96996c784b15bf /src/link/Elf/Object.zig
parentaf8621db2d2de4675240dad0ff885f23dc33f518 (diff)
downloadzig-3f42ed3ca25d6ef32c92a8ed43129b789cf846c5.tar.gz
zig-3f42ed3ca25d6ef32c92a8ed43129b789cf846c5.zip
elf: do not write ELF header if there were errors
Diffstat (limited to 'src/link/Elf/Object.zig')
-rw-r--r--src/link/Elf/Object.zig9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/link/Elf/Object.zig b/src/link/Elf/Object.zig
index 4f390f31fa..f6e2a79a76 100644
--- a/src/link/Elf/Object.zig
+++ b/src/link/Elf/Object.zig
@@ -54,6 +54,15 @@ pub fn parse(self: *Object, elf_file: *Elf) !void {
self.header = try reader.readStruct(elf.Elf64_Ehdr);
+ if (elf_file.base.options.target.cpu.arch != self.header.?.e_machine.toTargetCpuArch().?) {
+ try elf_file.reportParseError2(
+ self.index,
+ "invalid cpu architecture: {s}",
+ .{@tagName(self.header.?.e_machine.toTargetCpuArch().?)},
+ );
+ return error.InvalidCpuArch;
+ }
+
if (self.header.?.e_shnum == 0) return;
const gpa = elf_file.base.allocator;