[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 02/32] Disable clang warnings
From: |
Karim Taha |
Subject: |
[PATCH v3 02/32] Disable clang warnings |
Date: |
Sun, 13 Aug 2023 10:41:23 +0200 |
From: Kyle Evans <kevans@FreeBSD.org>
Implement PRAGMA_DISABLE_PACKED_WARNING and PRAGMA_REENABLE_PACKED_WARNING
macros in include/qemu/compiler.h.
Signed-off-by: Kyle Evans <kevans@FreeBSD.org>
Signed-off-by: Karim Taha <kariem.taha2.7@gmail.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
include/qemu/compiler.h | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h
index a309f90c76..b037442518 100644
--- a/include/qemu/compiler.h
+++ b/include/qemu/compiler.h
@@ -22,6 +22,36 @@
#define QEMU_EXTERN_C extern
#endif
+/*
+ * Tricky points:
+ * - Use __builtin_choose_expr to avoid type promotion from ?:,
+ * - Invalid sizes result in a compile time error stemming from
+ * the fact that abort has no parameters.
+ * - It's easier to use the endian-specific unaligned load/store
+ * functions than host-endian unaligned load/store plus tswapN.
+ * - The pragmas are necessary only to silence a clang false-positive
+ * warning: see https://bugs.llvm.org/show_bug.cgi?id=39113 .
+ * - We have to disable -Wpragmas warnings to avoid a complaint about
+ * an unknown warning type from older compilers that don't know about
+ * -Waddress-of-packed-member.
+ * - gcc has bugs in its _Pragma() support in some versions, eg
+ * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83256 -- so we only
+ * include the warning-suppression pragmas for clang
+ */
+#ifdef __clang__
+#define PRAGMA_DISABLE_PACKED_WARNING \
+ _Pragma("GCC diagnostic push"); \
+ _Pragma("GCC diagnostic ignored \"-Wpragmas\""); \
+ _Pragma("GCC diagnostic ignored \"-Waddress-of-packed-member\"")
+
+#define PRAGMA_REENABLE_PACKED_WARNING \
+ _Pragma("GCC diagnostic pop")
+
+#else
+#define PRAGMA_DISABLE_PACKED_WARNING
+#define PRAGMA_REENABLE_PACKED_WARNING
+#endif
+
#if defined(_WIN32) && (defined(__x86_64__) || defined(__i386__))
# define QEMU_PACKED __attribute__((gcc_struct, packed))
#else
--
2.40.0
- [PATCH v3 00/32] Implement the stat system calls for FreeBSD., Karim Taha, 2023/08/13
- [PATCH v3 01/32] Move _WANT_FREEBSD macros to include/qemu/osdep.h, Karim Taha, 2023/08/13
- [PATCH v3 02/32] Disable clang warnings,
Karim Taha <=
- [PATCH v3 03/32] Update the definitions of __put_user and __get_user macros, Karim Taha, 2023/08/13
- [PATCH v3 04/32] Declarations of h2t and t2h conversion functions., Karim Taha, 2023/08/13
- [PATCH v3 05/32] Add struct target_freebsd11_stat to bsd-user/syscall_defs, Karim Taha, 2023/08/13
- [PATCH v3 06/32] Add struct target_stat to bsd-user/syscall_defs.h, Karim Taha, 2023/08/13
- [PATCH v3 07/32] Add structs target_freebsd11_nstat and target_freebsd11_statfs to bsd-user/syscall_defs.h, Karim Taha, 2023/08/13
- [PATCH v3 08/32] Add struct target_statfs to bsd-user/syscall_defs.h, Karim Taha, 2023/08/13
- [PATCH v3 09/32] Add struct target_freebsd_fhandle and fcntl flags to bsd-user/syscall_defs.h, Karim Taha, 2023/08/13
- [PATCH v3 11/32] Rename target_freebsd_time_t to target_time_t, Karim Taha, 2023/08/13
- [PATCH v3 10/32] Define safe_fcntl macro in bsd-user/syscall_defs.h, Karim Taha, 2023/08/13
- [PATCH v3 12/32] Implement h2t_freebsd11_stat h2t_freebsd_nstat, Karim Taha, 2023/08/13