X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=converter%2Fbabeltrace.c;h=14d165ad915849ec7f407a0acc7a1fd9ce5a1f06;hb=7e3e3582f6fc79c97b07fad7fa7019e8a80aeb0e;hp=a6ad5901e300fc4d582f3d55ac7974d08249c2a2;hpb=ff9ce920c95ab70d94a6425182de0ebafed4e2a0;p=babeltrace.git diff --git a/converter/babeltrace.c b/converter/babeltrace.c index a6ad5901..14d165ad 100644 --- a/converter/babeltrace.c +++ b/converter/babeltrace.c @@ -36,7 +36,7 @@ #include #include #include -#include +#include #include #include @@ -76,6 +76,12 @@ static int opt_stream_intersection; static struct bt_format *fmt_read; +void bt_dummy_hook(void); +void bt_lttng_live_hook(void); +void bt_ctf_hook(void); +void bt_ctf_text_hook(void); +void bt_ctf_metadata_hook(void); + static void strlower(char *str) { @@ -107,6 +113,7 @@ enum { OPT_STREAM_INTERSECTION, OPT_DEBUG_INFO_DIR, OPT_DEBUG_INFO_FULL_PATH, + OPT_DEBUG_INFO_TARGET_PREFIX, }; /* @@ -137,9 +144,10 @@ static struct poptOption long_options[] = { { "clock-gmt", 0, POPT_ARG_NONE, NULL, OPT_CLOCK_GMT, NULL, NULL }, { "clock-force-correlate", 0, POPT_ARG_NONE, NULL, OPT_CLOCK_FORCE_CORRELATE, NULL, NULL }, { "stream-intersection", 0, POPT_ARG_NONE, NULL, OPT_STREAM_INTERSECTION, NULL, NULL }, -#ifdef ENABLE_DEBUGINFO +#ifdef ENABLE_DEBUG_INFO { "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 }, }; @@ -187,9 +195,10 @@ static void usage(FILE *fp) fprintf(fp, " --clock-force-correlate Assume that clocks are inherently correlated\n"); fprintf(fp, " across traces.\n"); fprintf(fp, " --stream-intersection Only print events when all streams are active.\n"); -#ifdef ENABLE_DEBUGINFO +#ifdef ENABLE_DEBUG_INFO 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-target-prefix Directory to use as a prefix for executable lookup\n"); fprintf(fp, " --debug-info-full-path Show full debug info source and binary paths (if available)\n"); #endif list_formats(fp); @@ -424,6 +433,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; @@ -693,6 +709,15 @@ error_iter: return ret; } +void call_plugins_hooks(void) +{ + bt_dummy_hook(); + bt_lttng_live_hook(); + bt_ctf_hook(); + bt_ctf_text_hook(); + bt_ctf_metadata_hook(); +} + int main(int argc, char **argv) { int ret, partial_error = 0, open_success = 0; @@ -701,6 +726,8 @@ int main(int argc, char **argv) struct bt_context *ctx; int i; + call_plugins_hooks(); + opt_input_paths = g_ptr_array_new(); ret = parse_options(argc, argv); @@ -844,6 +871,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);