X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=plugins%2Flttng-utils%2Fdebug-info.c;h=45b0f1c1efce5770474c483ce5170c0883b82517;hb=40f4ba76dd6f9508ca51b6220eaed57632281a07;hp=92833cae0ffec4e04004a0f2a77f7f36dd6296eb;hpb=b4d4912ff0147ecc7f4f3b714529337a4a4e4095;p=babeltrace.git diff --git a/plugins/lttng-utils/debug-info.c b/plugins/lttng-utils/debug-info.c index 92833cae..45b0f1c1 100644 --- a/plugins/lttng-utils/debug-info.c +++ b/plugins/lttng-utils/debug-info.c @@ -28,7 +28,7 @@ #define BT_LOG_TAG "PLUGIN-CTF-LTTNG-UTILS-DEBUG-INFO-FLT" #include "logging.h" -#include +#include #include #include "debug-info.h" #include "bin-info.h" @@ -373,24 +373,26 @@ end: static void handle_statedump_build_id_event(FILE *err, struct debug_info *debug_info, - struct bt_ctf_event *event) + const struct bt_event *event) { struct proc_debug_info_sources *proc_dbg_info_src; struct bin_info *bin = NULL; int ret; int64_t vpid; uint64_t baddr; + uint64_t build_id_len; ret = get_stream_event_context_int_field_value(err, - event, "_vpid", &vpid); + event, VPID_FIELD_NAME, &vpid); if (ret) { goto end; } ret = get_payload_unsigned_int_field_value(err, - event, "_baddr", &baddr); + event, BADDR_FIELD_NAME, &baddr); if (ret) { - BT_LOGE_STR("Failed to get unsigned int value for _vpid field."); + BT_LOGE_STR("Failed to get unsigned int value for " + VPID_FIELD_NAME " field."); goto end; } @@ -410,12 +412,16 @@ void handle_statedump_build_id_event(FILE *err, struct debug_info *debug_info, goto end; } - ret = get_payload_build_id_field_value(err, event, "_build_id", - &bin->build_id, &bin->build_id_len); + ret = get_payload_build_id_field_value(err, event, BUILD_ID_FIELD_NAME, + &bin->build_id, &build_id_len); if (ret) { - BT_LOGE_STR("Failed to get _build_id field value."); + BT_LOGE_STR("Failed to get " BUILD_ID_FIELD_NAME + " field value."); goto end; } + if (build_id_len > SIZE_MAX) { + bin->build_id_len = (size_t) build_id_len; + } /* * Reset the is_elf_only flag in case it had been set @@ -433,7 +439,7 @@ end: static void handle_statedump_debug_link_event(FILE *err, struct debug_info *debug_info, - struct bt_ctf_event *event) + const struct bt_event *event) { struct proc_debug_info_sources *proc_dbg_info_src; struct bin_info *bin = NULL; @@ -445,31 +451,35 @@ void handle_statedump_debug_link_event(FILE *err, struct debug_info *debug_info, int ret; ret = get_stream_event_context_int_field_value(err, event, - "_vpid", &vpid); + VPID_FIELD_NAME, &vpid); if (ret) { goto end; } ret = get_payload_unsigned_int_field_value(err, - event, "_baddr", &baddr); + event, BADDR_FIELD_NAME, &baddr); if (ret) { - BT_LOGE_STR("Failed to get unsigned int value for _baddr field."); + BT_LOGE_STR("Failed to get unsigned int value for " + BADDR_FIELD_NAME " field."); ret = -1; goto end; } - ret = get_payload_unsigned_int_field_value(err, event, "_crc32", &tmp); + ret = get_payload_unsigned_int_field_value(err, event, CRC32_FIELD_NAME, + &tmp); if (ret) { - BT_LOGE_STR("Failed to get unsigned int value for _crc32 field."); + BT_LOGE_STR("Failed to get unsigned int value for " + CRC32_FIELD_NAME " field."); ret = -1; goto end; } crc32 = (uint32_t) tmp; ret = get_payload_string_field_value(err, - event, "_filename", &filename); + event, FILENAME_FIELD_NAME, &filename); if (ret) { - BT_LOGE_STR("Failed to get string value for _filename field."); + BT_LOGE_STR("Failed to get string value for " + FILENAME_FIELD_NAME " field."); ret = -1; goto end; } @@ -498,7 +508,7 @@ end: static void handle_bin_info_event(FILE *err, struct debug_info *debug_info, - struct bt_ctf_event *event, bool has_pic_field) + const struct bt_event *event, bool has_pic_field) { struct proc_debug_info_sources *proc_dbg_info_src; struct bin_info *bin; @@ -510,16 +520,18 @@ void handle_bin_info_event(FILE *err, struct debug_info *debug_info, int ret; ret = get_payload_unsigned_int_field_value(err, - event, "_baddr", &baddr); + event, BADDR_FIELD_NAME, &baddr); if (ret) { - BT_LOGE_STR("Failed to get unsigned int value for _baddr field."); + BT_LOGE_STR("Failed to get unsigned int value for " + BADDR_FIELD_NAME " field."); goto end; } ret = get_payload_unsigned_int_field_value(err, - event, "_memsz", &memsz); + event, MEMSZ_FIELD_NAME, &memsz); if (ret) { - BT_LOGE_STR("Failed to get unsigned int value for _memsz field."); + BT_LOGE_STR("Failed to get unsigned int value for " + MEMSZ_FIELD_NAME " field."); goto end; } @@ -528,7 +540,7 @@ void handle_bin_info_event(FILE *err, struct debug_info *debug_info, * lttng-ust 2.9. */ ret = get_payload_string_field_value(err, - event, "_path", &path); + event, PATH_FIELD_NAME, &path); if (ret || !path) { goto end; } @@ -537,9 +549,10 @@ void handle_bin_info_event(FILE *err, struct debug_info *debug_info, uint64_t tmp; ret = get_payload_unsigned_int_field_value(err, - event, "_is_pic", &tmp); + event, IS_PIC_FIELD_NAME, &tmp); if (ret) { - BT_LOGE_STR("Failed to get unsigned int value for _is_pic field."); + BT_LOGE_STR("Failed to get unsigned int value for " + IS_PIC_FIELD_NAME " field."); ret = -1; goto end; } @@ -552,8 +565,8 @@ void handle_bin_info_event(FILE *err, struct debug_info *debug_info, is_pic = true; } - ret = get_stream_event_context_int_field_value(err, event, "_vpid", - &vpid); + ret = get_stream_event_context_int_field_value(err, event, + VPID_FIELD_NAME, &vpid); if (ret) { goto end; } @@ -601,21 +614,21 @@ end: static inline void handle_statedump_bin_info_event(FILE *err, struct debug_info *debug_info, - struct bt_ctf_event *event) + const struct bt_event *event) { handle_bin_info_event(err, debug_info, event, true); } static inline void handle_lib_load_event(FILE *err, struct debug_info *debug_info, - struct bt_ctf_event *event) + const struct bt_event *event) { handle_bin_info_event(err, debug_info, event, false); } static inline void handle_lib_unload_event(FILE *err, struct debug_info *debug_info, - struct bt_ctf_event *event) + const struct bt_event *event) { struct proc_debug_info_sources *proc_dbg_info_src; uint64_t baddr; @@ -624,15 +637,16 @@ void handle_lib_unload_event(FILE *err, struct debug_info *debug_info, int ret; ret = get_payload_unsigned_int_field_value(err, - event, "_baddr", &baddr); + event, BADDR_FIELD_NAME, &baddr); if (ret) { - BT_LOGE_STR("Failed to get unsigned int value for _baddr field."); + BT_LOGE_STR("Failed to get unsigned int value for " + BADDR_FIELD_NAME " field."); ret = -1; goto end; } - ret = get_stream_event_context_int_field_value(err, event, "_vpid", - &vpid); + ret = get_stream_event_context_int_field_value(err, event, + VPID_FIELD_NAME, &vpid); if (ret) { goto end; } @@ -652,14 +666,14 @@ end: static void handle_statedump_start(FILE *err, struct debug_info *debug_info, - struct bt_ctf_event *event) + const struct bt_event *event) { struct proc_debug_info_sources *proc_dbg_info_src; int64_t vpid; int ret; ret = get_stream_event_context_int_field_value(err, event, - "_vpid", &vpid); + VPID_FIELD_NAME, &vpid); if (ret) { goto end; } @@ -678,21 +692,21 @@ end: } BT_HIDDEN -void debug_info_handle_event(FILE *err, struct bt_ctf_event *event, +void debug_info_handle_event(FILE *err, const struct bt_event *event, struct debug_info *debug_info) { - struct bt_ctf_event_class *event_class; + const struct bt_event_class *event_class; const char *event_name; GQuark q_event_name; if (!debug_info || !event) { goto end; } - event_class = bt_ctf_event_get_class(event); + event_class = bt_event_get_class(event); if (!event_class) { goto end; } - event_name = bt_ctf_event_class_get_name(event_class); + event_name = bt_event_class_get_name(event_class); if (!event_name) { goto end_put_class; } @@ -727,7 +741,7 @@ void debug_info_handle_event(FILE *err, struct bt_ctf_event *event, } end_put_class: - bt_put(event_class); + bt_object_put_ref(event_class); end: return; }