From 3d11a1c3f7543139e9fa5a450e7a57b73f030caf Mon Sep 17 00:00:00 2001
From: Brian Norris <banorris@uci.edu>
Date: Sat, 3 Nov 2012 15:52:16 -0700
Subject: [PATCH] model-assert: add MODEL_ASSERT() for user programs

---
 common.cc              | 11 +++++++++++
 include/model-assert.h | 15 +++++++++++++++
 2 files changed, 26 insertions(+)
 create mode 100644 include/model-assert.h

diff --git a/common.cc b/common.cc
index b274989..20102b0 100644
--- a/common.cc
+++ b/common.cc
@@ -2,6 +2,8 @@
 #include <stdio.h>
 #include <stdlib.h>
 
+#include <model-assert.h>
+
 #include "common.h"
 #include "model.h"
 #include "stacktrace.h"
@@ -40,3 +42,12 @@ void assert_hook(void)
 {
 	printf("Add breakpoint to line %u in file %s.\n",__LINE__,__FILE__);
 }
+
+void model_assert(bool expr, const char *file, int line)
+{
+	if (!expr) {
+		printf("  [BUG] Program has hit assertion in file %s at line %d\n",
+				file, line);
+		model->set_assert();
+	}
+}
diff --git a/include/model-assert.h b/include/model-assert.h
new file mode 100644
index 0000000..a091e15
--- /dev/null
+++ b/include/model-assert.h
@@ -0,0 +1,15 @@
+#ifndef __MODEL_ASSERT_H__
+#define __MODEL_ASSERT_H__
+
+#if __cplusplus
+extern "C" {
+#endif
+
+void model_assert(bool expr, const char *file, int line);
+#define MODEL_ASSERT(expr) model_assert((expr), __FILE__, __LINE__)
+
+#if __cplusplus
+}
+#endif
+
+#endif /* __MODEL_ASSERT_H__ */
-- 
2.34.1