git: e67d933d9c06 - main - Merge commit 3fcd73747 from openzfs git (by Adrian Chadd):
Ryan Libby
rlibby at FreeBSD.org
Sun Dec 27 23:03:40 UTC 2020
The branch main has been updated by rlibby:
URL: https://cgit.FreeBSD.org/src/commit/?id=e67d933d9c068328781cce46df400fc8782e6365
commit e67d933d9c068328781cce46df400fc8782e6365
Author: Ryan Libby <rlibby at FreeBSD.org>
AuthorDate: 2020-12-27 22:33:13 +0000
Commit: Ryan Libby <rlibby at FreeBSD.org>
CommitDate: 2020-12-27 22:33:13 +0000
Merge commit 3fcd73747 from openzfs git (by Adrian Chadd):
Fix compiling on FreeBSD + gcc - don't assume illmnos bits
This looks like it was once from the illumnos compat code.
FreeBSD doesn't have cmn_err as a compiler format attribute, so
it definitely errors out.
It doesn't show up on LLVM because it doesn't trigger at all.
Add in the format flags but keep them behind #if 0 for now;
there are too many format issues that trigger when one does
format checking in the shared code.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Ryan Moeller <ryan at iXsystems.com>
Signed-off-by: adrian chadd <adrian at freebsd.org>
Closes #11068
Closes #11069
---
.../openzfs/include/os/freebsd/spl/sys/ccompile.h | 32 ++++++++++++++--------
1 file changed, 20 insertions(+), 12 deletions(-)
diff --git a/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompile.h b/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompile.h
index cf1e0a8a6376..a02e8f098540 100644
--- a/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompile.h
+++ b/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompile.h
@@ -48,6 +48,7 @@ extern "C" {
#if defined(__ATTRIBUTE_IMPLEMENTED) || defined(__GNUC__)
+#if 0
/*
* analogous to lint's PRINTFLIKEn
*/
@@ -56,20 +57,28 @@ extern "C" {
#define __sun_attr___VPRINTFLIKE__(__n) \
__attribute__((__format__(printf, __n, 0)))
-/*
- * Handle the kernel printf routines that can take '%b' too
- */
-#if __GNUC_VERSION < 30402
-/*
- * XX64 at least this doesn't work correctly yet with 3.4.1 anyway!
- */
#define __sun_attr___KPRINTFLIKE__ __sun_attr___PRINTFLIKE__
#define __sun_attr___KVPRINTFLIKE__ __sun_attr___VPRINTFLIKE__
#else
-#define __sun_attr___KPRINTFLIKE__(__n) \
- __attribute__((__format__(cmn_err, __n, (__n)+1)))
-#define __sun_attr___KVPRINTFLIKE__(__n) \
- __attribute__((__format__(cmn_err, __n, 0)))
+/*
+ * Currently the openzfs codebase has a lot of formatting errors
+ * which are not picked up in the linux build because they're not
+ * doing formatting checks. LLVM's kprintf implementation doesn't
+ * actually do format checks!
+ *
+ * For FreeBSD these break under gcc! LLVM shim'ed cmn_err as a
+ * format attribute but also didn't check anything. If one
+ * replaces it with the above, all of the format issues
+ * in the codebase show up.
+ *
+ * Once those format string issues are addressed, the above
+ * should be flipped on once again.
+ */
+#define __sun_attr___PRINTFLIKE__(__n)
+#define __sun_attr___VPRINTFLIKE__(__n)
+#define __sun_attr___KPRINTFLIKE__(__n)
+#define __sun_attr___KVPRINTFLIKE__(__n)
+
#endif
/*
@@ -77,7 +86,6 @@ extern "C" {
*/
#define __sun_attr___noreturn__ __attribute__((__noreturn__))
-
/*
* This is an appropriate label for functions that do not
* modify their arguments, e.g. strlen()
More information about the dev-commits-src-all
mailing list