Ejemplo n.º 1
0
        public override void Render(ImageSegment segment, Program program, Formatter formatter)
        {
            var entries = shdr.EntryCount();
            var symtab  = shdr.LinkedSection;
            var rdr     = loader.CreateReader(shdr.FileOffset);

            for (ulong i = 0; i < entries; ++i)
            {
                ulong offset;
                if (!rdr.TryReadUInt64(out offset))
                {
                    return;
                }
                ulong info;
                if (!rdr.TryReadUInt64(out info))
                {
                    return;
                }
                ulong addend;
                if (!rdr.TryReadUInt64(out addend))
                {
                    return;
                }

                ulong  sym    = info >> 32;
                string symStr = loader.GetSymbol64(symtab, sym);
                formatter.Write("{0:X8} {1,3} {2:X8} {3:X16} {4} ({5})", offset, info & 0xFFFFFFFF, sym, addend, symStr, sym);
                formatter.WriteLine();
            }
        }
Ejemplo n.º 2
0
 public override void Render(ImageSegment segment, Program program, Formatter formatter)
 {
     var entries = shdr.EntryCount();
     var symtab = shdr.LinkedSection;
     var rdr = loader.CreateReader(shdr.FileOffset);
     for (var i = 0; i < entries; ++i)
     {
         uint iName;
         if (!rdr.TryReadUInt32(out iName))
             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;
         ulong value;
         if (!rdr.TryReadUInt64(out value))
             return;
         ulong size;
         if (!rdr.TryReadUInt64(out size))
             return;
         string symStr = loader.GetStrPtr(symtab, iName);
         string segName = loader.GetSectionName(shIndex);
         formatter.Write("{0,4} {1,-40} {2:X8} {3:X8} {4:X2} {5}", i, symStr, value, size, info & 0xFF, segName);
         formatter.WriteLine();
     }
 }