Hashtable read_pubtypes()
{
if (debug_pubtypes_reader == null)
return null;
DwarfBinaryReader reader = new DwarfBinaryReader (
bfd, (TargetBlob) debug_pubtypes_reader.Data, Is64Bit);
Hashtable names = Hashtable.Synchronized (new Hashtable ());
while (!reader.IsEof) {
long length = reader.ReadInitialLength ();
long stop = reader.Position + length;
int version = reader.ReadInt16 ();
long debug_offset = reader.ReadOffset ();
reader.ReadOffset ();
if (version != 2)
throw new DwarfException (
bfd, "Wrong version in .debug_pubtypes: {0}",
version);
while (reader.Position < stop) {
long offset = reader.ReadInt32 ();
if (offset == 0)
break;
string name = reader.ReadString ();
if (!names.Contains (name))
names.Add (name, new NameEntry (debug_offset, offset));
}
}
return names;
}