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 lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits