diff options
Diffstat (limited to 'src/include/assert.h')
-rw-r--r-- | src/include/assert.h | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/include/assert.h b/src/include/assert.h index afbed03318..6036635273 100644 --- a/src/include/assert.h +++ b/src/include/assert.h @@ -43,18 +43,22 @@ * will generate a compiler error even if the scope it was called from is dead * code. This may be useful to double-check things like constants that are only * valid if a certain Kconfig option is set. + * + * The error message when this hits will look like this: + * + * ramstage/lib/bootmode.o: In function `display_init_required': + * bootmode.c:42: undefined reference to `dead_code_assertion_failed_at_line_42' */ -#define __dead_code(message, line) do { \ - __attribute__((error(#message " in " __FILE__ ":" #line))) \ - extern void dead_code_assertion_failed_##line(void); \ - dead_code_assertion_failed_##line(); \ +#define __dead_code(line) do { \ + extern void dead_code_assertion_failed_at_line_##line(void); \ + dead_code_assertion_failed_at_line_##line(); \ } while (0) -#define _dead_code(message, line) __dead_code(message, line) -#define dead_code(message) _dead_code(message, __LINE__) +#define _dead_code(line) __dead_code(line) +#define dead_code() _dead_code(__LINE__) /* This can be used in the context of an expression of type 'type'. */ -#define dead_code_t(type, message) ({ \ - dead_code(message); \ +#define dead_code_t(type) ({ \ + dead_code(); \ *(type *)(uintptr_t)0; \ }) |