X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Farmv7m_trace.c;h=3592bad0f64c2f59f8120b2e5787f80676130b12;hb=79d0f1345b8d68ff522f21451860c74c8f1018ca;hp=eb07a6e64056f9db57907b0b28c22496159c5069;hpb=6819468a78ce9f0835a9063d93bc839f3d55eb84;p=openocd.git diff --git a/src/target/armv7m_trace.c b/src/target/armv7m_trace.c index eb07a6e640..3592bad0f6 100644 --- a/src/target/armv7m_trace.c +++ b/src/target/armv7m_trace.c @@ -35,11 +35,15 @@ static int armv7m_poll_trace(void *target) if (retval != ERROR_OK || !size) return retval; - if (fwrite(buf, 1, size, armv7m->trace_config.trace_file) == size) - fflush(armv7m->trace_config.trace_file); - else { - LOG_ERROR("Error writing to the trace destination file"); - return ERROR_FAIL; + target_call_trace_callbacks(target, size, buf); + + if (armv7m->trace_config.trace_file != NULL) { + if (fwrite(buf, 1, size, armv7m->trace_config.trace_file) == size) + fflush(armv7m->trace_config.trace_file); + else { + LOG_ERROR("Error writing to the trace destination file"); + return ERROR_FAIL; + } } return ERROR_OK; @@ -183,10 +187,13 @@ COMMAND_HANDLER(handle_tpiu_config_command) return ERROR_COMMAND_SYNTAX_ERROR; armv7m->trace_config.config_type = INTERNAL; - armv7m->trace_config.trace_file = fopen(CMD_ARGV[cmd_idx], "ab"); - if (!armv7m->trace_config.trace_file) { - LOG_ERROR("Can't open trace destination file"); - return ERROR_FAIL; + + if (strcmp(CMD_ARGV[cmd_idx], "-") != 0) { + armv7m->trace_config.trace_file = fopen(CMD_ARGV[cmd_idx], "ab"); + if (!armv7m->trace_config.trace_file) { + LOG_ERROR("Can't open trace destination file"); + return ERROR_FAIL; + } } } cmd_idx++;