[Lldb-commits] [PATCH] D134636: [lldb][Windows] Always call SetExecutableModule on debugger connected
Alvin Wong via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Wed Sep 28 01:36:45 PDT 2022
alvinhochun updated this revision to Diff 463459.
alvinhochun edited the summary of this revision.
alvinhochun added a comment.
Actually update commit message
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D134636/new/
https://reviews.llvm.org/D134636
Files:
lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp
lldb/test/Shell/Target/Inputs/main.c
lldb/test/Shell/Target/Inputs/shlib.c
lldb/test/Shell/Target/dependent-modules-nodupe-windows.test
Index: lldb/test/Shell/Target/dependent-modules-nodupe-windows.test
===================================================================
--- /dev/null
+++ lldb/test/Shell/Target/dependent-modules-nodupe-windows.test
@@ -0,0 +1,24 @@
+# REQUIRES: system-windows
+
+# Checks that dependent modules preloaded by LLDB are not duplicated when the
+# process actually loads the DLL.
+
+# RUN: %clang_host -g0 -O0 -shared %S/Inputs/shlib.c -o %t.shlib.dll \
+# RUN: %if windows-msvc %{-Wl,-implib:%t.shlib.lib%} \
+# RUN: %else %{-Wl,--out-implib=%t.shlib.lib%}
+# RUN: %clang_host -g0 -O0 %S/Inputs/main.c %t.shlib.lib -o %t.main.exe
+# RUN: %lldb -b -o "#before" -o "target modules list" -o "b main" -o run \
+# RUN: -o "#after" -o "target modules list" %t.main.exe | FileCheck %s
+
+# CHECK-LABEL: #before
+# CHECK-NEXT: target modules list
+# CHECK-NEXT: .main.exe
+# CHECK-NEXT: .shlib.dll
+
+# CHECK-LABEL: #after
+# CHECK-NEXT: target modules list
+# CHECK-NEXT: .main.exe
+# CHECK-NEXT: ntdll.dll
+# CHECK-NEXT: kernel32.dll
+# CHECK: .shlib.dll
+# CHECK-NOT: .shlib.dll
Index: lldb/test/Shell/Target/Inputs/shlib.c
===================================================================
--- /dev/null
+++ lldb/test/Shell/Target/Inputs/shlib.c
@@ -0,0 +1 @@
+__declspec(dllexport) void exportFunc(void) {}
Index: lldb/test/Shell/Target/Inputs/main.c
===================================================================
--- /dev/null
+++ lldb/test/Shell/Target/Inputs/main.c
@@ -0,0 +1,2 @@
+__declspec(dllimport) void exportFunc(void);
+int main() { exportFunc(); }
Index: lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp
===================================================================
--- lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp
+++ lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp
@@ -653,28 +653,26 @@
LLDB_LOG(log, "Debugger connected to process {0}. Image base = {1:x}",
debugger->GetProcess().GetProcessId(), image_base);
- ModuleSP module = GetTarget().GetExecutableModule();
- if (!module) {
- // During attach, we won't have the executable module, so find it now.
- const DWORD pid = debugger->GetProcess().GetProcessId();
- const std::string file_name = GetProcessExecutableName(pid);
- if (file_name.empty()) {
- return;
- }
-
- FileSpec executable_file(file_name);
- FileSystem::Instance().Resolve(executable_file);
- ModuleSpec module_spec(executable_file);
- Status error;
- module =
- GetTarget().GetOrCreateModule(module_spec, true /* notify */, &error);
- if (!module) {
- return;
- }
+ ModuleSP module;
+ // During attach, we won't have the executable module, so find it now.
+ const DWORD pid = debugger->GetProcess().GetProcessId();
+ const std::string file_name = GetProcessExecutableName(pid);
+ if (file_name.empty()) {
+ return;
+ }
- GetTarget().SetExecutableModule(module, eLoadDependentsNo);
+ FileSpec executable_file(file_name);
+ FileSystem::Instance().Resolve(executable_file);
+ ModuleSpec module_spec(executable_file);
+ Status error;
+ module =
+ GetTarget().GetOrCreateModule(module_spec, true /* notify */, &error);
+ if (!module) {
+ return;
}
+ GetTarget().SetExecutableModule(module, eLoadDependentsNo);
+
if (auto dyld = GetDynamicLoader())
dyld->OnLoadModule(module, ModuleSpec(), image_base);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D134636.463459.patch
Type: text/x-patch
Size: 3435 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20220928/d58e4167/attachment.bin>
More information about the lldb-commits
mailing list