From 8c82c41262fad55de7ed921b9e0df0da6c0e896b Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Mon, 17 Jun 2019 14:46:17 +0000 Subject: [PATCH] [lldb] [test] Extend D55859 symbols.enable-external-lookup=false for more testcases D55859 has no effect for some of the testcases so this patch extends it even for (all?) other testcases known to me. LLDB was failing when LLDB prints errors reading system debug infos (`*-debuginfo.rpm`, DWZ-optimized) which should never happen as LLDB testcases should not be affected by system debug infos. `lldb/packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template` is using only SB API which does not expose `ModuleList` so I had to call `HandleCommand()` there. `lldb-test.cpp` could also use `HandleCommand` and then there would be no need for `ModuleListProperties::SetEnableExternalLookup()` but I think it is cleaner with API and not on based on text commands. Differential Revision: https://reviews.llvm.org/D63339 llvm-svn: 363567 --- lldb/include/lldb/Core/ModuleList.h | 1 + .../lldb-mi/breakpoint/break-insert-enable-pending.test | 3 +++ lldb/lit/tools/lldb-mi/breakpoint/break-insert.test | 3 +++ lldb/lit/tools/lldb-mi/data/data-info-line.test | 3 +++ lldb/lit/tools/lldb-mi/exec/exec-continue.test | 3 +++ lldb/lit/tools/lldb-mi/exec/exec-finish.test | 3 +++ lldb/lit/tools/lldb-mi/exec/exec-interrupt.test | 3 +++ lldb/lit/tools/lldb-mi/exec/exec-next-instruction.test | 3 +++ lldb/lit/tools/lldb-mi/exec/exec-next.test | 3 +++ lldb/lit/tools/lldb-mi/exec/exec-step-instruction.test | 3 +++ lldb/lit/tools/lldb-mi/exec/exec-step.test | 3 +++ .../lldbsuite/test/api/multithreaded/driver.cpp.template | 1 + lldb/packages/Python/lldbsuite/test/lldbtest.py | 8 ++++---- .../Python/lldbsuite/test/tools/lldb-vscode/vscode.py | 8 ++++++-- lldb/source/Core/ModuleList.cpp | 5 +++++ lldb/tools/lldb-test/lldb-test.cpp | 1 + 16 files changed, 48 insertions(+), 6 deletions(-) diff --git a/lldb/include/lldb/Core/ModuleList.h b/lldb/include/lldb/Core/ModuleList.h index 57ed3c8cf1fe0..1e26c35e4c157 100644 --- a/lldb/include/lldb/Core/ModuleList.h +++ b/lldb/include/lldb/Core/ModuleList.h @@ -52,6 +52,7 @@ class ModuleListProperties : public Properties { FileSpec GetClangModulesCachePath() const; bool SetClangModulesCachePath(llvm::StringRef path); bool GetEnableExternalLookup() const; + bool SetEnableExternalLookup(bool new_value); }; /// \class ModuleList ModuleList.h "lldb/Core/ModuleList.h" diff --git a/lldb/lit/tools/lldb-mi/breakpoint/break-insert-enable-pending.test b/lldb/lit/tools/lldb-mi/breakpoint/break-insert-enable-pending.test index 1c9e546708942..55daf919a6888 100644 --- a/lldb/lit/tools/lldb-mi/breakpoint/break-insert-enable-pending.test +++ b/lldb/lit/tools/lldb-mi/breakpoint/break-insert-enable-pending.test @@ -7,6 +7,9 @@ # Test for enabling pending breakpoints globally +settings set symbols.enable-external-lookup false +# CHECK: ^done + -break-insert printf # CHECK: ^error,msg="Command 'break-insert'. Breakpoint location 'printf' not found diff --git a/lldb/lit/tools/lldb-mi/breakpoint/break-insert.test b/lldb/lit/tools/lldb-mi/breakpoint/break-insert.test index bf9756713897b..d8039156b72f2 100644 --- a/lldb/lit/tools/lldb-mi/breakpoint/break-insert.test +++ b/lldb/lit/tools/lldb-mi/breakpoint/break-insert.test @@ -6,6 +6,9 @@ # Test that a breakpoint can be inserted before creating a target. +settings set symbols.enable-external-lookup false +# CHECK: ^done + -break-insert breakpoint # CHECK: ^done,bkpt={number="1" diff --git a/lldb/lit/tools/lldb-mi/data/data-info-line.test b/lldb/lit/tools/lldb-mi/data/data-info-line.test index 9f9a052bd690d..11ea365962572 100644 --- a/lldb/lit/tools/lldb-mi/data/data-info-line.test +++ b/lldb/lit/tools/lldb-mi/data/data-info-line.test @@ -8,6 +8,9 @@ # Check that we have a valid target created via '%lldbmi %t'. # CHECK: ^done +settings set symbols.enable-external-lookup false +# CHECK: ^done + -break-insert main # CHECK: ^done,bkpt={number="1" diff --git a/lldb/lit/tools/lldb-mi/exec/exec-continue.test b/lldb/lit/tools/lldb-mi/exec/exec-continue.test index 3ec6d69077275..c27bc44484dfb 100644 --- a/lldb/lit/tools/lldb-mi/exec/exec-continue.test +++ b/lldb/lit/tools/lldb-mi/exec/exec-continue.test @@ -8,6 +8,9 @@ # Check that we have a valid target created via '%lldbmi %t'. # CHECK: ^done +settings set symbols.enable-external-lookup false +# CHECK: ^done + -break-insert main # CHECK: ^done,bkpt={number="1" diff --git a/lldb/lit/tools/lldb-mi/exec/exec-finish.test b/lldb/lit/tools/lldb-mi/exec/exec-finish.test index b2a50c5267fd5..19947f93897b1 100644 --- a/lldb/lit/tools/lldb-mi/exec/exec-finish.test +++ b/lldb/lit/tools/lldb-mi/exec/exec-finish.test @@ -6,6 +6,9 @@ # Check that we have a valid target created via '%lldbmi %t'. # CHECK: ^done +settings set symbols.enable-external-lookup false +# CHECK: ^done + -break-insert main # CHECK: ^done,bkpt={number="1" diff --git a/lldb/lit/tools/lldb-mi/exec/exec-interrupt.test b/lldb/lit/tools/lldb-mi/exec/exec-interrupt.test index 7f8c5515018c0..20791257b41b4 100644 --- a/lldb/lit/tools/lldb-mi/exec/exec-interrupt.test +++ b/lldb/lit/tools/lldb-mi/exec/exec-interrupt.test @@ -8,6 +8,9 @@ # Check that we have a valid target created via '%lldbmi %t'. # CHECK: ^done +settings set symbols.enable-external-lookup false +# CHECK: ^done + -break-insert main # CHECK: ^done,bkpt={number="1" diff --git a/lldb/lit/tools/lldb-mi/exec/exec-next-instruction.test b/lldb/lit/tools/lldb-mi/exec/exec-next-instruction.test index f8d8ba47b9097..ca3c9e9b00535 100644 --- a/lldb/lit/tools/lldb-mi/exec/exec-next-instruction.test +++ b/lldb/lit/tools/lldb-mi/exec/exec-next-instruction.test @@ -8,6 +8,9 @@ # Check that we have a valid target created via '%lldbmi %t'. # CHECK: ^done +settings set symbols.enable-external-lookup false +# CHECK: ^done + -break-insert main # CHECK: ^done,bkpt={number="1" diff --git a/lldb/lit/tools/lldb-mi/exec/exec-next.test b/lldb/lit/tools/lldb-mi/exec/exec-next.test index d2a4b76815ea8..0dd2274639021 100644 --- a/lldb/lit/tools/lldb-mi/exec/exec-next.test +++ b/lldb/lit/tools/lldb-mi/exec/exec-next.test @@ -9,6 +9,9 @@ # Check that we have a valid target created via '%lldbmi %t'. # CHECK: ^done +settings set symbols.enable-external-lookup false +# CHECK: ^done + -break-insert main # CHECK: ^done,bkpt={number="1" diff --git a/lldb/lit/tools/lldb-mi/exec/exec-step-instruction.test b/lldb/lit/tools/lldb-mi/exec/exec-step-instruction.test index 94c6b39f3543a..3301b3e10acd9 100644 --- a/lldb/lit/tools/lldb-mi/exec/exec-step-instruction.test +++ b/lldb/lit/tools/lldb-mi/exec/exec-step-instruction.test @@ -8,6 +8,9 @@ # Check that we have a valid target created via '%lldbmi %t'. # CHECK: ^done +settings set symbols.enable-external-lookup false +# CHECK: ^done + -break-insert main # CHECK: ^done,bkpt={number="1" diff --git a/lldb/lit/tools/lldb-mi/exec/exec-step.test b/lldb/lit/tools/lldb-mi/exec/exec-step.test index b946a7b1790c8..a14dd42f2b48b 100644 --- a/lldb/lit/tools/lldb-mi/exec/exec-step.test +++ b/lldb/lit/tools/lldb-mi/exec/exec-step.test @@ -8,6 +8,9 @@ # Check that we have a valid target created via '%lldbmi %t'. # CHECK: ^done +settings set symbols.enable-external-lookup false +# CHECK: ^done + -break-insert main # CHECK: ^done,bkpt={number="1" diff --git a/lldb/packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template b/lldb/packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template index f4bd021632cec..ebe7b8c8e17b2 100644 --- a/lldb/packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template +++ b/lldb/packages/Python/lldbsuite/test/api/multithreaded/driver.cpp.template @@ -31,6 +31,7 @@ int main(int argc, char** argv) { SBDebugger::Initialize(); SBDebugger dbg = SBDebugger::Create(); + dbg.HandleCommand("settings set symbols.enable-external-lookup false"); try { if (!dbg.IsValid()) diff --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py index 90588a6e6b7b9..3064a6c2d85bd 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbtest.py +++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py @@ -729,12 +729,12 @@ def setUp(self): else: self.lldbVSCodeExec = None + self.lldbOption = "-o 'settings set symbols.enable-external-lookup false'" + # If we spawn an lldb process for test (via pexpect), do not load the # init file unless told otherwise. - if "NO_LLDBINIT" in os.environ and "NO" == os.environ["NO_LLDBINIT"]: - self.lldbOption = "" - else: - self.lldbOption = "--no-lldbinit" + if os.environ.get("NO_LLDBINIT") != "NO": + self.lldbOption += " --no-lldbinit" # Assign the test method name to self.testMethodName. # diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py index 4e09e6a43a476..74ee4a6c44c3d 100644 --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py @@ -447,8 +447,10 @@ def request_attach(self, program=None, pid=None, waitFor=None, trace=None, args_dict['waitFor'] = waitFor if trace: args_dict['trace'] = trace + args_dict['initCommands'] = [ + 'settings set symbols.enable-external-lookup false'] if initCommands: - args_dict['initCommands'] = initCommands + args_dict['initCommands'].extend(initCommands) if preRunCommands: args_dict['preRunCommands'] = preRunCommands if stopCommands: @@ -582,8 +584,10 @@ def request_launch(self, program, args=None, cwd=None, env=None, args_dict['shellExpandArguments'] = shellExpandArguments if trace: args_dict['trace'] = trace + args_dict['initCommands'] = [ + 'settings set symbols.enable-external-lookup false'] if initCommands: - args_dict['initCommands'] = initCommands + args_dict['initCommands'].extend(initCommands) if preRunCommands: args_dict['preRunCommands'] = preRunCommands if stopCommands: diff --git a/lldb/source/Core/ModuleList.cpp b/lldb/source/Core/ModuleList.cpp index fd943d7fc1d63..9d795f9e55869 100644 --- a/lldb/source/Core/ModuleList.cpp +++ b/lldb/source/Core/ModuleList.cpp @@ -102,6 +102,11 @@ bool ModuleListProperties::GetEnableExternalLookup() const { nullptr, idx, g_properties[idx].default_uint_value != 0); } +bool ModuleListProperties::SetEnableExternalLookup(bool new_value) { + return m_collection_sp->SetPropertyAtIndexAsBoolean( + nullptr, ePropertyEnableExternalLookup, new_value); +} + FileSpec ModuleListProperties::GetClangModulesCachePath() const { return m_collection_sp ->GetPropertyAtIndexAsOptionValueFileSpec(nullptr, false, diff --git a/lldb/tools/lldb-test/lldb-test.cpp b/lldb/tools/lldb-test/lldb-test.cpp index e5e23fb7695d1..471a998828782 100644 --- a/lldb/tools/lldb-test/lldb-test.cpp +++ b/lldb/tools/lldb-test/lldb-test.cpp @@ -975,6 +975,7 @@ int main(int argc, const char *argv[]) { CleanUp TerminateDebugger([&] { DebuggerLifetime.Terminate(); }); auto Dbg = lldb_private::Debugger::CreateInstance(); + ModuleList::GetGlobalModuleListProperties().SetEnableExternalLookup(false); if (!opts::Log.empty()) Dbg->EnableLog("lldb", {"all"}, opts::Log, 0, errs());