]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[libc] Allow assertion failures to be counted
authorMichael Brown <mcb30@ipxe.org>
Fri, 14 Oct 2011 12:32:36 +0000 (13:32 +0100)
committerMichael Brown <mcb30@ipxe.org>
Fri, 14 Oct 2011 13:33:31 +0000 (14:33 +0100)
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/core/assert.c [new file with mode: 0644]
src/include/assert.h

diff --git a/src/core/assert.c b/src/core/assert.c
new file mode 100644 (file)
index 0000000..45d3b9b
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2011 Michael Brown <mbrown@fensystems.co.uk>.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER );
+
+/** @file
+ *
+ * Assertions
+ *
+ */
+
+#include <assert.h>
+
+/** Number of assertion failures triggered */
+unsigned int assertion_failures = 0;
index 40a00a2b1008c1d88b7bf38a099a561cc1a57b51..655cbdc03e14aa7eee12a41f2041b015d79903d1 100644 (file)
@@ -18,6 +18,8 @@ FILE_LICENCE ( GPL2_OR_LATER );
 #define ASSERTING 1
 #endif
 
+extern unsigned int assertion_failures;
+
 /** printf() for assertions
  *
  * This function exists so that the assert() macro can expand to
@@ -43,6 +45,7 @@ assert_printf ( const char *fmt, ... ) asm ( "printf" );
 #define assert( condition )                                                 \
        do {                                                                 \
                if ( ASSERTING && ! (condition) ) {                          \
+                       assertion_failures++;                                \
                        assert_printf ( "assert(%s) failed at %s line %d\n", \
                                        #condition, __FILE__, __LINE__ );    \
                }                                                            \