[Pdbg] [PATCH] debug: Add printf attribute to logging function
Alistair Popple
alistair at popple.id.au
Fri Jun 1 13:29:53 AEST 2018
Thanks Joel, it seems I get the following warnings/errors after applying this:
In file included from libpdbg/operations.h:21:0,
from libpdbg/cfam.c:24:
libpdbg/cfam.c: In function ‘opb_poll’:
libpdbg/debug.h:32:23: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘uint64_t {aka long unsigned int}’ [-Werror=format=]
pdbg_log(PDBG_DEBUG, "%s[%d]: " x, __FUNCTION__, __LINE__, ##args)
^
libpdbg/cfam.c:146:3: note: in expansion of macro ‘PR_DEBUG’
PR_DEBUG(" STAT=0x%16llx...\n", sval);
^~~~~~~~
libpdbg/cfam.c: In function ‘p8_opb_read’:
libpdbg/debug.h:32:23: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘uint64_t {aka long unsigned int}’ [-Werror=format=]
pdbg_log(PDBG_DEBUG, "%s[%d]: " x, __FUNCTION__, __LINE__, ##args)
^
libpdbg/cfam.c:196:2: note: in expansion of macro ‘PR_DEBUG’
PR_DEBUG("MFSI_OPB_READ: Writing 0x%16llx\n", opb_cmd);
^~~~~~~~
libpdbg/cfam.c: In function ‘p8_opb_write’:
libpdbg/debug.h:32:23: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘uint64_t {aka long unsigned int}’ [-Werror=format=]
pdbg_log(PDBG_DEBUG, "%s[%d]: " x, __FUNCTION__, __LINE__, ##args)
^
libpdbg/cfam.c:219:2: note: in expansion of macro ‘PR_DEBUG’
PR_DEBUG("MFSI_OPB_WRITE: Writing 0x%16llx\n", opb_cmd);
^~~~~~~~
cc1: all warnings being treated as errors
But I have taken this patch and will roll the fixes for the above into it.
- Alistair
On Friday, 25 May 2018 12:45:31 PM AEST Joel Stanley wrote:
> This allows the compiler to warn about mismatched types in printf
> arguments.
>
> Without this we don't get warnings from the logging macros when format
> specifiers and arguments don't match up, and instead you get segfaults.
>
> Signed-off-by: Joel Stanley <joel at jms.id.au>
> ---
> libpdbg/debug.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/libpdbg/debug.h b/libpdbg/debug.h
> index c318e3a566e6..5fc027a64ead 100644
> --- a/libpdbg/debug.h
> +++ b/libpdbg/debug.h
> @@ -18,6 +18,8 @@
>
> #include "libpdbg.h"
>
> +void pdbg_log(int log_level, const char* fmt, ...) __attribute__((format (printf, 2, 3)));
> +
> #define PR_ERROR(x, args...) \
> pdbg_log(PDBG_ERROR, x, ##args)
> #define PR_WARNING(x, args...) \
>
More information about the Pdbg
mailing list