@@ -168,8 +168,7 @@ class CommandObjectFrameDiagnose : public CommandObjectParsed {
168
168
// We've already handled the case where the value object sp is null, so
169
169
// this is just to make sure future changes don't skip that:
170
170
assert (valobj_sp.get () && " Must have a valid ValueObject to print" );
171
- ValueObjectPrinter printer (*valobj_sp, &result.GetOutputStream (),
172
- options);
171
+ ValueObjectPrinter printer (*valobj_sp, &result.GetOutputStream (), options);
173
172
if (llvm::Error error = printer.PrintValueObject ())
174
173
result.AppendError (toString (std::move (error)));
175
174
}
@@ -899,13 +898,16 @@ void CommandObjectFrameRecognizerAdd::DoExecute(Args &command,
899
898
auto func =
900
899
RegularExpressionSP (new RegularExpression (m_options.m_symbols .front ()));
901
900
GetTarget ().GetFrameRecognizerManager ().AddRecognizer (
902
- recognizer_sp, module, func, m_options.m_first_instruction_only );
901
+ recognizer_sp, module, func, Mangled::NamePreference::ePreferDemangled,
902
+ m_options.m_first_instruction_only );
903
903
} else {
904
904
auto module = ConstString (m_options.m_module );
905
905
std::vector<ConstString> symbols (m_options.m_symbols .begin (),
906
906
m_options.m_symbols .end ());
907
907
GetTarget ().GetFrameRecognizerManager ().AddRecognizer (
908
- recognizer_sp, module, symbols, m_options.m_first_instruction_only );
908
+ recognizer_sp, module, symbols,
909
+ Mangled::NamePreference::ePreferDemangled,
910
+ m_options.m_first_instruction_only );
909
911
}
910
912
#endif
911
913
@@ -927,6 +929,34 @@ class CommandObjectFrameRecognizerClear : public CommandObjectParsed {
927
929
}
928
930
};
929
931
932
+ static void
933
+ PrintRecognizerDetails (Stream &strm, const std::string &name,
934
+ const std::string &module,
935
+ llvm::ArrayRef<lldb_private::ConstString> symbols,
936
+ Mangled::NamePreference symbol_mangling, bool regexp) {
937
+ strm << name << " , " ;
938
+
939
+ if (!module.empty ())
940
+ strm << " module " << module << " , " ;
941
+
942
+ switch (symbol_mangling) {
943
+ case Mangled::NamePreference ::ePreferMangled:
944
+ strm << " mangled symbol " ;
945
+ break ;
946
+ case Mangled::NamePreference ::ePreferDemangled:
947
+ strm << " demangled symbol " ;
948
+ break ;
949
+ case Mangled::NamePreference ::ePreferDemangledWithoutArguments:
950
+ strm << " demangled (no args) symbol " ;
951
+ break ;
952
+ }
953
+
954
+ if (regexp)
955
+ strm << " regex " ;
956
+
957
+ llvm::interleaveComma (symbols, strm);
958
+ }
959
+
930
960
class CommandObjectFrameRecognizerDelete : public CommandObjectParsed {
931
961
public:
932
962
CommandObjectFrameRecognizerDelete (CommandInterpreter &interpreter)
@@ -947,19 +977,13 @@ class CommandObjectFrameRecognizerDelete : public CommandObjectParsed {
947
977
GetTarget ().GetFrameRecognizerManager ().ForEach (
948
978
[&request](uint32_t rid, std::string rname, std::string module,
949
979
llvm::ArrayRef<lldb_private::ConstString> symbols,
950
- bool regexp) {
980
+ Mangled::NamePreference symbol_mangling, bool regexp) {
951
981
StreamString strm;
952
982
if (rname.empty ())
953
983
rname = " (internal)" ;
954
984
955
- strm << rname;
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)" ;
985
+ PrintRecognizerDetails (strm, rname, module, symbols, symbol_mangling,
986
+ regexp);
963
987
964
988
request.TryCompleteCurrentArg (std::to_string (rid), strm.GetString ());
965
989
});
@@ -1016,22 +1040,18 @@ class CommandObjectFrameRecognizerList : public CommandObjectParsed {
1016
1040
void DoExecute (Args &command, CommandReturnObject &result) override {
1017
1041
bool any_printed = false ;
1018
1042
GetTarget ().GetFrameRecognizerManager ().ForEach (
1019
- [&result, &any_printed](
1020
- uint32_t recognizer_id, std::string name, std::string module,
1021
- llvm::ArrayRef<ConstString> symbols, bool regexp) {
1043
+ [&result,
1044
+ &any_printed](uint32_t recognizer_id, std::string name,
1045
+ std::string module, llvm::ArrayRef<ConstString> symbols,
1046
+ Mangled::NamePreference symbol_mangling, bool regexp) {
1022
1047
Stream &stream = result.GetOutputStream ();
1023
1048
1024
1049
if (name.empty ())
1025
1050
name = " (internal)" ;
1026
1051
1027
- stream << std::to_string (recognizer_id) << " : " << name;
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)" ;
1052
+ stream << std::to_string (recognizer_id) << " : " ;
1053
+ PrintRecognizerDetails (stream, name, module, symbols, symbol_mangling,
1054
+ regexp);
1035
1055
1036
1056
stream.EOL ();
1037
1057
stream.Flush ();
0 commit comments