diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2020-02-10 10:29:26 +0100 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2020-02-10 10:29:32 +0100 |
commit | 1a39f1b966a8d8f15ed0d5a832d5097cccefe93b (patch) | |
tree | 02e94bd0674a8d45efe3521cdde964dbee9ff2c3 /lldb/source/Commands/CommandObjectFrame.cpp | |
parent | 6115bd9ba2851469d372d0d7b36d87a3e1d8094b (diff) | |
download | llvm-1a39f1b966a8d8f15ed0d5a832d5097cccefe93b.zip llvm-1a39f1b966a8d8f15ed0d5a832d5097cccefe93b.tar.gz llvm-1a39f1b966a8d8f15ed0d5a832d5097cccefe93b.tar.bz2 |
[lldb] Fix+re-enable Assert StackFrame Recognizer on Linux
D73303 was failing on Fedora Linux and so it was disabled by Skip the
AssertFrameRecognizer test for Linux.
I find no easy way how to find out if it gets recognized as
`__assert_fail` or `__GI___assert_fail` as during `Process` ctor
libc.so.6 is not yet loaded by the debuggee.
DWARF symbol `__GI___assert_fail` overrides the ELF symbol `__assert_fail`.
While external debug info (=DWARF) gets disabled for testsuite (D55859)
that sure does not apply for real world usage.
Differential Revision: https://reviews.llvm.org/D74252
Diffstat (limited to 'lldb/source/Commands/CommandObjectFrame.cpp')
-rw-r--r-- | lldb/source/Commands/CommandObjectFrame.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lldb/source/Commands/CommandObjectFrame.cpp b/lldb/source/Commands/CommandObjectFrame.cpp index d86b50b..5af9e2e 100644 --- a/lldb/source/Commands/CommandObjectFrame.cpp +++ b/lldb/source/Commands/CommandObjectFrame.cpp @@ -881,7 +881,7 @@ bool CommandObjectFrameRecognizerAdd::DoExecute(Args &command, } else { auto module = ConstString(m_options.m_module); auto func = ConstString(m_options.m_function); - StackFrameRecognizerManager::AddRecognizer(recognizer_sp, module, func); + StackFrameRecognizerManager::AddRecognizer(recognizer_sp, module, func, {}); } #endif @@ -960,12 +960,13 @@ protected: StackFrameRecognizerManager::ForEach( [&result, &any_printed](uint32_t recognizer_id, std::string name, std::string function, std::string symbol, - bool regexp) { + std::string alternate_symbol, bool regexp) { if (name == "") name = "(internal)"; result.GetOutputStream().Printf( - "%d: %s, module %s, function %s%s\n", recognizer_id, name.c_str(), - function.c_str(), symbol.c_str(), regexp ? " (regexp)" : ""); + "%d: %s, module %s, function %s{%s}%s\n", recognizer_id, + name.c_str(), function.c_str(), symbol.c_str(), + alternate_symbol.c_str(), regexp ? " (regexp)" : ""); any_printed = true; }); |