pub const ProgramHeaderIterator = struct pub fn next(it: *ProgramHeaderIterator) !?Elf64.Phdr801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820pub const ProgramHeaderIterator = struct {
is_64: bool,
endian: Endian,
phnum: u16,
phoff: u64,
file_reader: *Io.File.Reader,
index: usize = 0,
pub fn next(it: *ProgramHeaderIterator) !?Elf64.Phdr {
if (it.index >= it.phnum) return null;
defer it.index += 1;
const size: u64 = if (it.is_64) @sizeOf(Elf64.Phdr) else @sizeOf(Elf32.Phdr);
const offset = it.phoff + size * it.index;
try it.file_reader.seekTo(offset);
return try takeProgramHeader(&it.file_reader.interface, it.is_64, it.endian);
}
}