'Get a list of abstract locations that is within the range of [addr, addr + size]
This implementation is pretty slow. But since this method won\'t be called frequently, we can live with the bad
implementation for now.
:param addr:    Starting address of the memory region.
:param size:    Size of the memory region, in bytes.
:return:        A list of covered AbstractLocation objects, or an empty list if there is none.'

def get_abstract_locations(self, addr, size):

    ret = []
    for aloc in self._alocs.itervalues():
        for seg in aloc.segments:
            if ((seg.offset >= addr) and (seg.offset < (addr + size))):
                ret.append(aloc)
                break
    return ret
