public CreateReader ( uint fileOffset ) : Reko.Core.ImageReader | ||
fileOffset | uint | |
Результат | Reko.Core.ImageReader |
public override void Render(ImageMapSegment segment, Program program, Formatter formatter) { var entries = shdr.sh_size / shdr.sh_entsize; var symtab = (int)shdr.sh_link; var rdr = loader.CreateReader(shdr.sh_offset); for (int i = 0; i < entries; ++i) { uint offset; if (!rdr.TryReadUInt32(out offset)) { return; } uint info; if (!rdr.TryReadUInt32(out info)) { return; } int addend; if (!rdr.TryReadInt32(out addend)) { return; } uint sym = info >> 8; string symStr = loader.GetSymbol(symtab, (int)sym); formatter.Write("{0:X8} {1,3} {2:X8} {3:X8} {4}", offset, info & 0xFF, sym, addend, symStr); formatter.WriteLine(); } }
public override void Render(ImageMapSegment segment, Program program, Formatter formatter) { var entries = shdr.sh_size / shdr.sh_entsize; var symtab = (int)shdr.sh_link; var rdr = loader.CreateReader(shdr.sh_offset); for (int i = 0; i < entries; ++i) { uint iName; if (!rdr.TryReadUInt32(out iName)) { return; } uint value; if (!rdr.TryReadUInt32(out value)) { return; } uint size; if (!rdr.TryReadUInt32(out size)) { return; } byte info; if (!rdr.TryReadByte(out info)) { return; } byte other; if (!rdr.TryReadByte(out other)) { return; } ushort shIndex; if (!rdr.TryReadUInt16(out shIndex)) { return; } string symStr = loader.GetStrPtr(symtab, iName); string segName = loader.GetSectionName(shIndex); formatter.Write("{0,-40} {1:X8} {2:X8} {3:X2} {4}", symStr, value, size, info & 0xFF, segName); formatter.WriteLine(); } }
public EndianImageReader CreateReader(ulong fileOffset) { return(imgLoader.CreateReader(fileOffset)); }