Beispiel #1
0
        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();
            }
        }