mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-11 23:51:06 +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,
|
sysprof_bundled_symbolizer_symbolize (SysprofSymbolizer *symbolizer,
|
||||||
SysprofStrings *strings,
|
SysprofStrings *strings,
|
||||||
const SysprofProcessInfo *process_info,
|
const SysprofProcessInfo *process_info,
|
||||||
|
SysprofAddressContext context,
|
||||||
SysprofAddress address)
|
SysprofAddress address)
|
||||||
{
|
{
|
||||||
SysprofBundledSymbolizer *self = SYSPROF_BUNDLED_SYMBOLIZER (symbolizer);
|
SysprofBundledSymbolizer *self = SYSPROF_BUNDLED_SYMBOLIZER (symbolizer);
|
||||||
|
|||||||
@ -120,7 +120,7 @@ add_traceable (SysprofStrings *strings,
|
|||||||
}
|
}
|
||||||
else
|
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)
|
if (symbol != NULL)
|
||||||
sysprof_symbol_cache_take (process_info->symbol_cache, g_steal_pointer (&symbol));
|
sysprof_symbol_cache_take (process_info->symbol_cache, g_steal_pointer (&symbol));
|
||||||
|
|||||||
@ -195,6 +195,7 @@ static SysprofSymbol *
|
|||||||
sysprof_kallsyms_symbolizer_symbolize (SysprofSymbolizer *symbolizer,
|
sysprof_kallsyms_symbolizer_symbolize (SysprofSymbolizer *symbolizer,
|
||||||
SysprofStrings *strings,
|
SysprofStrings *strings,
|
||||||
const SysprofProcessInfo *process_info,
|
const SysprofProcessInfo *process_info,
|
||||||
|
SysprofAddressContext context,
|
||||||
SysprofAddress address)
|
SysprofAddress address)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
@ -121,6 +121,7 @@ static SysprofSymbol *
|
|||||||
sysprof_multi_symbolizer_symbolize (SysprofSymbolizer *symbolizer,
|
sysprof_multi_symbolizer_symbolize (SysprofSymbolizer *symbolizer,
|
||||||
SysprofStrings *strings,
|
SysprofStrings *strings,
|
||||||
const SysprofProcessInfo *process_info,
|
const SysprofProcessInfo *process_info,
|
||||||
|
SysprofAddressContext context,
|
||||||
SysprofAddress address)
|
SysprofAddress address)
|
||||||
{
|
{
|
||||||
SysprofMultiSymbolizer *self = SYSPROF_MULTI_SYMBOLIZER (symbolizer);
|
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++)
|
for (guint i = 0; i < self->symbolizers->len; i++)
|
||||||
{
|
{
|
||||||
SysprofSymbolizer *child = g_ptr_array_index (self->symbolizers, 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)
|
if (symbol != NULL)
|
||||||
return symbol;
|
return symbol;
|
||||||
|
|||||||
@ -39,6 +39,7 @@ static SysprofSymbol *
|
|||||||
sysprof_no_symbolizer_symbolize (SysprofSymbolizer *symbolizer,
|
sysprof_no_symbolizer_symbolize (SysprofSymbolizer *symbolizer,
|
||||||
SysprofStrings *strings,
|
SysprofStrings *strings,
|
||||||
const SysprofProcessInfo *process_info,
|
const SysprofProcessInfo *process_info,
|
||||||
|
SysprofAddressContext context,
|
||||||
SysprofAddress address)
|
SysprofAddress address)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
@ -52,6 +52,7 @@ struct _SysprofSymbolizerClass
|
|||||||
SysprofSymbol *(*symbolize) (SysprofSymbolizer *self,
|
SysprofSymbol *(*symbolize) (SysprofSymbolizer *self,
|
||||||
SysprofStrings *strings,
|
SysprofStrings *strings,
|
||||||
const SysprofProcessInfo *process_info,
|
const SysprofProcessInfo *process_info,
|
||||||
|
SysprofAddressContext context,
|
||||||
SysprofAddress address);
|
SysprofAddress address);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -67,6 +68,7 @@ gboolean _sysprof_symbolizer_prepare_finish (SysprofSymbolizer *se
|
|||||||
SysprofSymbol *_sysprof_symbolizer_symbolize (SysprofSymbolizer *self,
|
SysprofSymbol *_sysprof_symbolizer_symbolize (SysprofSymbolizer *self,
|
||||||
SysprofStrings *strings,
|
SysprofStrings *strings,
|
||||||
const SysprofProcessInfo *process_info,
|
const SysprofProcessInfo *process_info,
|
||||||
|
SysprofAddressContext context,
|
||||||
SysprofAddress address);
|
SysprofAddress address);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|||||||
@ -94,7 +94,8 @@ SysprofSymbol *
|
|||||||
_sysprof_symbolizer_symbolize (SysprofSymbolizer *self,
|
_sysprof_symbolizer_symbolize (SysprofSymbolizer *self,
|
||||||
SysprofStrings *strings,
|
SysprofStrings *strings,
|
||||||
const SysprofProcessInfo *process_info,
|
const SysprofProcessInfo *process_info,
|
||||||
|
SysprofAddressContext context,
|
||||||
SysprofAddress address)
|
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