diff options
| author | Michael Brown | 2006-09-27 13:09:56 +0200 |
|---|---|---|
| committer | Michael Brown | 2006-09-27 13:09:56 +0200 |
| commit | b16de6ae6670dfd7ef479d4dd76ab75706abc54e (patch) | |
| tree | b1abeeec4f8935abb3f510cd45395cd86513d79c /src | |
| parent | We don't actually have a stdio.h header file. Our printf() functions are (diff) | |
| download | ipxe-b16de6ae6670dfd7ef479d4dd76ab75706abc54e.tar.gz ipxe-b16de6ae6670dfd7ef479d4dd76ab75706abc54e.tar.xz ipxe-b16de6ae6670dfd7ef479d4dd76ab75706abc54e.zip | |
Inhibit compiler warnings on DBG() when building a non-debug object,
while retaining the format string checking.
Diffstat (limited to 'src')
| -rw-r--r-- | src/include/compiler.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/include/compiler.h b/src/include/compiler.h index 3aee4a603..f4ea32eec 100644 --- a/src/include/compiler.h +++ b/src/include/compiler.h @@ -123,9 +123,19 @@ __asm__ ( ".equ\t" OBJECT_SYMBOL_STR ", 0" ); __asm__ ( ".equ\tDEBUG_LEVEL, " DEBUG_SYMBOL_STR ); #endif +/** Do not print + * + * This function is used only for printf()-style format string + * checking. The function body does not exist, and no reference to it + * should ever appear in any compiled object. + */ +extern int __attribute__ (( format ( printf, 1, 2 ) )) +__do_not_printf ( const char *fmt, ... ); + #define DBG_PRINT(...) printf ( __VA_ARGS__ ) -#define DBG_DISCARD(...) do { if ( 0 ) printf ( __VA_ARGS__ ); } while ( 0 ) -/*#define DBG_DISCARD(...) do {} while ( 0 )*/ +#define DBG_DISCARD(...) do { \ + if ( 0 ) __do_not_printf ( __VA_ARGS__ ); \ + } while ( 0 ) #define DBG DBG_DISCARD #define DBG2 DBG_DISCARD |
