Add conditional support for noreturn functions.

This adds support for tagging functions with the noreturn attribute.
If DO_CRASH is enabled then ast_do_crash never returns.  If AST_DEVMODE
and DO_CRASH are enabled then failed assertions never return.  This can
resolve a large number of false positives with static analyzers.

ASTERISK-26220 #close

Change-Id: Icfb61e5fe54574eced4c3e88b317244f467ec753
This commit is contained in:
Corey Farrell
2016-07-18 23:46:19 -04:00
parent 5f24874ebb
commit 7fdf7c3d4c
6 changed files with 92 additions and 9 deletions

View File

@@ -77,6 +77,12 @@
#define attribute_may_alias
#endif
#ifdef HAVE_ATTRIBUTE_noreturn
#define attribute_noreturn __attribute__((noreturn))
#else
#define attribute_noreturn
#endif
/* Some older version of GNU gcc (3.3.5 on OpenBSD 4.3 for example) dont like 'NULL' as sentinel */
#define SENTINEL ((char *)NULL)