From 30a30524feb53b6eaed2174bd05f0b144dc8bae1 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Tue, 9 May 2023 13:34:35 -0700 Subject: [PATCH] libsysprof-analyze: implement multi-symbolizer symbolize --- .../sysprof-multi-symbolizer.c | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/libsysprof-analyze/sysprof-multi-symbolizer.c b/src/libsysprof-analyze/sysprof-multi-symbolizer.c index f65846ad..ffcc1475 100644 --- a/src/libsysprof-analyze/sysprof-multi-symbolizer.c +++ b/src/libsysprof-analyze/sysprof-multi-symbolizer.c @@ -117,6 +117,26 @@ sysprof_multi_symbolizer_prepare_finish (SysprofSymbolizer *symbolizer, return g_task_propagate_boolean (G_TASK (result), error); } +static SysprofSymbol * +sysprof_multi_symbolizer_symbolize (SysprofSymbolizer *symbolizer, + gint64 time, + int pid, + SysprofAddress address) +{ + SysprofMultiSymbolizer *self = SYSPROF_MULTI_SYMBOLIZER (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, time, pid, address); + + if (symbol != NULL) + return symbol; + } + + return NULL; +} + static void sysprof_multi_symbolizer_finalize (GObject *object) { @@ -137,6 +157,7 @@ sysprof_multi_symbolizer_class_init (SysprofMultiSymbolizerClass *klass) symbolizer_class->prepare_async = sysprof_multi_symbolizer_prepare_async; symbolizer_class->prepare_finish = sysprof_multi_symbolizer_prepare_finish; + symbolizer_class->symbolize = sysprof_multi_symbolizer_symbolize; } static void