From 5c8db4854109100790977b4d84296e5eb29ffe9e Mon Sep 17 00:00:00 2001 From: mux Date: Sat, 21 Jun 2014 17:24:55 +0200 Subject: [PATCH 1/2] Fix asser_func warning/error * Add while(1) to assert_func to avoid func returns warning * Define a weak attr in mpconfig.h --- py/mpconfig.h | 5 +++++ stmhal/main.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/py/mpconfig.h b/py/mpconfig.h index 4a3288a3d..0aefd1b35 100644 --- a/py/mpconfig.h +++ b/py/mpconfig.h @@ -381,3 +381,8 @@ typedef double mp_float_t; #ifndef NORETURN #define NORETURN __attribute__((noreturn)) #endif + +// Modifier for weak functions +#ifndef MP_WEAK +#define MP_WEAK __attribute__((weak)) +#endif diff --git a/stmhal/main.c b/stmhal/main.c index e264fdf4b..b74fa7318 100644 --- a/stmhal/main.c +++ b/stmhal/main.c @@ -111,11 +111,11 @@ void nlr_jump_fail(void *val) { } #ifndef NDEBUG -void __attribute__((weak)) - __assert_func(const char *file, int line, const char *func, const char *expr) { +void MP_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(""); + while (1); } #endif From 89b38d96c9e1dc45d6648268db28aec6e4d1fd8e Mon Sep 17 00:00:00 2001 From: mux Date: Sat, 21 Jun 2014 18:43:44 +0200 Subject: [PATCH 2/2] Add NORETURN to __fatal_error --- stmhal/main.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/stmhal/main.c b/stmhal/main.c index b74fa7318..7e3c5a7c6 100644 --- a/stmhal/main.c +++ b/stmhal/main.c @@ -85,7 +85,7 @@ void flash_error(int n) { led_state(PYB_LED_R2, 0); } -void __fatal_error(const char *msg) { +void NORETURN __fatal_error(const char *msg) { for (volatile uint delay = 0; delay < 10000000; delay++) { } led_state(1, 1); @@ -115,7 +115,6 @@ void MP_WEAK __assert_func(const char *file, int line, const char *func, const c (void)func; printf("Assertion '%s' failed, at file %s:%d\n", expr, file, line); __fatal_error(""); - while (1); } #endif