labath added a comment. In D63868#1563873 <https://reviews.llvm.org/D63868#1563873>, @jankratochvil wrote:
> In D63868#1563802 <https://reviews.llvm.org/D63868#1563802>, @labath wrote: > > > Does this mean that there is a bug in lldb-server, where some memory read > > requests fail if they span an unreadable page. Can this also be triggered > > by a $m packet? Would you be interested in distilling that into a test? > > > OK, I will try to reproduce it - you are right GDB documentation > <https://sourceware.org/gdb/current/onlinedocs/gdb/Packets.html#Packets> says > for the `m` packet: "//The reply may contain fewer addressable memory units > than requested if the server was able to read only part of the region of > memory. //" > > And LLDB is using `ReadMemory` in > `NativeProcessProtocol::ReadMemoryWithoutTrap` from > `GDBRemoteCommunicationServerLLGS::Handle_memory_read`. Thanks. To deterministically reproduce an unmapped page of memory, the best approach I can think of is to first mmap a larger block of memory, and then munmap a part of it. > > >> I think it would be better to do the loading inside the DynamicLoader >> plugin, and have `ProcessGDBRemote::LoadModules` be responsible only for >> sending the appropriate qXfer packet and parsing the response. The fact that >> loading the libraries from a `LoadedModuleInfoList` is largely similar for >> posix&windows can be handled (at a later date) by factoring the common code >> into a utility function, a common base class or something else... > > IIUC you believe this patch should be more refactored? I do not have much > overview of this code of LLDB (+Windows libraries in general). IIUC you > propose: > > - The current libraries loading code from `LoadedModuleInfoList` of > `ProcessGDBRemote::LoadModules` moved to > `lldb/source/Plugins/Platform/Windows/` Yes, that's more or less it. Though I am open to being convinced otherwise... > - later: `DynamicLoaderPOSIXDYLD::RefreshModules` and > `DynamicLoaderPOSIXDYLD::LoadAllCurrentModules` somehow reusing that code > (after it is moved back to some common library)? But that looks to me as too > little code to make it worth it. Possibly. If the same code is useful for both windows and posix, then it might make sense to put it into the base DynamicLoader class, which means we wouldn't have to create new plugins or whatnot. Or we might actually want to create a DynamicLoaderSVR4, which only works with SVR4, and have these delegate to it. But that's a discussion for another day... Repository: rLLDB LLDB CHANGES SINCE LAST ACTION https://reviews.llvm.org/D63868/new/ https://reviews.llvm.org/D63868 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits