aboutsummaryrefslogtreecommitdiff
path: root/system/include/libc/assert.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2011-09-24 18:41:07 -0700
committerAlon Zakai <alonzakai@gmail.com>2011-09-24 18:41:07 -0700
commitf2a8bdc4c3bd88cb6a9ff85c4f2c43e9b9f77b97 (patch)
tree172b11e658bf266a001050bf90a029c36ac97bd2 /system/include/libc/assert.h
parent1c8b4752414132e27abc608dda7db8dc0268f73a (diff)
reorganize system/include
Diffstat (limited to 'system/include/libc/assert.h')
-rw-r--r--system/include/libc/assert.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/system/include/libc/assert.h b/system/include/libc/assert.h
new file mode 100644
index 00000000..e542b214
--- /dev/null
+++ b/system/include/libc/assert.h
@@ -0,0 +1,46 @@
+/*
+ assert.h
+*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "_ansi.h"
+
+#undef assert
+
+#ifdef NDEBUG /* required by ANSI standard */
+# define assert(__e) ((void)0)
+#else
+# define assert(__e) ((__e) ? (void)0 : __assert_func (__FILE__, __LINE__, \
+ __ASSERT_FUNC, #__e))
+
+# ifndef __ASSERT_FUNC
+ /* Use g++'s demangled names in C++. */
+# if defined __cplusplus && defined __GNUC__
+# define __ASSERT_FUNC __PRETTY_FUNCTION__
+
+ /* C99 requires the use of __func__. */
+# elif __STDC_VERSION__ >= 199901L
+# define __ASSERT_FUNC __func__
+
+ /* Older versions of gcc don't have __func__ but can use __FUNCTION__. */
+# elif __GNUC__ >= 2
+# define __ASSERT_FUNC __FUNCTION__
+
+ /* failed to detect __func__ support. */
+# else
+# define __ASSERT_FUNC ((char *) 0)
+# endif
+# endif /* !__ASSERT_FUNC */
+#endif /* !NDEBUG */
+
+void _EXFUN(__assert, (const char *, int, const char *)
+ _ATTRIBUTE ((__noreturn__)));
+void _EXFUN(__assert_func, (const char *, int, const char *, const char *)
+ _ATTRIBUTE ((__noreturn__)));
+
+#ifdef __cplusplus
+}
+#endif