diff options
author | Eric Blake <eblake@redhat.com> | 2007-06-27 12:44:41 +0000 |
---|---|---|
committer | Eric Blake <eblake@redhat.com> | 2007-06-27 12:44:41 +0000 |
commit | 3473e6bd7b268deb4314659009512d846a75b368 (patch) | |
tree | 6ad0d0da98788ea8cab097e3ff0f908233da5161 /newlib/libc/stdlib/assert.c | |
parent | 26e8e4befff225f93ed71f0f3182647cea975ecc (diff) | |
download | cygnal-3473e6bd7b268deb4314659009512d846a75b368.tar.gz cygnal-3473e6bd7b268deb4314659009512d846a75b368.tar.bz2 cygnal-3473e6bd7b268deb4314659009512d846a75b368.zip |
Support __func__ in assert, as required by C99.
* libc/stdlib/assert.c (__assert_func): New function.
(__assert): Use __assert_func.
* libc/include/assert.h (assert) [!NDEBUG]: Use __assert_func when
possible.
Diffstat (limited to 'newlib/libc/stdlib/assert.c')
-rw-r--r-- | newlib/libc/stdlib/assert.c | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/newlib/libc/stdlib/assert.c b/newlib/libc/stdlib/assert.c index c9887da5c..2da329815 100644 --- a/newlib/libc/stdlib/assert.c +++ b/newlib/libc/stdlib/assert.c @@ -9,11 +9,6 @@ ANSI_SYNOPSIS #include <assert.h> void assert(int <[expression]>); -TRAD_SYNOPSIS - #include <assert.h> - assert(<[expression]>) - int <[expression]>; - DESCRIPTION Use this macro to embed debuggging diagnostic statements in your programs. The argument <[expression]> should be an @@ -24,7 +19,11 @@ DESCRIPTION calls <<abort>>, after first printing a message showing what failed and where: -. Assertion failed: <[expression]>, file <[filename]>, line <[lineno]> +. Assertion failed: <[expression]>, file <[filename]>, line <[lineno]>, function: <[func]> + + If the name of the current function is not known (for example, + when using a C89 compiler that does not understand __func__), + the function location is omitted. The macro is defined to permit you to turn off all uses of <<assert>> at compile time by defining <<NDEBUG>> as a @@ -48,15 +47,28 @@ Supporting OS subroutines required (only if enabled): <<close>>, <<fstat>>, #include <stdlib.h> #include <stdio.h> +/* func can be NULL, in which case no function information is given. */ void -_DEFUN (__assert, (file, line, failedexpr), +_DEFUN (__assert_func, (file, line, func, failedexpr), const char *file _AND int line _AND + const char *func _AND const char *failedexpr) { - (void)fiprintf(stderr, - "assertion \"%s\" failed: file \"%s\", line %d\n", - failedexpr, file, line); + fiprintf(stderr, + "assertion \"%s\" failed: file \"%s\", line %d%s%s\n", + failedexpr, file, line, + func ? ", function: " : "", func ? func : ""); abort(); /* NOTREACHED */ } + +void +_DEFUN (__assert, (file, line, failedexpr), + const char *file _AND + int line _AND + const char *failedexpr) +{ + __assert_func (file, line, NULL, failedexpr); + /* NOTREACHED */ +} |