public void ModuleLoaded() { if (aranges != null) return; aranges = ArrayList.Synchronized (read_aranges ()); symtab = new DwarfSymbolTable (this, aranges); pubnames = read_pubnames (); // pubtypes = read_pubtypes (); }
public DwarfReader(Bfd bfd, Module module) { this.bfd = bfd; this.module = module; this.filename = bfd.FileName; this.target_info = bfd.TargetMemoryInfo; debug_info_reader = create_reader (".debug_info", false); DwarfBinaryReader reader = DebugInfoReader; reader.ReadInitialLength (out is64bit); int version = reader.ReadInt16 (); if (version < 2) throw new DwarfException ( bfd, "Wrong DWARF version: {0}", version); reader.ReadOffset (); address_size = reader.ReadByte (); if ((address_size != 4) && (address_size != 8)) throw new DwarfException ( bfd, "Unknown address size: {0}", address_size); debug_abbrev_reader = create_reader (".debug_abbrev", false); debug_line_reader = create_reader (".debug_line", false); debug_aranges_reader = create_reader (".debug_aranges", true); debug_pubnames_reader = create_reader (".debug_pubnames", true); debug_pubtypes_reader = create_reader (".debug_pubtypes", true); debug_str_reader = create_reader (".debug_str", true); debug_loc_reader = create_reader (".debug_loc", false); debug_ranges_reader = create_reader (".debug_ranges", true); compile_unit_hash = Hashtable.Synchronized (new Hashtable ()); method_source_hash = Hashtable.Synchronized (new Hashtable ()); method_hash = Hashtable.Synchronized (new Hashtable ()); source_file_hash = Hashtable.Synchronized (new Hashtable ()); if (bfd.IsLoaded) { aranges = ArrayList.Synchronized (read_aranges ()); symtab = new DwarfSymbolTable (this, aranges); pubnames = read_pubnames (); // pubtypes = read_pubtypes (); } long offset = 0; while (offset < reader.Size) { CompileUnitBlock block = new CompileUnitBlock (this, offset); compile_unit_hash.Add (offset, block); offset += block.length; } }