================ @@ -2550,6 +2550,21 @@ ModuleSP Process::ReadModuleFromMemory(const FileSpec &file_spec, } ModuleSP module_sp(new Module(file_spec, ArchSpec())); if (module_sp) { + if (size_to_read == 0) { + // Default to 8192 in case we can't find a memory region. + size_to_read = 0x2000; + MemoryRegionInfo range_info; + Status error(GetMemoryRegionInfo(header_addr, range_info)); + if (error.Success()) { + // We found a memory region, set the range of bytes ro read to read to + // the end of the memory region. This should be enough to contain the + // file header and important bits. + const auto &range = range_info.GetRange(); ---------------- labath wrote:
Depending on how the file is linked (`-z noseparate-code`) the first region could end up containing all of the code in the binary (and so be arbitrarily big), it might not be a good idea to read all of it. What's the reason for this change? Could that be a separate patch as well? (I think we can test DT_DYNAMIC parsing without actually loading the file from memory) For reference, this is what I get with a hello world binary built like this: ``` $ clang++ -o /tmp/a.out -x c++ - -static <<<"int main(){}" -Wl,-z,noseparate-code && llvm-readelf -e /tmp/a.out | grep -e LOAD -B 1 Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000000 0x0000000000400000 0x0000000000400000 0x09caf6 0x09caf6 R E 0x1000 LOAD 0x09ceb0 0x000000000049deb0 0x000000000049deb0 0x005b58 0x00b2b8 RW 0x1000 ``` https://github.com/llvm/llvm-project/pull/101237 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits