[Lldb-commits] [lldb] 0d2472f - [lldb/IRExecutionUnit] Stop searching based on demangled names

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Fri Dec 6 01:17:34 PST 2019


Author: Pavel Labath
Date: 2019-12-06T10:17:49+01:00
New Revision: 0d2472ff6f604af842059d9a0098db274515a2d3

URL: https://github.com/llvm/llvm-project/commit/0d2472ff6f604af842059d9a0098db274515a2d3
DIFF: https://github.com/llvm/llvm-project/commit/0d2472ff6f604af842059d9a0098db274515a2d3.diff

LOG: [lldb/IRExecutionUnit] Stop searching based on demangled names

Summary:
This was causing problems on linux, where we'd end up calling the
deleting destructor instead of a regular one (because they have the same
demangled name), making a lot of mischief in the process.

The only place where this was necessary (according to the test suite, at
least) was to call a base structor instead of a complete one, but this
is now handled in a more targeted fashion.

TestCallOverriddenMethod is now re-enabled as it now passes reliably.

Reviewers: teemperor, JDevlieghere

Subscribers: lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D70722

Added: 
    

Modified: 
    lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py
    lldb/source/Expression/IRExecutionUnit.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py b/lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py
index 9c25597391de..ddaafaab9fd2 100644
--- a/lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py
+++ b/lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py
@@ -63,7 +63,6 @@ def test_call_on_derived(self):
         # a vtable entry that does not exist in the compiled program).
         self.expect("expr d.foo()", substrs=["2"])
 
-    @skipIfLinux # Calling constructor causes SIGABRT
     @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr43707")
     def test_call_on_temporary(self):
         """Test calls to overridden methods in derived classes."""

diff  --git a/lldb/source/Expression/IRExecutionUnit.cpp b/lldb/source/Expression/IRExecutionUnit.cpp
index 33d48842f869..bdf3c92a3117 100644
--- a/lldb/source/Expression/IRExecutionUnit.cpp
+++ b/lldb/source/Expression/IRExecutionUnit.cpp
@@ -728,8 +728,6 @@ void IRExecutionUnit::CollectCandidateCPlusPlusNames(
         if (best_alternate_mangled_name) {
           CPP_specs.push_back(best_alternate_mangled_name);
         }
-
-        CPP_specs.push_back(SearchSpec(demangled, lldb::eFunctionNameTypeFull));
       }
     }
 


        


More information about the lldb-commits mailing list