sysprof-recording-template: add debugdirs property for external debug directories

Signed-off-by: varun-r-mallya <varunrmallya@gmail.com>
This commit is contained in:
2025-02-16 04:15:25 +05:30
committed by Christian Hergert
parent db914e8c63
commit 78c6a5ad49

View File

@ -35,6 +35,7 @@ struct _SysprofRecordingTemplate
char *cwd;
char *power_profile;
char **environ;
char **debugdirs;
guint stack_size;
@ -65,6 +66,7 @@ enum {
PROP_BATTERY_CHARGE,
PROP_BUNDLE_SYMBOLS,
PROP_DEBUGINFOD,
PROP_DEBUGDIRS,
PROP_CLEAR_ENVIRON,
PROP_COMMAND_LINE,
PROP_CPU_USAGE,
@ -103,6 +105,7 @@ sysprof_recording_template_finalize (GObject *object)
g_clear_pointer (&self->cwd, g_free);
g_clear_pointer (&self->power_profile, g_free);
g_clear_pointer (&self->environ, g_free);
g_clear_pointer (&self->debugdirs, g_free);
G_OBJECT_CLASS (sysprof_recording_template_parent_class)->finalize (object);
}
@ -156,6 +159,10 @@ sysprof_recording_template_get_property (GObject *object,
case PROP_ENVIRON:
g_value_set_boxed (value, self->environ);
break;
case PROP_DEBUGDIRS:
g_value_set_boxed (value, self->debugdirs);
break;
case PROP_FRAME_TIMINGS:
g_value_set_boolean (value, self->frame_timings);
@ -272,6 +279,11 @@ sysprof_recording_template_set_property (GObject *object,
g_clear_pointer (&self->environ, g_strfreev);
self->environ = g_value_dup_boxed (value);
break;
case PROP_DEBUGDIRS:
g_clear_pointer (&self->debugdirs, g_strfreev);
self->environ = g_value_dup_boxed (value);
break;
case PROP_FRAME_TIMINGS:
self->frame_timings = g_value_get_boolean (value);
@ -396,6 +408,11 @@ sysprof_recording_template_class_init (SysprofRecordingTemplateClass *klass)
g_param_spec_boxed ("environ", NULL, NULL,
G_TYPE_STRV,
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
properties[PROP_DEBUGDIRS] =
g_param_spec_boxed ("debugdirs", NULL, NULL,
G_TYPE_STRV,
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
properties[PROP_FRAME_TIMINGS] =
g_param_spec_boolean ("frame-timings", NULL, NULL,
@ -783,9 +800,11 @@ sysprof_recording_template_create_loader (SysprofRecordingTemplate *self,
multi = sysprof_multi_symbolizer_new ();
elf = SYSPROF_ELF_SYMBOLIZER (sysprof_elf_symbolizer_new ());
/* TODO: add extra-debug-directories property and use that to
* call sysprof_elf_symbolizer_set_external_debug_dirs(elf,...)
*/
if (self->debugdirs)
{
sysprof_elf_symbolizer_set_external_debug_dirs (elf, (const char * const *)self->debugdirs);
}
/* Add in order of priority */
sysprof_multi_symbolizer_take (multi, sysprof_bundled_symbolizer_new ());