Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Dec 2020 23:03:40 GMT
From:      Ryan Libby <rlibby@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: e67d933d9c06 - main - Merge commit 3fcd73747 from openzfs git (by Adrian Chadd):
Message-ID:  <202012272303.0BRN3ekD008680@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by rlibby:

URL: https://cgit.FreeBSD.org/src/commit/?id=e67d933d9c068328781cce46df400fc8782e6365

commit e67d933d9c068328781cce46df400fc8782e6365
Author:     Ryan Libby <rlibby@FreeBSD.org>
AuthorDate: 2020-12-27 22:33:13 +0000
Commit:     Ryan Libby <rlibby@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@llnl.gov>
      Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
      Signed-off-by: adrian chadd <adrian@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()



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202012272303.0BRN3ekD008680>