From 88d99fc1bd87b17517e49fd7ae82c0de6eaff992 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 22 Sep 2020 09:59:37 -0400 Subject: [PATCH] Fix warnings when using two unusual options together. The option `--enable-all-bugs-are-fatal` when used with `--disable-module-relay` caused GCC to warn about functions that it thought should be labeled noreturn. I've tried a couple of approaches, but disabling the warning on these functions seems to be the best approach. Fixed #40129; bugfix on 0.4.4.1-alpha. --- changes/bug40129 | 4 ++++ src/feature/dircache/dircache_stub.c | 2 ++ src/feature/relay/router.c | 5 +++++ 3 files changed, 11 insertions(+) create mode 100644 changes/bug40129 diff --git a/changes/bug40129 b/changes/bug40129 new file mode 100644 index 0000000000..80de5ef355 --- /dev/null +++ b/changes/bug40129 @@ -0,0 +1,4 @@ + o Minor bugfixes (compilation): + - Fix compiler warnings that would occur when building with + "--enable-all-bugs-are-fatal" and "--disable-module-relay" + at the same time. Fixes bug 40129; bugfix on 0.4.4.1-alpha. diff --git a/src/feature/dircache/dircache_stub.c b/src/feature/dircache/dircache_stub.c index 87811597d1..725c44bd4d 100644 --- a/src/feature/dircache/dircache_stub.c +++ b/src/feature/dircache/dircache_stub.c @@ -14,6 +14,7 @@ #include "feature/dircache/dirserv.h" #include "feature/dircommon/dir_connection_st.h" +DISABLE_GCC_WARNING("-Wmissing-noreturn") int directory_handle_command(dir_connection_t *conn) { @@ -29,6 +30,7 @@ connection_dirserv_flushed_some(dir_connection_t *conn) tor_assert_nonfatal_unreached_once(); return -1; } +ENABLE_GCC_WARNING("-Wmissing-noreturn") void dir_conn_clear_spool(dir_connection_t *conn) diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c index 34d8163c36..75a3d2f35c 100644 --- a/src/feature/relay/router.c +++ b/src/feature/relay/router.c @@ -2488,6 +2488,10 @@ check_descriptor_bandwidth_changed(time_t now) } } +// This function can be "noreturn" if relay mode is disabled and +// ALL_BUGS_ARE_FATAL is set. +DISABLE_GCC_WARNING("-Wmissing-noreturn") + /** Note at log level severity that our best guess of address has changed from * prev to cur. */ void @@ -2517,6 +2521,7 @@ log_addr_has_changed(int severity, "Guessed our IP address as %s (source: %s).", addrbuf_cur, source); } +ENABLE_GCC_WARNING("-Wmissing-noreturn") /** Check whether our own address as defined by the Address configuration * has changed. This is for routers that get their address from a service