Signed-off-by: Antoine Busque <abusque@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
OPT_STREAM_INTERSECTION,
OPT_DEBUG_INFO_DIR,
OPT_DEBUG_INFO_FULL_PATH,
OPT_STREAM_INTERSECTION,
OPT_DEBUG_INFO_DIR,
OPT_DEBUG_INFO_FULL_PATH,
+ OPT_DEBUG_INFO_TARGET_PREFIX,
#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 },
#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 },
};
#endif
{ NULL, 0, 0, NULL, 0, NULL, NULL },
};
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-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");
#endif
list_formats(fp);
fprintf(fp, "\n");
case OPT_DEBUG_INFO_FULL_PATH:
opt_debug_info_full_path = 1;
break;
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;
default:
ret = -EINVAL;
goto end;
free(opt_output_format);
free(opt_output_path);
free(opt_debug_info_dir);
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);
g_ptr_array_free(opt_input_paths, TRUE);
if (partial_error)
exit(EXIT_FAILURE);
extern int yydebug;
char *opt_debug_info_dir;
extern int yydebug;
char *opt_debug_info_dir;
+char *opt_debug_info_target_prefix;
/*
* TODO: babeltrace_ctf_console_output ensures that we only print
/*
* TODO: babeltrace_ctf_console_output ensures that we only print
extern uint64_t opt_clock_offset_ns;
extern int babeltrace_ctf_console_output;
extern char *opt_debug_info_dir;
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;
- 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;
}
if (!so->elf_path) {
goto error;
}
#define BUILD_ID_LEN 20
char *opt_debug_info_dir;
#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)
static
void test_so_info_build_id(const char *data_dir)