mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2025-12-31 20:36:25 +00:00
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:
@ -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);
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -195,6 +195,7 @@ static SysprofSymbol *
|
||||
sysprof_kallsyms_symbolizer_symbolize (SysprofSymbolizer *symbolizer,
|
||||
SysprofStrings *strings,
|
||||
const SysprofProcessInfo *process_info,
|
||||
SysprofAddressContext context,
|
||||
SysprofAddress address)
|
||||
{
|
||||
return NULL;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -39,6 +39,7 @@ static SysprofSymbol *
|
||||
sysprof_no_symbolizer_symbolize (SysprofSymbolizer *symbolizer,
|
||||
SysprofStrings *strings,
|
||||
const SysprofProcessInfo *process_info,
|
||||
SysprofAddressContext context,
|
||||
SysprofAddress address)
|
||||
{
|
||||
return NULL;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user