From f3ca5a0273e73a7b213eb09cb3dc5856648b86c3 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 15 Jun 2020 18:43:46 +0200 Subject: [PATCH] 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. --- include/haproxy/global.h | 2 +- src/haproxy.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/haproxy/global.h b/include/haproxy/global.h index 1028c1b2a..339214c4a 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 245ac3b60..6a8c13e6d 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);