From 34e7b67d3c5882ac2078a87bbeb2ab5d09e6717a Mon Sep 17 00:00:00 2001 From: mux Date: Sat, 14 Jun 2014 14:41:11 +0200 Subject: [PATCH 1/3] Add __assert_func * issue #692 --- stmhal/main.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/stmhal/main.c b/stmhal/main.c index 41ebaf3bb5..3434f3ea58 100644 --- a/stmhal/main.c +++ b/stmhal/main.c @@ -115,6 +115,12 @@ void nlr_jump_fail(void *val) { __fatal_error(""); } +void __assert_func(const char *file, int line, const char *func, const char *expr) { + (void)func; + printf("Assertion '%s' failed, at file %s:%d\n", expr, file, line); + __fatal_error(""); +} + STATIC mp_obj_t pyb_config_source_dir = MP_OBJ_NULL; STATIC mp_obj_t pyb_config_main = MP_OBJ_NULL; STATIC mp_obj_t pyb_config_usb_mode = MP_OBJ_NULL; From 00db5c81e1de9f3f566554410ef0a0881c012adb Mon Sep 17 00:00:00 2001 From: mux Date: Sat, 14 Jun 2014 15:53:11 +0200 Subject: [PATCH 2/3] Add __assert_func only if DEBUG=1 --- stmhal/main.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stmhal/main.c b/stmhal/main.c index 3434f3ea58..ec6d6bcd23 100644 --- a/stmhal/main.c +++ b/stmhal/main.c @@ -115,11 +115,13 @@ void nlr_jump_fail(void *val) { __fatal_error(""); } +#ifndef NDEBUG void __assert_func(const char *file, int line, const char *func, const char *expr) { (void)func; printf("Assertion '%s' failed, at file %s:%d\n", expr, file, line); __fatal_error(""); } +#endif STATIC mp_obj_t pyb_config_source_dir = MP_OBJ_NULL; STATIC mp_obj_t pyb_config_main = MP_OBJ_NULL; From 5f6f47a688cc10116c805c657b78dc64e805ab0b Mon Sep 17 00:00:00 2001 From: mux Date: Sat, 14 Jun 2014 17:02:50 +0200 Subject: [PATCH 3/3] Make __assert_func weak --- stmhal/main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stmhal/main.c b/stmhal/main.c index ec6d6bcd23..dbf3ced681 100644 --- a/stmhal/main.c +++ b/stmhal/main.c @@ -116,7 +116,8 @@ void nlr_jump_fail(void *val) { } #ifndef NDEBUG -void __assert_func(const char *file, int line, const char *func, const char *expr) { +void __attribute__((weak)) + __assert_func(const char *file, int line, const char *func, const char *expr) { (void)func; printf("Assertion '%s' failed, at file %s:%d\n", expr, file, line); __fatal_error("");