diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/basic/macro.h | 9 | ||||
-rw-r--r-- | src/boot/meson.build | 6 | ||||
-rw-r--r-- | src/fundamental/macro-fundamental.h | 22 | ||||
-rw-r--r-- | src/nss-systemd/nss-systemd.c | 4 | ||||
-rw-r--r-- | src/resolve/resolved-dns-dnssec.c | 15 | ||||
-rw-r--r-- | src/shared/ethtool-util.c | 8 |
6 files changed, 41 insertions, 23 deletions
diff --git a/src/basic/macro.h b/src/basic/macro.h index 68eb7bbd0e..026ec13637 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/boot/meson.build b/src/boot/meson.build index cc5102c551..f726996233 100644 --- a/src/boot/meson.build +++ b/src/boot/meson.build @@ -74,6 +74,12 @@ if conf.get('ENABLE_BOOTLOADER') != 1 endif efi_conf = configuration_data() + +# import several configs from userspace +foreach name : ['HAVE_WARNING_ZERO_LENGTH_BOUNDS', 'HAVE_WARNING_ZERO_AS_NULL_POINTER_CONSTANT'] + efi_conf.set10(name, conf.get(name) == 1) +endforeach + efi_conf.set10('ENABLE_TPM', get_option('tpm')) foreach ctype : ['color-normal', 'color-entry', 'color-highlight', 'color-edit'] diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h index 709657dd28..5eb31cd742 100644 --- a/src/fundamental/macro-fundamental.h +++ b/src/fundamental/macro-fundamental.h @@ -48,6 +48,28 @@ _Pragma("GCC diagnostic push"); \ _Pragma("GCC diagnostic ignored \"-Waddress\"") +#define DISABLE_WARNING_STRINGOP_TRUNCATION \ + _Pragma("GCC diagnostic push"); \ + _Pragma("GCC diagnostic ignored \"-Wstringop-truncation\"") + +#if HAVE_WARNING_ZERO_LENGTH_BOUNDS +# define DISABLE_WARNING_ZERO_LENGTH_BOUNDS \ + _Pragma("GCC diagnostic push"); \ + _Pragma("GCC diagnostic ignored \"-Wzero-length-bounds\"") +#else +# define DISABLE_WARNING_ZERO_LENGTH_BOUNDS \ + _Pragma("GCC diagnostic push") +#endif + +#if HAVE_WARNING_ZERO_AS_NULL_POINTER_CONSTANT +# define DISABLE_WARNING_ZERO_AS_NULL_POINTER_CONSTANT \ + _Pragma("GCC diagnostic push"); \ + _Pragma("GCC diagnostic ignored \"-Wzero-as-null-pointer-constant\"") +#else +# define DISABLE_WARNING_ZERO_AS_NULL_POINTER_CONSTANT \ + _Pragma("GCC diagnostic push") +#endif + #define REENABLE_WARNING \ _Pragma("GCC diagnostic pop") diff --git a/src/nss-systemd/nss-systemd.c b/src/nss-systemd/nss-systemd.c index d686d920fc..683352fab9 100644 --- a/src/nss-systemd/nss-systemd.c +++ b/src/nss-systemd/nss-systemd.c @@ -101,6 +101,9 @@ typedef struct GetentData { bool by_membership; } GetentData; +/* On current glibc PTHREAD_MUTEX_INITIALIZER is defined in a way incompatible with + * -Wzero-as-null-pointer-constant, work around this for now. */ +DISABLE_WARNING_ZERO_AS_NULL_POINTER_CONSTANT; static GetentData getpwent_data = { .mutex = PTHREAD_MUTEX_INITIALIZER, }; @@ -116,6 +119,7 @@ static GetentData getspent_data = { static GetentData getsgent_data = { .mutex = PTHREAD_MUTEX_INITIALIZER, }; +REENABLE_WARNING; static void setup_logging_once(void) { static pthread_once_t once = PTHREAD_ONCE_INIT; diff --git a/src/resolve/resolved-dns-dnssec.c b/src/resolve/resolved-dns-dnssec.c index 09cc2cb731..aff185a2dd 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 51c75780cd..aeed917a6a 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; |