]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - include/assert.h
stdio: Remove __libc_message alloca usage
[thirdparty/glibc.git] / include / assert.h
index 30afabf94de7c94ef5d168302718c47cd02b3bbb..c812808f9b7679645785be9e6b5322d63642b36c 100644 (file)
@@ -1,10 +1,33 @@
 #include <assert/assert.h>
 
-extern void __assert_fail_internal (__const char *__assertion,
-                                   __const char *__file,
-                                   unsigned int __line,
-                                   __const char *__function)
-     __attribute__ ((__noreturn__)) attribute_hidden;
-#if defined SHARED && !defined NOT_IN_libc
-# define __assert_fail __assert_fail_internal
+#ifndef _ISOMAC
+/* This prints an "Assertion failed" message and aborts.
+   In installed assert.h this is only conditionally declared,
+   so it has to be repeated here.  */
+extern void __assert_fail (const char *__assertion, const char *__file,
+                          unsigned int __line, const char *__function)
+     __THROW __attribute__ ((__noreturn__));
+
+/* Likewise, but prints the error text for ERRNUM.  */
+extern void __assert_perror_fail (int __errnum, const char *__file,
+                                 unsigned int __line,
+                                 const char *__function)
+     __THROW __attribute__ ((__noreturn__));
+
+/* The real implementation of the two functions above.  */
+extern void __assert_fail_base (const char *fmt, const char *assertion,
+                               const char *file, unsigned int line,
+                               const char *function)
+     __THROW  __attribute__ ((__noreturn__)) attribute_hidden;
+
+rtld_hidden_proto (__assert_fail)
+rtld_hidden_proto (__assert_perror_fail)
+libc_hidden_proto (__assert_perror_fail)
+
+
+# if IS_IN (libc)
+/* Redirect to the internal version which does not use stderr.  */
+extern _Noreturn __typeof (__assert_fail) __libc_assert_fail attribute_hidden;
+#  define __assert_fail __libc_assert_fail
+# endif
 #endif