diff --git a/bin/check/named-checkconf.c b/bin/check/named-checkconf.c index 06fd59cb8d..204bd1fffc 100644 --- a/bin/check/named-checkconf.c +++ b/bin/check/named-checkconf.c @@ -58,7 +58,7 @@ isc_log_t *logc = NULL; } while (0) /*% usage */ -ISC_NORETURN static void +noreturn static void usage(void); static void diff --git a/bin/check/named-checkzone.c b/bin/check/named-checkzone.c index ffee5bcd77..4814323f0b 100644 --- a/bin/check/named-checkzone.c +++ b/bin/check/named-checkzone.c @@ -65,7 +65,7 @@ static enum { progmode_check, progmode_compile } progmode; } \ } while (0) -ISC_NORETURN static void +noreturn static void usage(void); static void diff --git a/bin/confgen/rndc-confgen.c b/bin/confgen/rndc-confgen.c index 2cea509bef..e0786be782 100644 --- a/bin/confgen/rndc-confgen.c +++ b/bin/confgen/rndc-confgen.c @@ -61,7 +61,7 @@ bool verbose = false; const char *keyfile, *keydef; -ISC_NORETURN static void +noreturn static void usage(int status); static void diff --git a/bin/confgen/tsig-keygen.c b/bin/confgen/tsig-keygen.c index b34d099faa..dd39ad8726 100644 --- a/bin/confgen/tsig-keygen.c +++ b/bin/confgen/tsig-keygen.c @@ -54,7 +54,7 @@ const char *progname; static enum { progmode_keygen, progmode_confgen } progmode; bool verbose = false; /* needed by util.c but not used here */ -ISC_NORETURN static void +noreturn static void usage(int status); static void diff --git a/bin/confgen/util.h b/bin/confgen/util.h index 0567ad33b1..4ac83e5143 100644 --- a/bin/confgen/util.h +++ b/bin/confgen/util.h @@ -36,7 +36,7 @@ ISC_LANG_BEGINDECLS void notify(const char *fmt, ...) ISC_FORMAT_PRINTF(1, 2); -ISC_NORETURN void +noreturn void fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2); ISC_LANG_ENDDECLS diff --git a/bin/delv/delv.c b/bin/delv/delv.c index 360b983979..486370e64d 100644 --- a/bin/delv/delv.c +++ b/bin/delv/delv.c @@ -208,7 +208,7 @@ usage(void) { exit(1); } -ISC_NORETURN static void +noreturn static void fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2); static void diff --git a/bin/dig/dig.c b/bin/dig/dig.c index 7a7c648d8e..6ad7f29da3 100644 --- a/bin/dig/dig.c +++ b/bin/dig/dig.c @@ -113,7 +113,7 @@ usage(void) { fprintf(stderr, "Press for complete list of options\n"); } #else /* if TARGET_OS_IPHONE */ -ISC_NORETURN static void +noreturn static void usage(void); static void diff --git a/bin/dig/dighost.h b/bin/dig/dighost.h index e38e319f53..afefed40c2 100644 --- a/bin/dig/dighost.h +++ b/bin/dig/dighost.h @@ -276,13 +276,13 @@ getaddresses(dig_lookup_t *lookup, const char *host, isc_result_t *resultp); isc_result_t get_reverse(char *reverse, size_t len, char *value, bool strict); -ISC_NORETURN void +noreturn void fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2); void warn(const char *format, ...) ISC_FORMAT_PRINTF(1, 2); -ISC_NORETURN void +noreturn void digexit(void); void diff --git a/bin/dig/host.c b/bin/dig/host.c index f0617833d8..1a42a87386 100644 --- a/bin/dig/host.c +++ b/bin/dig/host.c @@ -101,7 +101,7 @@ rcode_totext(dns_rcode_t rcode) { return (totext.deconsttext); } -ISC_NORETURN static void +noreturn static void show_usage(void); static void diff --git a/bin/dig/nslookup.c b/bin/dig/nslookup.c index 742bb7851a..92bc2c2fa9 100644 --- a/bin/dig/nslookup.c +++ b/bin/dig/nslookup.c @@ -849,7 +849,7 @@ get_next_command(void) { } } -ISC_NORETURN static void +noreturn static void usage(void); static void diff --git a/bin/dnssec/dnssec-cds.c b/bin/dnssec/dnssec-cds.c index ceee2db297..42750d26f0 100644 --- a/bin/dnssec/dnssec-cds.c +++ b/bin/dnssec/dnssec-cds.c @@ -1015,7 +1015,7 @@ nsdiff(uint32_t ttl, dns_rdataset_t *oldset, dns_rdataset_t *newset) { } } -ISC_NORETURN static void +noreturn static void usage(void); static void diff --git a/bin/dnssec/dnssec-dsfromkey.c b/bin/dnssec/dnssec-dsfromkey.c index fa3ef72d72..42aa9e5c7b 100644 --- a/bin/dnssec/dnssec-dsfromkey.c +++ b/bin/dnssec/dnssec-dsfromkey.c @@ -324,7 +324,7 @@ emits(bool showall, bool cds, dns_rdata_t *rdata) { } } -ISC_NORETURN static void +noreturn static void usage(void); static void diff --git a/bin/dnssec/dnssec-importkey.c b/bin/dnssec/dnssec-importkey.c index 6c1d2f22cd..441f7c3f8b 100644 --- a/bin/dnssec/dnssec-importkey.c +++ b/bin/dnssec/dnssec-importkey.c @@ -263,7 +263,7 @@ emit(const char *dir, dns_rdata_t *rdata) { dst_key_free(&key); } -ISC_NORETURN static void +noreturn static void usage(void); static void diff --git a/bin/dnssec/dnssec-keyfromlabel.c b/bin/dnssec/dnssec-keyfromlabel.c index eca8f86b81..4d66f8f22b 100644 --- a/bin/dnssec/dnssec-keyfromlabel.c +++ b/bin/dnssec/dnssec-keyfromlabel.c @@ -44,7 +44,7 @@ const char *program = "dnssec-keyfromlabel"; -ISC_NORETURN static void +noreturn static void usage(void); static void diff --git a/bin/dnssec/dnssec-keygen.c b/bin/dnssec/dnssec-keygen.c index 64ad357923..890b4225ec 100644 --- a/bin/dnssec/dnssec-keygen.c +++ b/bin/dnssec/dnssec-keygen.c @@ -67,7 +67,7 @@ const char *program = "dnssec-keygen"; isc_log_t *lctx = NULL; -ISC_NORETURN static void +noreturn static void usage(void); static void diff --git a/bin/dnssec/dnssec-revoke.c b/bin/dnssec/dnssec-revoke.c index 36ee75c718..adf3de6fff 100644 --- a/bin/dnssec/dnssec-revoke.c +++ b/bin/dnssec/dnssec-revoke.c @@ -39,7 +39,7 @@ const char *program = "dnssec-revoke"; static isc_mem_t *mctx = NULL; -ISC_NORETURN static void +noreturn static void usage(void); static void diff --git a/bin/dnssec/dnssec-settime.c b/bin/dnssec/dnssec-settime.c index 6c78c38966..1a4f20218f 100644 --- a/bin/dnssec/dnssec-settime.c +++ b/bin/dnssec/dnssec-settime.c @@ -43,7 +43,7 @@ const char *program = "dnssec-settime"; static isc_mem_t *mctx = NULL; -ISC_NORETURN static void +noreturn static void usage(void); static void diff --git a/bin/dnssec/dnssec-signzone.c b/bin/dnssec/dnssec-signzone.c index 2cceda3fce..3c1e34a1c8 100644 --- a/bin/dnssec/dnssec-signzone.c +++ b/bin/dnssec/dnssec-signzone.c @@ -3192,7 +3192,7 @@ print_version(FILE *fp) { fprintf(fp, "; %s version %s\n", program, PACKAGE_VERSION); } -ISC_NORETURN static void +noreturn static void usage(void); static void diff --git a/bin/dnssec/dnssec-verify.c b/bin/dnssec/dnssec-verify.c index ac2485775b..870c24c208 100644 --- a/bin/dnssec/dnssec-verify.c +++ b/bin/dnssec/dnssec-verify.c @@ -139,7 +139,7 @@ loadzone(char *file, char *origin, dns_rdataclass_t rdclass, dns_db_t **db) { } } -ISC_NORETURN static void +noreturn static void usage(void); static void diff --git a/bin/dnssec/dnssectool.h b/bin/dnssec/dnssectool.h index 9f9d9750ac..5bc69cd14d 100644 --- a/bin/dnssec/dnssectool.h +++ b/bin/dnssec/dnssectool.h @@ -46,7 +46,7 @@ extern uint8_t dtype[8]; typedef void(fatalcallback_t)(void); -ISC_NORETURN void +noreturn void fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2); void @@ -58,7 +58,7 @@ check_result(isc_result_t result, const char *message); void vbprintf(int level, const char *fmt, ...) ISC_FORMAT_PRINTF(2, 3); -ISC_NORETURN void +noreturn void version(const char *program); void diff --git a/bin/named/include/named/main.h b/bin/named/include/named/main.h index 76546a6071..7d01851b9b 100644 --- a/bin/named/include/named/main.h +++ b/bin/named/include/named/main.h @@ -26,7 +26,7 @@ */ #define NAMED_MAIN_ARGS "46A:c:d:D:E:fFgL:M:m:n:N:p:sS:t:T:U:u:vVx:X:" -ISC_NORETURN void +noreturn void named_main_earlyfatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2); void diff --git a/bin/named/main.c b/bin/named/main.c index bb4c08bb1b..67c16304d9 100644 --- a/bin/named/main.c +++ b/bin/named/main.c @@ -185,7 +185,7 @@ named_main_earlyfatal(const char *format, ...) { exit(1); } -ISC_NORETURN static void +noreturn static void assertion_failed(const char *file, int line, isc_assertiontype_t type, const char *cond); @@ -239,7 +239,7 @@ assertion_failed(const char *file, int line, isc_assertiontype_t type, exit(1); } -ISC_NORETURN static void +noreturn static void library_fatal_error(const char *file, int line, const char *format, va_list args) ISC_FORMAT_PRINTF(3, 0); diff --git a/bin/named/server.c b/bin/named/server.c index 831955fef1..5cc167f3ef 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -397,7 +397,7 @@ const char *empty_zones[] = { NULL }; -ISC_NORETURN static void +noreturn static void fatal(named_server_t *server, const char *msg, isc_result_t result); static void diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c index 7b6b4f8d5b..302cb358a9 100644 --- a/bin/nsupdate/nsupdate.c +++ b/bin/nsupdate/nsupdate.c @@ -187,7 +187,7 @@ sendrequest(isc_sockaddr_t *destaddr, dns_message_t *msg, static void send_update(dns_name_t *zonename, isc_sockaddr_t *primary); -ISC_NORETURN static void +noreturn static void fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2); static void diff --git a/bin/rndc/rndc.c b/bin/rndc/rndc.c index 4c43e39ba0..619dca140b 100644 --- a/bin/rndc/rndc.c +++ b/bin/rndc/rndc.c @@ -96,7 +96,7 @@ static isc_nmhandle_t *recvnonce_handle = NULL; static void rndc_startconnect(isc_sockaddr_t *addr); -ISC_NORETURN static void +noreturn static void usage(int status); static void diff --git a/bin/rndc/util.h b/bin/rndc/util.h index 0567ad33b1..4ac83e5143 100644 --- a/bin/rndc/util.h +++ b/bin/rndc/util.h @@ -36,7 +36,7 @@ ISC_LANG_BEGINDECLS void notify(const char *fmt, ...) ISC_FORMAT_PRINTF(1, 2); -ISC_NORETURN void +noreturn void fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2); ISC_LANG_ENDDECLS diff --git a/bin/tests/system/resolve.c b/bin/tests/system/resolve.c index 25c97423dd..d563d92d8b 100644 --- a/bin/tests/system/resolve.c +++ b/bin/tests/system/resolve.c @@ -127,7 +127,7 @@ printdata(dns_rdataset_t *rdataset, dns_name_t *owner) { return (ISC_R_SUCCESS); } -ISC_NORETURN static void +noreturn static void usage(void); static void diff --git a/bin/tools/dnstap-read.c b/bin/tools/dnstap-read.c index 287d0b806b..dc7ae919ff 100644 --- a/bin/tools/dnstap-read.c +++ b/bin/tools/dnstap-read.c @@ -71,7 +71,7 @@ const char *program = "dnstap-read"; } \ } while (0) -ISC_NORETURN static void +noreturn static void fatal(const char *format, ...); static void diff --git a/bin/tools/mdig.c b/bin/tools/mdig.c index af395826b9..aec588aef4 100644 --- a/bin/tools/mdig.c +++ b/bin/tools/mdig.c @@ -783,7 +783,7 @@ sendqueries(isc_task_t *task, isc_event_t *event) { return; } -ISC_NORETURN static void +noreturn static void usage(void); static void @@ -894,7 +894,7 @@ help(void) { "Server ID)\n"); } -ISC_NORETURN static void +noreturn static void fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2); static void diff --git a/bin/tools/named-rrchecker.c b/bin/tools/named-rrchecker.c index e680597967..2ea0ef48e4 100644 --- a/bin/tools/named-rrchecker.c +++ b/bin/tools/named-rrchecker.c @@ -35,7 +35,7 @@ static isc_lex_t *lex; static isc_lexspecials_t specials; -ISC_NORETURN static void +noreturn static void usage(void); static void @@ -52,7 +52,7 @@ usage(void) { exit(0); } -ISC_NORETURN static void +noreturn static void fatal(const char *format, ...); static void diff --git a/bin/tools/nsec3hash.c b/bin/tools/nsec3hash.c index c9f90d0041..a6a5ec3a71 100644 --- a/bin/tools/nsec3hash.c +++ b/bin/tools/nsec3hash.c @@ -35,7 +35,7 @@ const char *program = "nsec3hash"; -ISC_NORETURN static void +noreturn static void fatal(const char *format, ...); static void diff --git a/configure.ac b/configure.ac index 0139043da1..8ea89295d5 100644 --- a/configure.ac +++ b/configure.ac @@ -1149,7 +1149,7 @@ AC_CHECK_HEADERS( ]) LIBS="$LIBS $ISC_ATOMIC_LIBS" -AC_CHECK_HEADERS([stdalign.h]) +AC_CHECK_HEADERS([stdalign.h stdnoreturn.h]) AC_CHECK_HEADERS([uchar.h]) diff --git a/lib/isc/include/isc/assertions.h b/lib/isc/include/isc/assertions.h index d5dbced853..7eafa16011 100644 --- a/lib/isc/include/isc/assertions.h +++ b/lib/isc/include/isc/assertions.h @@ -33,8 +33,7 @@ typedef void (*isc_assertioncallback_t)(const char *, int, isc_assertiontype_t, const char *); /* coverity[+kill] */ -ISC_NORETURN -void +noreturn void isc_assertion_failed(const char *, int, isc_assertiontype_t, const char *); void isc_assertion_setcallback(isc_assertioncallback_t); diff --git a/lib/isc/include/isc/attributes.h b/lib/isc/include/isc/attributes.h index 7c359d4b71..abe615223e 100644 --- a/lib/isc/include/isc/attributes.h +++ b/lib/isc/include/isc/attributes.h @@ -13,10 +13,12 @@ #pragma once -#if HAVE_FUNC_ATTRIBUTE_NORETURN -#define ISC_NORETURN __attribute__((noreturn)) +#ifdef HAVE_STDNORETURN_H +#include +#elif HAVE_FUNC_ATTRIBUTE_NORETURN +#define noreturn __attribute__((noreturn)) #else -#define ISC_NORETURN +#define noreturn #endif #if HAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL diff --git a/lib/isc/include/isc/error.h b/lib/isc/include/isc/error.h index 37fd181896..ecebab60a2 100644 --- a/lib/isc/include/isc/error.h +++ b/lib/isc/include/isc/error.h @@ -37,11 +37,11 @@ isc_error_unexpected(const char *, int, const char *, ...) ISC_FORMAT_PRINTF(3, 4); /*% fatal error */ -ISC_NORETURN void +noreturn void isc_error_fatal(const char *, int, const char *, ...) ISC_FORMAT_PRINTF(3, 4); /*% runtimecheck error */ -ISC_NORETURN void +noreturn void isc_error_runtimecheck(const char *, int, const char *); #define ISC_ERROR_RUNTIMECHECK(cond) \ diff --git a/lib/ns/tests/plugin_test.c b/lib/ns/tests/plugin_test.c index f71bb4e122..0feba053d3 100644 --- a/lib/ns/tests/plugin_test.c +++ b/lib/ns/tests/plugin_test.c @@ -32,7 +32,7 @@ #include #include -ISC_NORETURN void +noreturn void _fail(const char *const file, const int line); #include