summaryrefslogtreecommitdiffstats
path: root/src/contrib/asan.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/contrib/asan.h')
-rw-r--r--src/contrib/asan.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/contrib/asan.h b/src/contrib/asan.h
index 5feb2c1..ef6fe66 100644
--- a/src/contrib/asan.h
+++ b/src/contrib/asan.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/* Copyright (C) 2024 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -25,13 +25,20 @@
#if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
void __asan_poison_memory_region(void const volatile *addr, size_t size);
void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
+#if defined(__GNUC__) && !defined(__clang__) /* A faulty GCC workaround. */
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
#define ASAN_POISON_MEMORY_REGION(addr, size) \
__asan_poison_memory_region((addr), (size))
+#if defined(__GNUC__) && !defined(__clang__) /* End of the workaround. */
+ #pragma GCC diagnostic pop
+#endif
#define ASAN_UNPOISON_MEMORY_REGION(addr, size) \
__asan_unpoison_memory_region((addr), (size))
-#else
+#else /* __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__) */
#define ASAN_POISON_MEMORY_REGION(addr, size) \
((void)(addr), (void)(size))
#define ASAN_UNPOISON_MEMORY_REGION(addr, size) \
((void)(addr), (void)(size))
-#endif
+#endif /* __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__) */