From: Willy Tarreau Date: Mon, 15 Jun 2020 16:43:46 +0000 (+0200) Subject: BUILD: haproxy: mark deinit_and_exit() as noreturn X-Git-Tag: v2.2-dev10~45 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f3ca5a0273e73a7b213eb09cb3dc5856648b86c3;p=thirdparty%2Fhaproxy.git BUILD: haproxy: mark deinit_and_exit() as noreturn Commit 0a3b43d9c ("MINOR: haproxy: Make use of deinit_and_exit() for clean exits") introduced this build warning: src/haproxy.c: In function 'main': src/haproxy.c:3775:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ This is because the new deinit_and_exit() is not marked as "noreturn" so depending on the optimizations, the noreturn attribute of exit() will either leak through it and silence the warning or not and confuse the compiler. Let's just add the attribute to fix this. No backport is needed, this is purely 2.2. --- diff --git a/include/haproxy/global.h b/include/haproxy/global.h index 1028c1b2a5..339214c4af 100644 --- a/include/haproxy/global.h +++ b/include/haproxy/global.h @@ -61,7 +61,7 @@ struct proxy; struct server; int main(int argc, char **argv); void deinit(void); -void deinit_and_exit(int); +__attribute__((noreturn)) void deinit_and_exit(int); void run_poll_loop(void); int tell_old_pids(int sig); int delete_oldpid(int pid); diff --git a/src/haproxy.c b/src/haproxy.c index 245ac3b608..6a8c13e6dd 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -2866,7 +2866,7 @@ void deinit(void) deinit_pollers(); } /* end deinit() */ -void deinit_and_exit(int status) +__attribute__((noreturn)) void deinit_and_exit(int status) { deinit(); exit(status);