diff options
| author | Harald Welte <laforge@gnumonks.org> | 2018-06-29 20:23:29 +0200 | 
|---|---|---|
| committer | Harald Welte <laforge@gnumonks.org> | 2018-06-29 20:32:57 +0200 | 
| commit | bc568d0b9f216f8d3c26b888131f4a9a7e9d368d (patch) | |
| tree | 6ca453945a057bef7c861cfafdd319487a20ac99 | |
| parent | 459a180877d410d491d7adb1fdf9cc12fd51ac99 (diff) | |
osmo_panic(): Annotate as __attribute__ ((noreturn))
In Change-Id I5a70eb65952cbc329bf96eacb428b07a9da32433 we redirected
all OSMO_ASSERT() via osmo_panic().  However, this caused various
applications to have build failures, as OSMO_ASSERT() now appeared
to be able to return to the call site.  Let's inform the compiler
explicitly that there's no return from osmo_panic().
Change-Id: I8adf4c7b0ee6a4581cef8dd4e9f6a1dfde70ee55
| -rw-r--r-- | include/osmocom/core/panic.h | 2 | ||||
| -rw-r--r-- | src/panic.c | 9 | 
2 files changed, 9 insertions, 2 deletions
diff --git a/include/osmocom/core/panic.h b/include/osmocom/core/panic.h index 2bb4240b..c4006dc3 100644 --- a/include/osmocom/core/panic.h +++ b/include/osmocom/core/panic.h @@ -9,7 +9,7 @@  /*! panic handler callback function type */  typedef void (*osmo_panic_handler_t)(const char *fmt, va_list args); -extern void osmo_panic(const char *fmt, ...); +extern void osmo_panic(const char *fmt, ...) __attribute__ ((noreturn));  extern void osmo_set_panic_handler(osmo_panic_handler_t h);  /*! @} */ diff --git a/src/panic.c b/src/panic.c index a08f89fa..072f458b 100644 --- a/src/panic.c +++ b/src/panic.c @@ -27,6 +27,7 @@   *  @{   * \file panic.c */ +#include <unistd.h>  #include <osmocom/core/panic.h>  #include <osmocom/core/backtrace.h> @@ -83,8 +84,14 @@ void osmo_panic(const char *fmt, ...)  		osmo_panic_default(fmt, args);  	va_end(args); + +	/* not reached, but make compiler believe we really never return */ +#ifndef PANIC_INFLOOP +	exit(2342); +#else +	while (1) ; +#endif  } -   /*! Set the panic handler   *  \param[in] h New panic handler function  | 
