示例#1
0
        public static void Print(this DwarfAddressRangeTable addressRangeTable, TextWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            writer.WriteLine("Contents of the .debug_aranges section:");
            writer.WriteLine();
            writer.WriteLine($"  Length:                   {addressRangeTable.HeaderLength}");
            writer.WriteLine($"  Version:                  {addressRangeTable.Version}");
            writer.WriteLine($"  Offset into .debug_info:  0x{addressRangeTable.DebugInfoOffset:x}");
            writer.WriteLine($"  Pointer Size:             {(byte)addressRangeTable.AddressSize}");
            writer.WriteLine($"  Segment Size:             {(byte)addressRangeTable.SegmentSelectorSize}");
            writer.WriteLine();
            var addressSize = (uint)addressRangeTable.AddressSize;

            if (addressSize > 4)
            {
                writer.WriteLine("    Address            Length");
            }
            else
            {
                writer.WriteLine("    Address    Length");
            }

            var formatStyle = "x" + (addressSize * 2);

            foreach (var range in addressRangeTable.Ranges)
            {
                writer.WriteLine($"    {range.Address.ToString(formatStyle)} {range.Length.ToString(formatStyle)}");
            }
            writer.WriteLine($"    {((ulong)0).ToString(formatStyle)} {((ulong)0).ToString(formatStyle)}");
        }
示例#2
0
 public DwarfFile()
 {
     AbbreviationTable = new DwarfAbbreviationTable();
     StringTable       = new DwarfStringTable();
     LineSection       = new DwarfLineSection();
     InfoSection       = new DwarfInfoSection();
     AddressRangeTable = new DwarfAddressRangeTable();
 }