newlib: libbarrelfish: properly hook up assert functionality.
authorSimon Gerber <simon.gerber@hp.com>
Tue, 8 Jul 2014 23:59:03 +0000 (16:59 -0700)
committerSimon Gerber <simon.gerber@inf.ethz.ch>
Mon, 4 May 2015 09:28:12 +0000 (11:28 +0200)
Signed-off-by: Simon Gerber <simon.gerber@hp.com>

lib/newlib/newlib/libc/stdlib/assert.c
lib/newlib/newlib/libc/sys/barrelfish/syscalls.c

index 135bf15..575141e 100644 (file)
@@ -48,6 +48,10 @@ Supporting OS subroutines required (only if enabled): <<close>>, <<fstat>>,
 #include <stdio.h>
 
 #ifndef HAVE_ASSERT_FUNC
+
+// BF magic
+void (*_libc_assert_func)(const char *, const char *, const char *, int) = NULL;
+
 /* func can be NULL, in which case no function information is given.  */
 void
 _DEFUN (__assert_func, (file, line, func, failedexpr),
@@ -56,10 +60,14 @@ _DEFUN (__assert_func, (file, line, func, failedexpr),
        const char *func _AND
        const char *failedexpr)
 {
-  fiprintf(stderr,
-          "assertion \"%s\" failed: file \"%s\", line %d%s%s\n",
-          failedexpr, file, line,
-          func ? ", function: " : "", func ? func : "");
+  if (_libc_assert_func) {
+    _libc_assert_func(failedexpr, file, func, line);
+  } else {
+    fiprintf(stderr,
+       "assertion \"%s\" failed: file \"%s\", line %d%s%s\n",
+       failedexpr, file, line,
+       func ? ", function: " : "", func ? func : "");
+  }
   abort();
   /* NOTREACHED */
 }
index 980b7c7..36ba732 100644 (file)
@@ -8,8 +8,6 @@
 size_t (*_libc_terminal_read_func)(char *, size_t);
 size_t (*_libc_terminal_write_func)(const char *, size_t);
 
-void (*_libc_assert_func)(const char *, const char *, const char *, int);
-
 typedef void *(*morecore_alloc_func_t)(size_t bytes, size_t *retbytes);
 morecore_alloc_func_t sys_morecore_alloc;