pub const SectionHeaderBufferIterator = struct is_64: boolendian: Endianshnum: u16shoff: u64buf: []const u8index: usize = 0pub fn next(it: *SectionHeaderBufferIterator) !?Elf64_Shdr883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903pub const SectionHeaderBufferIterator = struct {
is_64: bool,
endian: Endian,
shnum: u16,
shoff: u64,
buf: []const u8,
index: usize = 0,
pub fn next(it: *SectionHeaderBufferIterator) !?Elf64_Shdr {
if (it.index >= it.shnum) return null;
defer it.index += 1;
const size: u64 = if (it.is_64) @sizeOf(Elf64_Shdr) else @sizeOf(Elf32_Shdr);
const offset = it.shoff + size * it.index;
if (offset > it.buf.len) return error.EndOfStream;
var reader = Io.Reader.fixed(it.buf[@intCast(offset)..]);
return try takeSectionHeader(&reader, it.is_64, it.endian);
}
}