@@ -122,7 +122,15 @@ constexpr Definition g_function_child_entries[] = {
122122 Definition (" pc-offset" , EntryType::FunctionPCOffset),
123123 Definition (" initial-function" , EntryType::FunctionInitial),
124124 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+ };
126134
127135constexpr Definition g_line_child_entries[] = {
128136 Entry::DefinitionWithChildren (" file" , EntryType::LineEntryFile,
@@ -353,6 +361,13 @@ const char *FormatEntity::Entry::TypeToCString(Type t) {
353361 ENUM_TO_CSTR (FunctionNameWithArgs);
354362 ENUM_TO_CSTR (FunctionNameNoArgs);
355363 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);
356371 ENUM_TO_CSTR (FunctionAddrOffset);
357372 ENUM_TO_CSTR (FunctionAddrOffsetConcrete);
358373 ENUM_TO_CSTR (FunctionLineOffset);
@@ -1167,8 +1182,9 @@ static bool PrintFunctionNameWithArgs(Stream &s,
11671182 ExecutionContextScope *exe_scope =
11681183 exe_ctx ? exe_ctx->GetBestExecutionContextScope () : nullptr ;
11691184
1170- const char *cstr =
1171- sc.GetPossiblyInlinedFunctionName (Mangled::ePreferDemangled);
1185+ const char *cstr = sc.GetPossiblyInlinedFunctionName ()
1186+ .GetName (Mangled::ePreferDemangled)
1187+ .AsCString ();
11721188 if (!cstr)
11731189 return false ;
11741190
@@ -1186,7 +1202,8 @@ static bool PrintFunctionNameWithArgs(Stream &s,
11861202 return true ;
11871203}
11881204
1189- static bool HandleFunctionNameWithArgs (Stream &s,const ExecutionContext *exe_ctx,
1205+ static bool HandleFunctionNameWithArgs (Stream &s,
1206+ const ExecutionContext *exe_ctx,
11901207 const SymbolContext &sc) {
11911208 Language *language_plugin = nullptr ;
11921209 bool language_plugin_handled = false ;
@@ -1711,8 +1728,9 @@ bool FormatEntity::Format(const Entry &entry, Stream &s,
17111728 return true ;
17121729 }
17131730
1714- const char *name = sc->GetPossiblyInlinedFunctionName (
1715- Mangled::NamePreference::ePreferDemangled);
1731+ const char *name = sc->GetPossiblyInlinedFunctionName ()
1732+ .GetName (Mangled::NamePreference::ePreferDemangled)
1733+ .AsCString ();
17161734 if (!name)
17171735 return false ;
17181736
@@ -1743,8 +1761,10 @@ bool FormatEntity::Format(const Entry &entry, Stream &s,
17431761 return true ;
17441762 }
17451763
1746- const char *name = sc->GetPossiblyInlinedFunctionName (
1747- Mangled::NamePreference::ePreferDemangledWithoutArguments);
1764+ const char *name =
1765+ sc->GetPossiblyInlinedFunctionName ()
1766+ .GetName (Mangled::NamePreference::ePreferDemangledWithoutArguments)
1767+ .AsCString ();
17481768 if (!name)
17491769 return false ;
17501770
@@ -1753,19 +1773,38 @@ bool FormatEntity::Format(const Entry &entry, Stream &s,
17531773 return true ;
17541774 }
17551775
1776+ case Entry::Type::FunctionScope:
1777+ case Entry::Type::FunctionBasename:
1778+ case Entry::Type::FunctionTemplateArguments:
1779+ case Entry::Type::FunctionFormattedArguments:
1780+ case Entry::Type::FunctionReturnRight:
1781+ case Entry::Type::FunctionReturnLeft:
1782+ case Entry::Type::FunctionQualifiers: {
1783+ if (!sc->function )
1784+ return false ;
1785+
1786+ Language *language_plugin =
1787+ Language::FindPlugin (sc->function ->GetLanguage ());
1788+ if (!language_plugin)
1789+ return false ;
1790+
1791+ return language_plugin->HandleFrameFormatVariable (*sc, exe_ctx, entry.type ,
1792+ s);
1793+ }
1794+
17561795 case Entry::Type::FunctionNameWithArgs: {
17571796 if (!sc)
17581797 return false ;
17591798
17601799 return HandleFunctionNameWithArgs (s, exe_ctx, *sc);
17611800 }
1762-
17631801 case Entry::Type::FunctionMangledName: {
17641802 if (!sc)
17651803 return false ;
17661804
1767- const char *name = sc->GetPossiblyInlinedFunctionName (
1768- Mangled::NamePreference::ePreferMangled);
1805+ const char *name = sc->GetPossiblyInlinedFunctionName ()
1806+ .GetName (Mangled::NamePreference::ePreferMangled)
1807+ .AsCString ();
17691808 if (!name)
17701809 return false ;
17711810
0 commit comments