@@ -122,7 +122,15 @@ constexpr Definition g_function_child_entries[] = {
122
122
Definition (" pc-offset" , EntryType::FunctionPCOffset),
123
123
Definition (" initial-function" , EntryType::FunctionInitial),
124
124
Definition (" changed" , EntryType::FunctionChanged),
125
- Definition (" is-optimized" , EntryType::FunctionIsOptimized)};
125
+ Definition (" is-optimized" , EntryType::FunctionIsOptimized),
126
+ Definition (" scope" , EntryType::FunctionScope),
127
+ Definition (" basename" , EntryType::FunctionBasename),
128
+ Definition (" template-arguments" , EntryType::FunctionTemplateArguments),
129
+ Definition (" formatted-arguments" , EntryType::FunctionFormattedArguments),
130
+ Definition (" return-left" , EntryType::FunctionReturnLeft),
131
+ Definition (" return-right" , EntryType::FunctionReturnRight),
132
+ Definition (" qualifiers" , EntryType::FunctionQualifiers),
133
+ };
126
134
127
135
constexpr Definition g_line_child_entries[] = {
128
136
Entry::DefinitionWithChildren (" file" , EntryType::LineEntryFile,
@@ -353,6 +361,13 @@ const char *FormatEntity::Entry::TypeToCString(Type t) {
353
361
ENUM_TO_CSTR (FunctionNameWithArgs);
354
362
ENUM_TO_CSTR (FunctionNameNoArgs);
355
363
ENUM_TO_CSTR (FunctionMangledName);
364
+ ENUM_TO_CSTR (FunctionScope);
365
+ ENUM_TO_CSTR (FunctionBasename);
366
+ ENUM_TO_CSTR (FunctionTemplateArguments);
367
+ ENUM_TO_CSTR (FunctionFormattedArguments);
368
+ ENUM_TO_CSTR (FunctionReturnLeft);
369
+ ENUM_TO_CSTR (FunctionReturnRight);
370
+ ENUM_TO_CSTR (FunctionQualifiers);
356
371
ENUM_TO_CSTR (FunctionAddrOffset);
357
372
ENUM_TO_CSTR (FunctionAddrOffsetConcrete);
358
373
ENUM_TO_CSTR (FunctionLineOffset);
@@ -1167,8 +1182,9 @@ static bool PrintFunctionNameWithArgs(Stream &s,
1167
1182
ExecutionContextScope *exe_scope =
1168
1183
exe_ctx ? exe_ctx->GetBestExecutionContextScope () : nullptr ;
1169
1184
1170
- const char *cstr =
1171
- sc.GetPossiblyInlinedFunctionName (Mangled::ePreferDemangled);
1185
+ const char *cstr = sc.GetPossiblyInlinedFunctionName ()
1186
+ .GetName (Mangled::ePreferDemangled)
1187
+ .AsCString ();
1172
1188
if (!cstr)
1173
1189
return false ;
1174
1190
@@ -1186,7 +1202,8 @@ static bool PrintFunctionNameWithArgs(Stream &s,
1186
1202
return true ;
1187
1203
}
1188
1204
1189
- static bool HandleFunctionNameWithArgs (Stream &s,const ExecutionContext *exe_ctx,
1205
+ static bool HandleFunctionNameWithArgs (Stream &s,
1206
+ const ExecutionContext *exe_ctx,
1190
1207
const SymbolContext &sc) {
1191
1208
Language *language_plugin = nullptr ;
1192
1209
bool language_plugin_handled = false ;
@@ -1719,8 +1736,9 @@ bool FormatEntity::Format(const Entry &entry, Stream &s,
1719
1736
return true ;
1720
1737
}
1721
1738
1722
- const char *name = sc->GetPossiblyInlinedFunctionName (
1723
- Mangled::NamePreference::ePreferDemangled);
1739
+ const char *name = sc->GetPossiblyInlinedFunctionName ()
1740
+ .GetName (Mangled::NamePreference::ePreferDemangled)
1741
+ .AsCString ();
1724
1742
if (!name)
1725
1743
return false ;
1726
1744
@@ -1751,8 +1769,10 @@ bool FormatEntity::Format(const Entry &entry, Stream &s,
1751
1769
return true ;
1752
1770
}
1753
1771
1754
- const char *name = sc->GetPossiblyInlinedFunctionName (
1755
- Mangled::NamePreference::ePreferDemangledWithoutArguments);
1772
+ const char *name =
1773
+ sc->GetPossiblyInlinedFunctionName ()
1774
+ .GetName (Mangled::NamePreference::ePreferDemangledWithoutArguments)
1775
+ .AsCString ();
1756
1776
if (!name)
1757
1777
return false ;
1758
1778
@@ -1761,19 +1781,38 @@ bool FormatEntity::Format(const Entry &entry, Stream &s,
1761
1781
return true ;
1762
1782
}
1763
1783
1784
+ case Entry::Type::FunctionScope:
1785
+ case Entry::Type::FunctionBasename:
1786
+ case Entry::Type::FunctionTemplateArguments:
1787
+ case Entry::Type::FunctionFormattedArguments:
1788
+ case Entry::Type::FunctionReturnRight:
1789
+ case Entry::Type::FunctionReturnLeft:
1790
+ case Entry::Type::FunctionQualifiers: {
1791
+ if (!sc->function )
1792
+ return false ;
1793
+
1794
+ Language *language_plugin =
1795
+ Language::FindPlugin (sc->function ->GetLanguage ());
1796
+ if (!language_plugin)
1797
+ return false ;
1798
+
1799
+ return language_plugin->HandleFrameFormatVariable (*sc, exe_ctx, entry.type ,
1800
+ s);
1801
+ }
1802
+
1764
1803
case Entry::Type::FunctionNameWithArgs: {
1765
1804
if (!sc)
1766
1805
return false ;
1767
1806
1768
1807
return HandleFunctionNameWithArgs (s, exe_ctx, *sc);
1769
1808
}
1770
-
1771
1809
case Entry::Type::FunctionMangledName: {
1772
1810
if (!sc)
1773
1811
return false ;
1774
1812
1775
- const char *name = sc->GetPossiblyInlinedFunctionName (
1776
- Mangled::NamePreference::ePreferMangled);
1813
+ const char *name = sc->GetPossiblyInlinedFunctionName ()
1814
+ .GetName (Mangled::NamePreference::ePreferMangled)
1815
+ .AsCString ();
1777
1816
if (!name)
1778
1817
return false ;
1779
1818
0 commit comments