On Tue, 7 Aug 2018, Mark Johnston wrote:
Log:
ifconfig: Fix use of _Noreturn.
The _Noreturn is a function-specifier (like inline) which must preceed
the declarator.
Submitted by: Sebastian Huber <sebastian.hu...@embedded-brains.de>
MFC after: 1 week
_Noreturn is even more broken than I knew. It should never be used. Here
its use is wronger than usual.
Modified: head/sbin/ifconfig/ifconfig.c
==============================================================================
--- head/sbin/ifconfig/ifconfig.c Tue Aug 7 17:13:42 2018
(r337425)
+++ head/sbin/ifconfig/ifconfig.c Tue Aug 7 17:25:38 2018
(r337426)
@@ -109,7 +109,7 @@ static int ifconfig(int argc, char *const *argv, int i
static void status(const struct afswtch *afp, const struct sockaddr_dl *sdl,
struct ifaddrs *ifa);
static void tunnel_status(int s);
-static void usage(void) _Noreturn;
+static _Noreturn void usage(void);
static struct afswtch *af_getbyname(const char *name);
static struct afswtch *af_getbyfamily(int af);
FreeBSD code should use __dead2 since it is more portable (within
FreeBSD) and doesn't have so mean syntactical restrictions. However,
it only exists at all since it had similar syntactial restrictions
when it was new (FreeBSD-1 used __dead, which must be placed like
_Noreturn, but __dead2 uses __attribute__(()) which couldn't be placed
there when it was new), and the macro that hides the details was renamed
to inhibit misuse. Changing __dead2 to _Noreturn and moving it to satisfy
the restricted syntax of the latter mainly broke support for old compilers
where __dead2 cannot be placed there.
However, all declarations of static usage() as non-returning are bogus, and
this one is more bogus than most since another style bug is to unsort
usage() to before where it is used, so even 1-pass compilers can see that
it doesn't return before generating code that uses it. Unsorting of inline
functions is sometimes needed so that 1-pass compilers can optimize them,
but optimizing usage() is especially not needed.
Bruce
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"