From c5eb15526dac23e231ae54c2461f0eb15b28303e Mon Sep 17 00:00:00 2001 From: Asherah Connor Date: Wed, 10 Mar 2021 16:26:41 +1100 Subject: [PATCH] expose machine field in ELF header --- lib/std/elf.zig | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/std/elf.zig b/lib/std/elf.zig index 26674288a4..4ad859d877 100644 --- a/lib/std/elf.zig +++ b/lib/std/elf.zig @@ -337,6 +337,7 @@ pub const ET = extern enum(u16) { /// All integers are native endian. pub const Header = struct { endian: builtin.Endian, + machine: EM, is_64: bool, entry: u64, phoff: u64, @@ -387,8 +388,14 @@ pub const Header = struct { else => return error.InvalidElfClass, }; + const machine = if (need_bswap) blk: { + const value = @enumToInt(hdr32.e_machine); + break :blk @intToEnum(EM, @byteSwap(@TypeOf(value), value)); + } else hdr32.e_machine; + return @as(Header, .{ .endian = endian, + .machine = machine, .is_64 = is_64, .entry = int(is_64, need_bswap, hdr32.e_entry, hdr64.e_entry), .phoff = int(is_64, need_bswap, hdr32.e_phoff, hdr64.e_phoff),