expand support for noreturn declarations

Although gcc specifies support for declaring a function as
noreturn after the function name and parameters, other compilers
do so via an attribute at the start of the declaration. Add some
macro support for the attribute-at-the-beginning method:
  o MS Visual Studio compiler
  o Upcoming C23 standard (untested at this point)
This commit is contained in:
nhmall
2022-11-24 00:51:42 -05:00
parent ddf1dfde29
commit 4b04b1e6ac
13 changed files with 173 additions and 19 deletions

View File

@@ -9,14 +9,14 @@
int debuggable = 0; /* 1 if we can debug or show a call trace */
void vms_exit(int);
void vms_abort(void);
ATTRNORETURN void vms_exit(int);
ATTRNORETURN void vms_abort(void);
/* first arg should be unsigned long but <lib$routines.h> has unsigned int */
extern void VDECL(lib$signal, (unsigned, ...));
/* terminate, converting Unix-style exit code into VMS status code */
void
ATTRNORETURN void
vms_exit(int status)
{
/* convert non-zero to failure, zero to success */
@@ -25,7 +25,7 @@ vms_exit(int status)
}
/* put the user into the debugger; used for abort() when in wizard mode */
void
ATTRNORETURN void
vms_abort(void)
{
if (debuggable)