From 1c90e3da80e08b3bf7537eae3b6eaaa1f298bd20 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Sat, 3 Aug 2019 01:03:59 -0700 Subject: [PATCH] libsysprof: remove symbol-dirs This is automatically done for the cases we care about, so this can be removed now (in favor of tuning the elf symbol resolver manually). --- src/libsysprof/binfile.c | 1 - src/libsysprof/meson.build | 2 - src/libsysprof/sysprof-symbol-dirs.c | 140 --------------------------- src/libsysprof/sysprof-symbol-dirs.h | 41 -------- src/libsysprof/sysprof.h | 1 - 5 files changed, 185 deletions(-) delete mode 100644 src/libsysprof/sysprof-symbol-dirs.c delete mode 100644 src/libsysprof/sysprof-symbol-dirs.h diff --git a/src/libsysprof/binfile.c b/src/libsysprof/binfile.c index cd784b7a..3d55b60b 100644 --- a/src/libsysprof/binfile.c +++ b/src/libsysprof/binfile.c @@ -37,7 +37,6 @@ #include "binfile.h" #include "elfparser.h" -#include "sysprof-symbol-dirs.h" struct bin_file_t { diff --git a/src/libsysprof/meson.build b/src/libsysprof/meson.build index 12e3ac66..34499610 100644 --- a/src/libsysprof/meson.build +++ b/src/libsysprof/meson.build @@ -25,7 +25,6 @@ libsysprof_public_sources = [ 'sysprof-selection.c', 'sysprof-source.c', 'sysprof-spawnable.c', - 'sysprof-symbol-dirs.c', 'sysprof-symbol-resolver.c', 'sysprof-symbols-source.c', 'sysprof-tracefd-source.c', @@ -54,7 +53,6 @@ libsysprof_public_headers = [ 'sysprof-selection.h', 'sysprof-source.h', 'sysprof-spawnable.h', - 'sysprof-symbol-dirs.h', 'sysprof-symbol-resolver.h', 'sysprof-symbols-source.h', 'sysprof-tracefd-source.h', diff --git a/src/libsysprof/sysprof-symbol-dirs.c b/src/libsysprof/sysprof-symbol-dirs.c deleted file mode 100644 index 49bc2f6e..00000000 --- a/src/libsysprof/sysprof-symbol-dirs.c +++ /dev/null @@ -1,140 +0,0 @@ -/* sysprof-symbol-dirs.c - * - * Copyright 2017-2019 Christian Hergert - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * SPDX-License-Identifier: GPL-3.0-or-later - */ - -#include "config.h" - -#include "sysprof-symbol-dirs.h" - -static GPtrArray *sysprof_symbol_dirs; - -G_LOCK_DEFINE (sysprof_symbol_dirs); - -static GPtrArray * -sysprof_get_symbol_dirs_locked (void) -{ - if (sysprof_symbol_dirs == NULL) - { - sysprof_symbol_dirs = g_ptr_array_new (); - g_ptr_array_add (sysprof_symbol_dirs, g_strdup ("/usr/lib/debug")); - - /* Add path to host system if we have it */ - if (g_file_test ("/.flatpak-info", G_FILE_TEST_EXISTS)) - { - static gchar *tries[] = { - "/var/run/host/usr/lib/debug", - }; - - for (guint i = 0; i < G_N_ELEMENTS (tries); i++) - { - if (g_file_test (tries[i], G_FILE_TEST_EXISTS)) - g_ptr_array_add (sysprof_symbol_dirs, g_strdup (tries[i])); - } - } - } - - return sysprof_symbol_dirs; -} - -void -sysprof_symbol_dirs_add (const gchar *path) -{ - GPtrArray *ar; - - G_LOCK (sysprof_symbol_dirs); - - ar = sysprof_get_symbol_dirs_locked (); - - for (guint i = 0; i < ar->len; i++) - { - const gchar *ele = g_ptr_array_index (ar, i); - - if (g_strcmp0 (path, ele) == 0) - goto skip; - } - - g_ptr_array_add (ar, g_strdup (path)); - -skip: - G_UNLOCK (sysprof_symbol_dirs); -} - -void -sysprof_symbol_dirs_remove (const gchar *path) -{ - GPtrArray *ar; - - G_LOCK (sysprof_symbol_dirs); - - ar = sysprof_get_symbol_dirs_locked (); - - for (guint i = 0; i < ar->len; i++) - { - const gchar *ele = g_ptr_array_index (ar, i); - - if (g_strcmp0 (path, ele) == 0) - { - g_ptr_array_remove_index (ar, i); - break; - } - } - - G_UNLOCK (sysprof_symbol_dirs); -} - -/** - * sysprof_symbol_dirs_get_paths: - * @dir: the directory containing the library - * @name: the name of the file in @dir - * - * This function will build an array of files to look at to resolve the - * debug symbols for the file at path "dir/name". - * - * Returns: (transfer full): A #GStrv of possible paths. - */ -gchar ** -sysprof_symbol_dirs_get_paths (const gchar *dir, - const gchar *name) -{ - GPtrArray *ret = g_ptr_array_new (); - GPtrArray *ar; - - g_ptr_array_add (ret, g_build_filename (dir, name, NULL)); - - G_LOCK (sysprof_symbol_dirs); - - ar = sysprof_get_symbol_dirs_locked (); - - for (guint i = 0; i < ar->len; i++) - { - const gchar *ele = g_ptr_array_index (ar, i); - - g_ptr_array_add (ret, g_build_filename (ele, name, NULL)); - g_ptr_array_add (ret, g_build_filename (ele, dir, name, NULL)); - } - - g_ptr_array_add (ret, g_build_filename (dir, ".debug", name, NULL)); - g_ptr_array_add (ret, g_build_filename (DEBUGDIR, dir, name, NULL)); - - G_UNLOCK (sysprof_symbol_dirs); - - g_ptr_array_add (ret, NULL); - - return (gchar **)g_ptr_array_free (ret, FALSE); -} diff --git a/src/libsysprof/sysprof-symbol-dirs.h b/src/libsysprof/sysprof-symbol-dirs.h deleted file mode 100644 index 19a5d49e..00000000 --- a/src/libsysprof/sysprof-symbol-dirs.h +++ /dev/null @@ -1,41 +0,0 @@ -/* sysprof-symbol-dirs.h - * - * Copyright 2017-2019 Christian Hergert - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * SPDX-License-Identifier: GPL-3.0-or-later - */ - -#pragma once - -#if !defined (SYSPROF_INSIDE) && !defined (SYSPROF_COMPILATION) -# error "Only can be included directly." -#endif - -#include "sysprof-version-macros.h" - -#include - -G_BEGIN_DECLS - -SYSPROF_AVAILABLE_IN_ALL -void sysprof_symbol_dirs_add (const gchar *dir); -SYSPROF_AVAILABLE_IN_ALL -void sysprof_symbol_dirs_remove (const gchar *dir); -SYSPROF_AVAILABLE_IN_ALL -gchar **sysprof_symbol_dirs_get_paths (const gchar *dir, - const gchar *name); - -G_END_DECLS diff --git a/src/libsysprof/sysprof.h b/src/libsysprof/sysprof.h index c8c6fc04..da4b524f 100644 --- a/src/libsysprof/sysprof.h +++ b/src/libsysprof/sysprof.h @@ -45,7 +45,6 @@ G_BEGIN_DECLS # include "sysprof-selection.h" # include "sysprof-source.h" # include "sysprof-spawnable.h" -# include "sysprof-symbol-dirs.h" # include "sysprof-symbol-resolver.h" # include "sysprof-symbols-source.h" # include "sysprof-tracefd-source.h"