aboutsummaryrefslogtreecommitdiff
path: root/bcheck.c
diff options
context:
space:
mode:
Diffstat (limited to 'bcheck.c')
-rw-r--r--bcheck.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/bcheck.c b/bcheck.c
index 01e98ff..1f08f20 100644
--- a/bcheck.c
+++ b/bcheck.c
@@ -95,10 +95,14 @@ static void *saved_realloc_hook;
static void *saved_memalign_hook;
#endif
+/* linker definitions */
extern char _end;
-/* TCC defines: */
+/* TCC definitions */
extern char __bounds_start; /* start of static bounds table */
+/* error function. if NULL, simply do abort() */
+void (*__bound_error_func)(unsigned long caller, const char *msg);
+
/* runtime error output */
extern void rt_error(unsigned long pc, const char *fmt, ...);
@@ -141,7 +145,9 @@ static BoundEntry *__bound_find_region(BoundEntry *e1, void *p)
/* print a bound error message */
static void bound_error(const void *caller, const char *fmt, ...)
{
- rt_error((unsigned long)caller, "%s", fmt);
+ if (!__bound_error_func)
+ abort();
+ __bound_error_func((unsigned long)caller, fmt);
}
static void bound_alloc_error(void)