Module Name: src
Committed By: riastradh
Date: Mon Sep 7 02:28:12 UTC 2020
Modified Files:
src/sys/ufs/lfs: lfs_accessors.h
Log Message:
Suppress -Waddress-of-packed-member just for lfs_accessors.h.
We can remove -Wno-error=address-of-packed-member from various
makefiles now.
To generate a diff of this commit:
cvs rdiff -u -r1.49 -r1.50 src/sys/ufs/lfs/lfs_accessors.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/ufs/lfs/lfs_accessors.h
diff -u src/sys/ufs/lfs/lfs_accessors.h:1.49 src/sys/ufs/lfs/lfs_accessors.h:1.50
--- src/sys/ufs/lfs/lfs_accessors.h:1.49 Sat Mar 21 06:11:05 2020
+++ src/sys/ufs/lfs/lfs_accessors.h Mon Sep 7 02:28:12 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_accessors.h,v 1.49 2020/03/21 06:11:05 riastradh Exp $ */
+/* $NetBSD: lfs_accessors.h,v 1.50 2020/09/07 02:28:12 riastradh Exp $ */
/* from NetBSD: lfs.h,v 1.165 2015/07/24 06:59:32 dholland Exp */
/* from NetBSD: dinode.h,v 1.25 2016/01/22 23:06:10 dholland Exp */
@@ -218,6 +218,31 @@
/*
+ * Suppress spurious warnings -- we use
+ *
+ * type *foo = &obj->member;
+ *
+ * in macros to verify that obj->member has the right type. When the
+ * object is a packed structure with misaligned members, this causes
+ * some compiles to squeal that taking the address might lead to
+ * undefined behaviour later on -- which is helpful in general, not
+ * relevant in this case, because we don't do anything with foo
+ * afterward; we only declare it to get a type check and then we
+ * discard it.
+ */
+#ifdef __GNUC__
+#if defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Waddress-of-packed-member"
+#elif __GNUC_PREREQ__(9,0)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
+#endif
+#endif
+
+
+
+/*
* directories
*/
@@ -1508,5 +1533,16 @@ lfs_blocks_sub(STRUCT_LFS *fs, union lfs
#define LFS_NRESERVE(F) (lfs_btofsb((F), (2 * ULFS_NIADDR + 3) << lfs_sb_getbshift(F)))
+/*
+ * Suppress spurious clang warnings
+ */
+#ifdef __GNUC__
+#if defined(__clang__)
+#pragma clang diagnostic pop
+#elif __GNUC_PREREQ__(9,0)
+#pragma GCC diagnostic pop
+#endif
+#endif
+
#endif /* _UFS_LFS_LFS_ACCESSORS_H_ */