X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Ftrace.c;h=17f899fba20f39a94b47545b6a9f9e1eb57ac6cb;hb=95d2a2372421aeddae01f1af51279ab7989e46b5;hp=536e34a5f427cf0149d4b7e4cc57a6b82731fe0a;hpb=29000b204d039bc1123027eba755329ab36a3dde;p=openocd.git diff --git a/src/target/trace.c b/src/target/trace.c index 536e34a5f4..17f899fba2 100644 --- a/src/target/trace.c +++ b/src/target/trace.c @@ -21,21 +21,15 @@ #include "config.h" #endif -#include "replacements.h" #include "log.h" #include "trace.h" #include "target.h" -#include "command.h" -#include -#include -#include - -int trace_point(target_t *target, int number) +int trace_point(target_t *target, uint32_t number) { trace_t *trace = target->trace_info; - DEBUG("tracepoint: %i", number); + LOG_DEBUG("tracepoint: %i", (int)number); if (number < trace->num_trace_points) trace->trace_points[number].hit_counter++; @@ -53,20 +47,20 @@ int trace_point(target_t *target, int number) return ERROR_OK; } -int handle_trace_point_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_trace_point_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { target_t *target = get_current_target(cmd_ctx); trace_t *trace = target->trace_info; if (argc == 0) { - int i; + uint32_t i; for (i = 0; i < trace->num_trace_points; i++) { - command_print(cmd_ctx, "trace point 0x%8.8x (%"PRIi64" times hit)", + command_print(cmd_ctx, "trace point 0x%8.8" PRIx32 " (%lld times hit)", trace->trace_points[i].address, - trace->trace_points[i].hit_counter); + (long long)trace->trace_points[i].hit_counter); } return ERROR_OK; @@ -75,7 +69,10 @@ int handle_trace_point_command(struct command_context_s *cmd_ctx, char *cmd, cha if (!strcmp(args[0], "clear")) { if (trace->trace_points) + { free(trace->trace_points); + trace->trace_points = NULL; + } trace->num_trace_points = 0; trace->trace_points_size = 0; @@ -96,7 +93,7 @@ int handle_trace_point_command(struct command_context_s *cmd_ctx, char *cmd, cha return ERROR_OK; } -int handle_trace_history_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +static int handle_trace_history_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { target_t *target = get_current_target(cmd_ctx); trace_t *trace = target->trace_info; @@ -116,16 +113,20 @@ int handle_trace_history_command(struct command_context_s *cmd_ctx, char *cmd, c free(trace->trace_history); trace->trace_history_size = strtoul(args[0], NULL, 0); - trace->trace_history = malloc(sizeof(u32) * trace->trace_history_size); + trace->trace_history = malloc(sizeof(uint32_t) * trace->trace_history_size); - command_print(cmd_ctx, "new trace history size: %i", trace->trace_history_size); + command_print(cmd_ctx, "new trace history size: %i", (int)(trace->trace_history_size)); } else { - int i; - int first = 0; - int last = trace->trace_history_pos; - + uint32_t i; + uint32_t first = 0; + uint32_t last = trace->trace_history_pos; + + if ( !trace->trace_history_size ) { + command_print(cmd_ctx, "trace history buffer is not allocated"); + return ERROR_OK; + } if (trace->trace_history_overflowed) { first = trace->trace_history_pos; @@ -136,16 +137,16 @@ int handle_trace_history_command(struct command_context_s *cmd_ctx, char *cmd, c { if (trace->trace_history[i % trace->trace_history_size] < trace->num_trace_points) { - u32 address; + uint32_t address; address = trace->trace_points[trace->trace_history[i % trace->trace_history_size]].address; - command_print(cmd_ctx, "trace point %i: 0x%8.8x", - trace->trace_history[i % trace->trace_history_size], - address); + command_print(cmd_ctx, "trace point %i: 0x%8.8" PRIx32 "", + (int)(trace->trace_history[i % trace->trace_history_size]), + address); } else { - command_print(cmd_ctx, "trace point %i: -not defined-", trace->trace_history[i % trace->trace_history_size]); + command_print(cmd_ctx, "trace point %i: -not defined-", (int)(trace->trace_history[i % trace->trace_history_size])); } } }