[Lldb-commits] [PATCH] D53094: [pecoff] Implement ObjectFilePECOFF::GetDependedModules()

Hui Huang via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Wed Oct 10 18:38:39 PDT 2018


Hui added inline comments.


================
Comment at: source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp:810
+
+  std::lock_guard<std::recursive_mutex> guard(module_sp->GetMutex());
+
----------------
zturner wrote:
> Does this actually need to be a `recursive_mutex`?
I think there is access to the member 'm_filespec_ap'.


================
Comment at: source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp:862
+
+      // Note that at this moment we only have the base name of the dll.
+      m_filespec_ap->Append(FileSpec(dll_name_cstr, true));
----------------
Given no valid UUID for PECOFF for now,  you can't get a valid image based on a filename only. 
So if the exe target is filed on LLDB, its shared modules probably can't be appended to the target's image list **until the process is launched**. This makes it impossible for developers to lookup any symbol from the shared libraries or set any breakpoint by name to the shared libraries.

For example, 


```
$ ldd main.exe
        ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7ffc5e070000)
        KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7ffc5ddb0000)
        KERNELBASE.dll => /c/WINDOWS/System32/KERNELBASE.dll (0x7ffc5ad00000)
        DllB.dll => /c/DllB.dll (0x7ffc31450000)
        DllA.dll => /c/DllA.dll (0x7ffc2f7b0000)
```



```
./lldb.exe main.exe
(lldb) image list
[  0]                                                         C:\main.exe
```

However we expect 3 images at the moment (excluding windows system libraries)


```
./lldb.exe main.exe
(lldb) image list
[  0]                                                         C:\main.exe
[  1]                                                         C:\DllA.dll
[  2]                                                         C:\DllB.dll
```

So it will be better to have full path of the imported modules here.




Repository:
  rLLDB LLDB

https://reviews.llvm.org/D53094





More information about the lldb-commits mailing list