Add --debug-info-target-prefix
authorAntoine Busque <abusque@efficios.com>
Tue, 19 Apr 2016 23:57:57 +0000 (19:57 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 21 Apr 2016 18:14:36 +0000 (14:14 -0400)
Signed-off-by: Antoine Busque <abusque@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
converter/babeltrace.c
formats/ctf/ctf.c
include/babeltrace/babeltrace-internal.h
lib/so-info.c
tests/lib/test_so_info.c

index a6ad5901e300fc4d582f3d55ac7974d08249c2a2..c5a7a7e2e2a781fdea1efe5e07c7997a670e9c9b 100644 (file)
@@ -107,6 +107,7 @@ enum {
        OPT_STREAM_INTERSECTION,
        OPT_DEBUG_INFO_DIR,
        OPT_DEBUG_INFO_FULL_PATH,
+       OPT_DEBUG_INFO_TARGET_PREFIX,
 };
 
 /*
@@ -140,6 +141,7 @@ static struct poptOption long_options[] = {
 #ifdef ENABLE_DEBUGINFO
        { "debug-info-dir", 0, POPT_ARG_STRING, NULL, OPT_DEBUG_INFO_DIR, NULL, NULL },
        { "debug-info-full-path", 0, POPT_ARG_NONE, NULL, OPT_DEBUG_INFO_FULL_PATH, NULL, NULL },
+       { "debug-info-target-prefix", 0, POPT_ARG_STRING, NULL, OPT_DEBUG_INFO_TARGET_PREFIX, NULL, NULL },
 #endif
        { NULL, 0, 0, NULL, 0, NULL, NULL },
 };
@@ -191,6 +193,8 @@ static void usage(FILE *fp)
        fprintf(fp, "      --debug-info-dir           Directory in which to look for debugging information\n");
        fprintf(fp, "                                 files. (default: /usr/lib/debug/)\n");
        fprintf(fp, "      --debug-info-full-path     Show full debug info source and binary paths (if available)\n");
+       fprintf(fp, "      --debug-info-target-prefix Directory to use as a prefix for executable lookup\n");
+       fprintf(fp, "                                 during debug info analysis.\n");
 #endif
        list_formats(fp);
        fprintf(fp, "\n");
@@ -424,6 +428,13 @@ static int parse_options(int argc, char **argv)
                case OPT_DEBUG_INFO_FULL_PATH:
                        opt_debug_info_full_path = 1;
                        break;
+               case OPT_DEBUG_INFO_TARGET_PREFIX:
+                       opt_debug_info_target_prefix = (char *) poptGetOptArg(pc);
+                       if (!opt_debug_info_target_prefix) {
+                               ret = -EINVAL;
+                               goto end;
+                       }
+                       break;
                default:
                        ret = -EINVAL;
                        goto end;
@@ -844,6 +855,7 @@ end:
        free(opt_output_format);
        free(opt_output_path);
        free(opt_debug_info_dir);
+       free(opt_debug_info_target_prefix);
        g_ptr_array_free(opt_input_paths, TRUE);
        if (partial_error)
                exit(EXIT_FAILURE);
index ebc6d0e8d2023010e4807b8e2833148f47f7c14f..c87da63d7e8821bac70a78097304907c67423e7c 100644 (file)
@@ -86,6 +86,7 @@ int64_t opt_clock_offset_ns;
 
 extern int yydebug;
 char *opt_debug_info_dir;
+char *opt_debug_info_target_prefix;
 
 /*
  * TODO: babeltrace_ctf_console_output ensures that we only print
index ce2648a6cf3bf32ed6b261ea09607ff02aaeb667..64d562b789c6fb8d77d0203989ee45fb5c076b83 100644 (file)
@@ -198,5 +198,6 @@ extern int64_t opt_clock_offset;
 extern int64_t opt_clock_offset_ns;
 extern int babeltrace_ctf_console_output;
 extern char *opt_debug_info_dir;
+extern char *opt_debug_info_target_prefix;
 
 #endif
index 6998fbfbf0328700c1bd8ce925a62c2b38e1dfd2..93d7167fee60244932fc15634a3fa797a5b54352 100644 (file)
@@ -78,7 +78,13 @@ struct so_info *so_info_create(const char *path, uint64_t low_addr,
                goto error;
        }
 
-       so->elf_path = strdup(path);
+       if (opt_debug_info_target_prefix) {
+               so->elf_path = g_build_path("/", opt_debug_info_target_prefix,
+                                               path, NULL);
+       } else {
+               so->elf_path = strdup(path);
+       }
+
        if (!so->elf_path) {
                goto error;
        }
index 58d02180de764b55744a1390caa0eb5818b8f3db..ced06be90336f5c475f2b3d7aaf64511122bb4a4 100644 (file)
@@ -46,6 +46,7 @@
 #define BUILD_ID_LEN 20
 
 char *opt_debug_info_dir;
+char *opt_debug_info_target_prefix;
 
 static
 void test_so_info_build_id(const char *data_dir)
This page took 0.028077 seconds and 4 git commands to generate.