public override IEnumerable <ElfDynamicEntry> GetDynamicEntries(EndianImageReader rdr) { for (; ;) { var dyn = new Elf32_Dyn(); if (!rdr.TryReadInt32(out dyn.d_tag)) { break; } if (dyn.d_tag == ElfDynamicEntry.DT_NULL) { break; } if (!rdr.TryReadInt32(out int val)) { break; } dyn.d_val = val; yield return(new ElfDynamicEntry(dyn.d_tag, dyn.d_ptr)); } }
protected virtual void RenderEntry(string name, DtFormat format, Elf32_Dyn entry, Formatter formatter) { formatter.Write("{0,-20} ", name); switch (format) { default: case DtFormat.Hexadecimal: formatter.Write("{0:X8}", entry.d_val); break; case DtFormat.Decimal: formatter.Write("{0,8}", entry.d_val); break; case DtFormat.Address: formatter.WriteHyperlink(string.Format("{0:X8}", entry.d_ptr), Address.Ptr32(entry.d_ptr)); break; case DtFormat.String: formatter.Write(loader.ReadAsciiString(strtabSection.FileOffset + entry.d_ptr)); break; } }
public override IEnumerable <ElfDynamicEntry> GetDynamicEntries(ulong offsetDynamic) { var rdr = imgLoader.CreateReader(offsetDynamic); for (; ;) { var dyn = new Elf32_Dyn(); if (!rdr.TryReadInt32(out dyn.d_tag)) { break; } if (dyn.d_tag == ElfDynamicEntry.DT_NULL) { break; } if (!rdr.TryReadInt32(out int val)) { break; } dyn.d_val = val; yield return(new ElfDynamicEntry(dyn.d_tag, dyn.d_ptr)); } }
public IEnumerable<Elf32_Dyn> GetDynEntries(uint offset) { var rdr = CreateReader(offset); for (;;) { var dyn = new Elf32_Dyn(); if (!rdr.TryReadInt32(out dyn.d_tag)) break; if (dyn.d_tag == DT_NULL) break; int val; if (!rdr.TryReadInt32(out val)) break; dyn.d_val = val; yield return dyn; } }