libsysprof-analyze: give symbolizer access to address context

The kallsym symbol resolver will need this to short-circuit unless we're
within a kernel address context.
This commit is contained in:
Christian Hergert
2023-05-15 13:07:48 -07:00
parent 14e5cf06a5
commit 525b30a42f
7 changed files with 10 additions and 3 deletions

View File

@ -172,6 +172,7 @@ static SysprofSymbol *
sysprof_bundled_symbolizer_symbolize (SysprofSymbolizer *symbolizer,
SysprofStrings *strings,
const SysprofProcessInfo *process_info,
SysprofAddressContext context,
SysprofAddress address)
{
SysprofBundledSymbolizer *self = SYSPROF_BUNDLED_SYMBOLIZER (symbolizer);

View File

@ -120,7 +120,7 @@ add_traceable (SysprofStrings *strings,
}
else
{
g_autoptr(SysprofSymbol) symbol = _sysprof_symbolizer_symbolize (symbolizer, strings, process_info, address);
g_autoptr(SysprofSymbol) symbol = _sysprof_symbolizer_symbolize (symbolizer, strings, process_info, last_context, address);
if (symbol != NULL)
sysprof_symbol_cache_take (process_info->symbol_cache, g_steal_pointer (&symbol));

View File

@ -195,6 +195,7 @@ static SysprofSymbol *
sysprof_kallsyms_symbolizer_symbolize (SysprofSymbolizer *symbolizer,
SysprofStrings *strings,
const SysprofProcessInfo *process_info,
SysprofAddressContext context,
SysprofAddress address)
{
return NULL;

View File

@ -121,6 +121,7 @@ static SysprofSymbol *
sysprof_multi_symbolizer_symbolize (SysprofSymbolizer *symbolizer,
SysprofStrings *strings,
const SysprofProcessInfo *process_info,
SysprofAddressContext context,
SysprofAddress address)
{
SysprofMultiSymbolizer *self = SYSPROF_MULTI_SYMBOLIZER (symbolizer);
@ -128,7 +129,7 @@ sysprof_multi_symbolizer_symbolize (SysprofSymbolizer *symbolizer,
for (guint i = 0; i < self->symbolizers->len; i++)
{
SysprofSymbolizer *child = g_ptr_array_index (self->symbolizers, i);
SysprofSymbol *symbol = _sysprof_symbolizer_symbolize (child, strings, process_info, address);
SysprofSymbol *symbol = _sysprof_symbolizer_symbolize (child, strings, process_info, context, address);
if (symbol != NULL)
return symbol;

View File

@ -39,6 +39,7 @@ static SysprofSymbol *
sysprof_no_symbolizer_symbolize (SysprofSymbolizer *symbolizer,
SysprofStrings *strings,
const SysprofProcessInfo *process_info,
SysprofAddressContext context,
SysprofAddress address)
{
return NULL;

View File

@ -52,6 +52,7 @@ struct _SysprofSymbolizerClass
SysprofSymbol *(*symbolize) (SysprofSymbolizer *self,
SysprofStrings *strings,
const SysprofProcessInfo *process_info,
SysprofAddressContext context,
SysprofAddress address);
};
@ -67,6 +68,7 @@ gboolean _sysprof_symbolizer_prepare_finish (SysprofSymbolizer *se
SysprofSymbol *_sysprof_symbolizer_symbolize (SysprofSymbolizer *self,
SysprofStrings *strings,
const SysprofProcessInfo *process_info,
SysprofAddressContext context,
SysprofAddress address);
G_END_DECLS

View File

@ -94,7 +94,8 @@ SysprofSymbol *
_sysprof_symbolizer_symbolize (SysprofSymbolizer *self,
SysprofStrings *strings,
const SysprofProcessInfo *process_info,
SysprofAddressContext context,
SysprofAddress address)
{
return SYSPROF_SYMBOLIZER_GET_CLASS (self)->symbolize (self, strings, process_info, address);
return SYSPROF_SYMBOLIZER_GET_CLASS (self)->symbolize (self, strings, process_info, context, address);
}