X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=common.cc;h=f4aa7ecefa023417c7eec4680e38e1c25a5cc13b;hb=14e14603f64fe9004606ca82668adf7ef002d90e;hp=ac5cb59601ba7a6025ac1d8d5f24f62fef0666b7;hpb=0170878f8a8be6aa06af6591e50fffdb2ce54022;p=cdsspec-compiler.git diff --git a/common.cc b/common.cc index ac5cb59..f4aa7ec 100644 --- a/common.cc +++ b/common.cc @@ -2,14 +2,21 @@ #include #include +#include + #include "common.h" #include "model.h" +#include "stacktrace.h" #define MAX_TRACE_LEN 100 +#define CONFIG_STACKTRACE /** Print a backtrace of the current program state. */ void print_trace(void) { +#ifdef CONFIG_STACKTRACE + print_stacktrace(stdout); +#else void *array[MAX_TRACE_LEN]; char **strings; int size, i; @@ -23,9 +30,25 @@ void print_trace(void) printf("\t%s\n", strings[i]); free(strings); +#endif /* CONFIG_STACKTRACE */ } void model_print_summary(void) { model->print_summary(); } + +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(); + model->switch_to_master(NULL); + } +}