aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Commands/CommandObjectFrame.cpp
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2020-02-10 10:29:26 +0100
committerJan Kratochvil <jan.kratochvil@redhat.com>2020-02-10 10:29:32 +0100
commit1a39f1b966a8d8f15ed0d5a832d5097cccefe93b (patch)
tree02e94bd0674a8d45efe3521cdde964dbee9ff2c3 /lldb/source/Commands/CommandObjectFrame.cpp
parent6115bd9ba2851469d372d0d7b36d87a3e1d8094b (diff)
downloadllvm-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.cpp9
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;
});