Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Blake <eblake@redhat.com>2007-06-27 16:44:41 +0400
committerEric Blake <eblake@redhat.com>2007-06-27 16:44:41 +0400
commit3473e6bd7b268deb4314659009512d846a75b368 (patch)
tree6ad0d0da98788ea8cab097e3ff0f908233da5161 /newlib/libc/stdlib
parent26e8e4befff225f93ed71f0f3182647cea975ecc (diff)
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')
-rw-r--r--newlib/libc/stdlib/assert.c32
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 */
+}