From e441588c79643e4c761a3f3dfd15fbc04db67022 Mon Sep 17 00:00:00 2001 From: Marc Herbert Date: Fri, 11 Sep 2020 03:25:54 +0000 Subject: [PATCH 1/2] logger: use __attribute__((format(printf, 1, 2))) in misc.h Also works with clang. Signed-off-by: Marc Herbert --- tools/logger/logger.c | 2 +- tools/logger/misc.h | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/logger/logger.c b/tools/logger/logger.c index 4ddf9cba7eca..6ee6f4667921 100644 --- a/tools/logger/logger.c +++ b/tools/logger/logger.c @@ -150,7 +150,7 @@ static int append_filter_config(struct convert_config *config, const char *input /* filer_config can't be NULL for following steps */ if (!old_config) - config->filter_config = asprintf(""); + config->filter_config = asprintf("%s", ""); config->filter_config = asprintf("%s%s\n", config->filter_config, input); free(old_config); diff --git a/tools/logger/misc.h b/tools/logger/misc.h index ec516591b3c1..d1a1b5bdf92d 100644 --- a/tools/logger/misc.h +++ b/tools/logger/misc.h @@ -9,8 +9,15 @@ #include char *vasprintf(const char *format, va_list args); + +#ifdef __GNUC__ +__attribute__((format(printf, 1, 2))) +#endif char *asprintf(const char *format, ...); +#ifdef __GNUC__ +__attribute__((format(printf, 1, 2))) +#endif void log_err(const char *fmt, ...); /* trim whitespaces from string begin */ From cae89f988b3b5b0d59511a31ae99668699234ab3 Mon Sep 17 00:00:00 2001 From: Marc Herbert Date: Fri, 11 Sep 2020 03:27:25 +0000 Subject: [PATCH 2/2] logger: add error message when reading sof/etrace instead of sof/trace Failing silently is not nice. Now prints instead: TIMESTAMP DELTA C# COMPONENT LOCATION CONTENT error: in logger_read(), fread(..., /sys/kernel/debug/sof/etrace) \ failed: Invalid argument(22) Also make logger_read() and the process return [-]errno which can have different values and some information instead of -ferror() which has only one value (non-zero in theory, 1 in practice) hence no information. Signed-off-by: Marc Herbert --- tools/logger/convert.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/logger/convert.c b/tools/logger/convert.c index 861cd42cafd2..22ad5439ce71 100644 --- a/tools/logger/convert.c +++ b/tools/logger/convert.c @@ -630,8 +630,10 @@ static int logger_read(void) freopen(NULL, "r", global_config->in_fd); continue; } - - return -ferror(global_config->in_fd); + log_err("in %s(), fread(..., %s) failed: %s(%d)\n", + __func__, global_config->in_file, + strerror(errno), errno); + return -errno; } /* checking if received trace address is located in