public bool IsInRange(TargetAddress address)
{
if (ranges_offset == null)
return true;
DwarfBinaryReader reader = comp_unit.DwarfReader.DebugRangesReader;
reader.Position = (long) ranges_offset;
TargetAddress base_address = comp_unit.DieCompileUnit.BaseAddress;
while (true) {
long start = reader.ReadAddress ();
long end = reader.ReadAddress ();
if (start == -1) {
Console.WriteLine ("BASE SELECTION: {0:x}", end);
base_address = comp_unit.DwarfReader.GetAddress (end);
continue;
}
if ((start == 0) && (end == 0))
break;
if ((address < base_address+start) || (address >= base_address+end))
continue;
return true;
}
return false;
}