jasonmolenda wrote:
I think we should change these checks to look for an explicitly inaccessible
memory region, like
```
if (region_info.GetReadable() != MemoryRegionInfo::OptionalBool::eNo &&
region_info.GetWritable() != MemoryRegionInfo::OptionalBool::eNo &&
region_info.GetExecutable() !=
MemoryRegionInfo::OptionalBool::eNo) {
// This region is inaccessible, if it is large enough, use this
address.
if (ret + size < region_info.GetRange().GetRangeEnd())
return ret;
else
ret = region_info.GetRange().GetRangeEnd();
// keep searching
```
and I also do think there is value in adding a special case for address 0.
Even if we have an inaddressable memory block at address 0 which should be
eligible for shadowing with lldb's host memory, using that is a poor choice
because people crash at address 0 all the time and we don't want references to
that address finding the IRMemoryMap host side memory values.
```
} else if (ret == 0) {
// Don't put our host-side memory block at virtual address 0 even if
it
// seems eligible, we don't want to confuse things when a program
// crashes accessing that address, a common way of crashing.
ret = region_info.GetRange().GetRangeEnd();
```
https://github.com/llvm/llvm-project/pull/99045
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits