Function read [src]

Prototype

pub fn read(r: *std.Io.Reader) ReadError!Header

Parameters

r: *std.Io.Reader

Possible Errors

EndOfStream Error
InvalidElfClass
InvalidElfEndian
InvalidElfMagic
InvalidElfVersion
ReadFailed Error

See the Reader implementation for detailed diagnostics.

Source

pub fn read(r: *std.Io.Reader) ReadError!Header { const buf = try r.peek(@sizeOf(Elf64_Ehdr)); if (!mem.eql(u8, buf[0..4], MAGIC)) return error.InvalidElfMagic; if (buf[EI_VERSION] != 1) return error.InvalidElfVersion; const endian: std.builtin.Endian = switch (buf[EI_DATA]) { ELFDATA2LSB => .little, ELFDATA2MSB => .big, else => return error.InvalidElfEndian, }; return switch (buf[EI_CLASS]) { ELFCLASS32 => .init(try r.takeStruct(Elf32_Ehdr, endian), endian), ELFCLASS64 => .init(try r.takeStruct(Elf64_Ehdr, endian), endian), else => return error.InvalidElfClass, }; }