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>
Tue, 3 May 2016 19:42:42 +0000 (15:42 -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 f16e06c464a6c3f0a33acc05441013c1507a3bb2..ff8a6c54e7dc6c7d7fc1e1b2bd9c59b6563b6283 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 7235d80679fa360dbb95271f1964be9fe4cb1024..e0f6cb89431646c19cbcca62f85696f67249699b 100644 (file)
@@ -86,6 +86,7 @@ uint64_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 71c236a46d10187e8db6e348f94046a0e91cbc2c..f11672b1c0ae749aa5470d04627fcdf1e1ae154e 100644 (file)
@@ -198,5 +198,6 @@ extern uint64_t opt_clock_offset;
 extern uint64_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.038156 seconds and 4 git commands to generate.