Skip to content

Commit 9f30a6e

Browse files
Revert "[lldb] Support frame recognizer regexp on mangled names."
This reverts commit c3e074c.
1 parent 417d34b commit 9f30a6e

File tree

8 files changed

+35
-68
lines changed

8 files changed

+35
-68
lines changed

lldb/include/lldb/Target/StackFrameRecognizer.h

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -109,21 +109,15 @@ class StackFrameRecognizerManager {
109109
ConstString module, llvm::ArrayRef<ConstString> symbols,
110110
bool first_instruction_only = true);
111111

112-
/// Add a new recognizer that triggers on a symbol regex.
113-
///
114-
/// \param symbol_mangling controls whether the regex should apply
115-
/// to the mangled or demangled name.
116112
void AddRecognizer(lldb::StackFrameRecognizerSP recognizer,
117113
lldb::RegularExpressionSP module,
118114
lldb::RegularExpressionSP symbol,
119-
Mangled::NamePreference symbol_mangling,
120115
bool first_instruction_only = true);
121116

122117
void ForEach(std::function<
123118
void(uint32_t recognizer_id, std::string recognizer_name,
124119
std::string module, llvm::ArrayRef<ConstString> symbols,
125-
Mangled::NamePreference name_reference, bool regexp)> const
126-
&callback);
120+
bool regexp)> const &callback);
127121

128122
bool RemoveRecognizerWithID(uint32_t recognizer_id);
129123

@@ -148,7 +142,6 @@ class StackFrameRecognizerManager {
148142
lldb::RegularExpressionSP module_regexp;
149143
std::vector<ConstString> symbols;
150144
lldb::RegularExpressionSP symbol_regexp;
151-
Mangled::NamePreference symbol_mangling;
152145
bool first_instruction_only;
153146
};
154147

lldb/source/Commands/CommandObjectFrame.cpp

Lines changed: 19 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -899,8 +899,7 @@ void CommandObjectFrameRecognizerAdd::DoExecute(Args &command,
899899
auto func =
900900
RegularExpressionSP(new RegularExpression(m_options.m_symbols.front()));
901901
GetTarget().GetFrameRecognizerManager().AddRecognizer(
902-
recognizer_sp, module, func, Mangled::NamePreference::ePreferDemangled,
903-
m_options.m_first_instruction_only);
902+
recognizer_sp, module, func, m_options.m_first_instruction_only);
904903
} else {
905904
auto module = ConstString(m_options.m_module);
906905
std::vector<ConstString> symbols(m_options.m_symbols.begin(),
@@ -928,32 +927,6 @@ class CommandObjectFrameRecognizerClear : public CommandObjectParsed {
928927
}
929928
};
930929

931-
static void
932-
PrintRecognizerDetails(Stream &strm, const std::string &module,
933-
llvm::ArrayRef<lldb_private::ConstString> symbols,
934-
Mangled::NamePreference preference, bool regexp) {
935-
if (!module.empty())
936-
strm << ", module " << module;
937-
for (auto &symbol : symbols) {
938-
strm << ", ";
939-
if (!regexp)
940-
strm << "symbol";
941-
else
942-
switch (preference) {
943-
case Mangled::NamePreference ::ePreferMangled:
944-
strm << "mangled symbol regexp";
945-
break;
946-
case Mangled::NamePreference ::ePreferDemangled:
947-
strm << "demangled symbol regexp";
948-
break;
949-
case Mangled::NamePreference ::ePreferDemangledWithoutArguments:
950-
strm << "demangled (no args) symbol regexp";
951-
break;
952-
}
953-
strm << " " << symbol;
954-
}
955-
}
956-
957930
class CommandObjectFrameRecognizerDelete : public CommandObjectParsed {
958931
public:
959932
CommandObjectFrameRecognizerDelete(CommandInterpreter &interpreter)
@@ -974,13 +947,19 @@ class CommandObjectFrameRecognizerDelete : public CommandObjectParsed {
974947
GetTarget().GetFrameRecognizerManager().ForEach(
975948
[&request](uint32_t rid, std::string rname, std::string module,
976949
llvm::ArrayRef<lldb_private::ConstString> symbols,
977-
Mangled::NamePreference preference, bool regexp) {
950+
bool regexp) {
978951
StreamString strm;
979952
if (rname.empty())
980953
rname = "(internal)";
981954

982955
strm << rname;
983-
PrintRecognizerDetails(strm, module, symbols, preference, regexp);
956+
if (!module.empty())
957+
strm << ", module " << module;
958+
if (!symbols.empty())
959+
for (auto &symbol : symbols)
960+
strm << ", symbol " << symbol;
961+
if (regexp)
962+
strm << " (regexp)";
984963

985964
request.TryCompleteCurrentArg(std::to_string(rid), strm.GetString());
986965
});
@@ -1037,17 +1016,22 @@ class CommandObjectFrameRecognizerList : public CommandObjectParsed {
10371016
void DoExecute(Args &command, CommandReturnObject &result) override {
10381017
bool any_printed = false;
10391018
GetTarget().GetFrameRecognizerManager().ForEach(
1040-
[&result,
1041-
&any_printed](uint32_t recognizer_id, std::string name,
1042-
std::string module, llvm::ArrayRef<ConstString> symbols,
1043-
Mangled::NamePreference preference, bool regexp) {
1019+
[&result, &any_printed](
1020+
uint32_t recognizer_id, std::string name, std::string module,
1021+
llvm::ArrayRef<ConstString> symbols, bool regexp) {
10441022
Stream &stream = result.GetOutputStream();
10451023

10461024
if (name.empty())
10471025
name = "(internal)";
10481026

10491027
stream << std::to_string(recognizer_id) << ": " << name;
1050-
PrintRecognizerDetails(stream, module, symbols, preference, regexp);
1028+
if (!module.empty())
1029+
stream << ", module " << module;
1030+
if (!symbols.empty())
1031+
for (auto &symbol : symbols)
1032+
stream << ", symbol " << symbol;
1033+
if (regexp)
1034+
stream << " (regexp)";
10511035

10521036
stream.EOL();
10531037
stream.Flush();

lldb/source/Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ CPPLanguageRuntime::CPPLanguageRuntime(Process *process)
8282
process->GetTarget().GetFrameRecognizerManager().AddRecognizer(
8383
StackFrameRecognizerSP(new LibCXXFrameRecognizer()), {},
8484
std::make_shared<RegularExpression>("^std::__1::"),
85-
Mangled::NamePreference::ePreferDemangledWithoutArguments,
8685
/*first_instruction_only*/ false);
8786
}
8887

lldb/source/Target/AssertFrameRecognizer.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ void RegisterAssertFrameRecognizer(Process *process) {
112112
std::make_shared<AssertFrameRecognizer>(),
113113
std::make_shared<RegularExpression>(std::move(module_re)),
114114
std::make_shared<RegularExpression>(std::move(symbol_re)),
115-
Mangled::ePreferMangled,
116115
/*first_instruction_only*/ false);
117116
}
118117

lldb/source/Target/StackFrameRecognizer.cpp

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -63,28 +63,25 @@ void StackFrameRecognizerManager::BumpGeneration() {
6363
void StackFrameRecognizerManager::AddRecognizer(
6464
StackFrameRecognizerSP recognizer, ConstString module,
6565
llvm::ArrayRef<ConstString> symbols, bool first_instruction_only) {
66-
m_recognizers.push_front(
67-
{(uint32_t)m_recognizers.size(), recognizer, false, module,
68-
RegularExpressionSP(), symbols, RegularExpressionSP(),
69-
Mangled::NamePreference::ePreferMangled, first_instruction_only});
66+
m_recognizers.push_front({(uint32_t)m_recognizers.size(), recognizer, false,
67+
module, RegularExpressionSP(), symbols,
68+
RegularExpressionSP(), first_instruction_only});
7069
BumpGeneration();
7170
}
7271

7372
void StackFrameRecognizerManager::AddRecognizer(
7473
StackFrameRecognizerSP recognizer, RegularExpressionSP module,
75-
RegularExpressionSP symbol, Mangled::NamePreference symbol_mangling,
76-
bool first_instruction_only) {
74+
RegularExpressionSP symbol, bool first_instruction_only) {
7775
m_recognizers.push_front({(uint32_t)m_recognizers.size(), recognizer, true,
7876
ConstString(), module, std::vector<ConstString>(),
79-
symbol, symbol_mangling, first_instruction_only});
77+
symbol, first_instruction_only});
8078
BumpGeneration();
8179
}
8280

8381
void StackFrameRecognizerManager::ForEach(
8482
const std::function<void(uint32_t, std::string, std::string,
85-
llvm::ArrayRef<ConstString>,
86-
Mangled::NamePreference, bool)> &callback) {
87-
for (const auto &entry : m_recognizers) {
83+
llvm::ArrayRef<ConstString>, bool)> &callback) {
84+
for (auto entry : m_recognizers) {
8885
if (entry.is_regexp) {
8986
std::string module_name;
9087
std::string symbol_name;
@@ -95,13 +92,11 @@ void StackFrameRecognizerManager::ForEach(
9592
symbol_name = entry.symbol_regexp->GetText().str();
9693

9794
callback(entry.recognizer_id, entry.recognizer->GetName(), module_name,
98-
llvm::ArrayRef(ConstString(symbol_name)), entry.symbol_mangling,
99-
true);
95+
llvm::ArrayRef(ConstString(symbol_name)), true);
10096

10197
} else {
10298
callback(entry.recognizer_id, entry.recognizer->GetName(),
103-
entry.module.GetCString(), entry.symbols, entry.symbol_mangling,
104-
false);
99+
entry.module.GetCString(), entry.symbols, false);
105100
}
106101
}
107102
}
@@ -155,8 +150,7 @@ StackFrameRecognizerManager::GetRecognizerForFrame(StackFrameSP frame) {
155150
continue;
156151

157152
if (entry.symbol_regexp)
158-
if (!entry.symbol_regexp->Execute(
159-
symctx.GetFunctionName(entry.symbol_mangling)))
153+
if (!entry.symbol_regexp->Execute(function_name.GetStringRef()))
160154
continue;
161155

162156
if (entry.first_instruction_only)

lldb/source/Target/VerboseTrapFrameRecognizer.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,7 @@ void RegisterVerboseTrapFrameRecognizer(Process &process) {
155155
std::make_shared<VerboseTrapFrameRecognizer>();
156156

157157
process.GetTarget().GetFrameRecognizerManager().AddRecognizer(
158-
srf_recognizer_sp, module_regex_sp, symbol_regex_sp,
159-
Mangled::ePreferMangled, false);
158+
srf_recognizer_sp, module_regex_sp, symbol_regex_sp, false);
160159
}
161160

162161
} // namespace lldb_private

lldb/test/API/commands/frame/recognizer/TestFrameRecognizer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def test_frame_recognizer_1(self):
4545
self.expect(
4646
"frame recognizer list",
4747
substrs=[
48-
"1: recognizer.MyOtherFrameRecognizer, module a.out, demangled symbol regexp bar",
48+
"1: recognizer.MyOtherFrameRecognizer, module a.out, symbol bar (regexp)",
4949
"0: recognizer.MyFrameRecognizer, module a.out, symbol foo",
5050
],
5151
)
@@ -56,7 +56,7 @@ def test_frame_recognizer_1(self):
5656
self.expect(
5757
"frame recognizer list",
5858
substrs=[
59-
"1: recognizer.MyOtherFrameRecognizer, module a.out, demangled symbol regexp bar"
59+
"1: recognizer.MyOtherFrameRecognizer, module a.out, symbol bar (regexp)"
6060
],
6161
)
6262
self.expect(
@@ -79,7 +79,7 @@ def test_frame_recognizer_1(self):
7979
self.expect(
8080
"frame recognizer list",
8181
substrs=[
82-
"1: recognizer.MyOtherFrameRecognizer, module a.out, demangled symbol regexp bar"
82+
"1: recognizer.MyOtherFrameRecognizer, module a.out, symbol bar (regexp)"
8383
],
8484
)
8585
self.expect(

lldb/unittests/Target/StackFrameRecognizerTest.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ void RegisterDummyStackFrameRecognizer(StackFrameRecognizerManager &manager) {
5555
StackFrameRecognizerSP dummy_recognizer_sp(new DummyStackFrameRecognizer());
5656

5757
manager.AddRecognizer(dummy_recognizer_sp, module_regex_sp, symbol_regex_sp,
58-
Mangled::NamePreference::ePreferDemangled, false);
58+
false);
5959
}
6060

6161
} // namespace
@@ -72,7 +72,6 @@ TEST_F(StackFrameRecognizerTest, NullModuleRegex) {
7272
manager.ForEach([&any_printed](uint32_t recognizer_id, std::string name,
7373
std::string function,
7474
llvm::ArrayRef<ConstString> symbols,
75-
Mangled::NamePreference preference,
7675
bool regexp) { any_printed = true; });
7776

7877
EXPECT_TRUE(any_printed);

0 commit comments

Comments
 (0)