labath created this revision. labath added reviewers: teemperor, JDevlieghere. Herald added a project: LLDB. labath added a parent revision: D70721: [lldb/cpluspluslanguage] Add constructor substitutor.
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. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D70722 Files: lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py lldb/source/Expression/IRExecutionUnit.cpp Index: lldb/source/Expression/IRExecutionUnit.cpp =================================================================== --- lldb/source/Expression/IRExecutionUnit.cpp +++ lldb/source/Expression/IRExecutionUnit.cpp @@ -728,8 +728,6 @@ if (best_alternate_mangled_name) { CPP_specs.push_back(best_alternate_mangled_name); } - - CPP_specs.push_back(SearchSpec(demangled, lldb::eFunctionNameTypeFull)); } } Index: lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py =================================================================== --- lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py +++ lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py @@ -63,7 +63,6 @@ # 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."""
Index: lldb/source/Expression/IRExecutionUnit.cpp =================================================================== --- lldb/source/Expression/IRExecutionUnit.cpp +++ lldb/source/Expression/IRExecutionUnit.cpp @@ -728,8 +728,6 @@ if (best_alternate_mangled_name) { CPP_specs.push_back(best_alternate_mangled_name); } - - CPP_specs.push_back(SearchSpec(demangled, lldb::eFunctionNameTypeFull)); } } Index: lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py =================================================================== --- lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py +++ lldb/packages/Python/lldbsuite/test/commands/expression/call-overridden-method/TestCallOverriddenMethod.py @@ -63,7 +63,6 @@ # 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."""
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits