From: Lennart Poettering Date: Thu, 16 Jan 2025 15:01:56 +0000 (+0100) Subject: fundamental: unify gcc warning pragmas at one place X-Git-Tag: v258-rc1~1574^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1d5f0a88e0dac70cf6f99ccee2fac8eb33c1a7cf;p=thirdparty%2Fsystemd.git fundamental: unify gcc warning pragmas at one place This also drops HAVE_WSTRINGOP_TRUNCATION as the corresponding option was introduced in GCC 8, and our baseline is GCC 8.4. --- diff --git a/meson.build b/meson.build index 5c364e13790..f9f400a7d64 100644 --- a/meson.build +++ b/meson.build @@ -538,14 +538,11 @@ endif cpp = ' '.join(cc.cmd_array() + get_option('c_args')) + ' -E' -has_wstringop_truncation = cc.has_argument('-Wstringop-truncation') - ##################################################################### # compilation result tests conf.set('_GNU_SOURCE', 1) conf.set('__SANE_USERSPACE_TYPES__', true) -conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation) conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include ')) conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include ')) diff --git a/src/basic/macro.h b/src/basic/macro.h index 68eb7bbd0e5..026ec136376 100644 --- a/src/basic/macro.h +++ b/src/basic/macro.h @@ -30,15 +30,6 @@ #define _function_no_sanitize_float_cast_overflow_ #endif -#if HAVE_WSTRINGOP_TRUNCATION -# define DISABLE_WARNING_STRINGOP_TRUNCATION \ - _Pragma("GCC diagnostic push"); \ - _Pragma("GCC diagnostic ignored \"-Wstringop-truncation\"") -#else -# define DISABLE_WARNING_STRINGOP_TRUNCATION \ - _Pragma("GCC diagnostic push") -#endif - /* test harness */ #define EXIT_TEST_SKIP 77 diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h index 709657dd285..6122a0a92b3 100644 --- a/src/fundamental/macro-fundamental.h +++ b/src/fundamental/macro-fundamental.h @@ -48,6 +48,14 @@ _Pragma("GCC diagnostic push"); \ _Pragma("GCC diagnostic ignored \"-Waddress\"") +#define DISABLE_WARNING_STRINGOP_TRUNCATION \ + _Pragma("GCC diagnostic push"); \ + _Pragma("GCC diagnostic ignored \"-Wstringop-truncation\"") + +#define DISABLE_WARNING_ZERO_LENGTH_BOUNDS \ + _Pragma("GCC diagnostic push"); \ + _Pragma("GCC diagnostic ignored \"-Wzero-length-bounds\"") + #define REENABLE_WARNING \ _Pragma("GCC diagnostic pop") diff --git a/src/resolve/resolved-dns-dnssec.c b/src/resolve/resolved-dns-dnssec.c index 09cc2cb7313..aff185a2dd9 100644 --- a/src/resolve/resolved-dns-dnssec.c +++ b/src/resolve/resolved-dns-dnssec.c @@ -15,11 +15,10 @@ #include "string-table.h" #if PREFER_OPENSSL && OPENSSL_VERSION_MAJOR >= 3 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +DISABLE_WARNING_DEPRECATED_DECLARATIONS; DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(RSA*, RSA_free, NULL); DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(EC_KEY*, EC_KEY_free, NULL); -# pragma GCC diagnostic pop +REENABLE_WARNING; #endif #define VERIFY_RRS_MAX 256 @@ -101,8 +100,7 @@ static int dnssec_rsa_verify_raw( int r; #if PREFER_OPENSSL -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wdeprecated-declarations" + DISABLE_WARNING_DEPRECATED_DECLARATIONS; _cleanup_(RSA_freep) RSA *rpubkey = NULL; _cleanup_(EVP_PKEY_freep) EVP_PKEY *epubkey = NULL; _cleanup_(EVP_PKEY_CTX_freep) EVP_PKEY_CTX *ctx = NULL; @@ -153,7 +151,7 @@ static int dnssec_rsa_verify_raw( return log_debug_errno(SYNTHETIC_ERRNO(EIO), "Signature verification failed: 0x%lx", ERR_get_error()); -# pragma GCC diagnostic pop + REENABLE_WARNING; #else gcry_sexp_t public_key_sexp = NULL, data_sexp = NULL, signature_sexp = NULL; gcry_mpi_t n = NULL, e = NULL, s = NULL; @@ -303,8 +301,7 @@ static int dnssec_ecdsa_verify_raw( int k; #if PREFER_OPENSSL -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wdeprecated-declarations" + DISABLE_WARNING_DEPRECATED_DECLARATIONS; _cleanup_(EC_GROUP_freep) EC_GROUP *ec_group = NULL; _cleanup_(EC_POINT_freep) EC_POINT *p = NULL; _cleanup_(EC_KEY_freep) EC_KEY *eckey = NULL; @@ -365,7 +362,7 @@ static int dnssec_ecdsa_verify_raw( return log_debug_errno(SYNTHETIC_ERRNO(EIO), "Signature verification failed: 0x%lx", ERR_get_error()); -# pragma GCC diagnostic pop + REENABLE_WARNING; #else gcry_sexp_t public_key_sexp = NULL, data_sexp = NULL, signature_sexp = NULL; gcry_mpi_t q = NULL, r = NULL, s = NULL; diff --git a/src/shared/ethtool-util.c b/src/shared/ethtool-util.c index 51c75780cd6..aeed917a6a5 100644 --- a/src/shared/ethtool-util.c +++ b/src/shared/ethtool-util.c @@ -11,6 +11,7 @@ #include "extract-word.h" #include "fd-util.h" #include "log.h" +#include "macro-fundamental.h" #include "memory-util.h" #include "socket-util.h" #include "string-table.h" @@ -452,12 +453,9 @@ static int get_stringset(int ethtool_fd, const char *ifname, enum ethtool_string if (buffer.info.sset_mask == 0) return -EOPNOTSUPP; -#pragma GCC diagnostic push -#if HAVE_ZERO_LENGTH_BOUNDS -# pragma GCC diagnostic ignored "-Wzero-length-bounds" -#endif + DISABLE_WARNING_ZERO_LENGTH_BOUNDS; len = buffer.info.data[0]; -#pragma GCC diagnostic pop + REENABLE_WARNING; if (len == 0) return -EOPNOTSUPP;