aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorAdrian Chadd <[email protected]>2020-10-15 13:07:12 -0700
committerBrian Behlendorf <[email protected]>2020-11-11 11:09:50 -0800
commitd842f99c6b2b4f8be098b27829026833402b9bec (patch)
treeeb6ed6e159309a3c66db1fe9c7b2e9e6c6348fec /include
parent8cad25a39c61eebc3b875c0227b8afbf63bb2098 (diff)
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 <[email protected]> Reviewed-by: Ryan Moeller <[email protected]> Signed-off-by: adrian chadd <[email protected]> Closes #11068 Closes #11069
Diffstat (limited to 'include')
-rw-r--r--include/os/freebsd/spl/sys/ccompile.h32
1 files changed, 20 insertions, 12 deletions
diff --git a/include/os/freebsd/spl/sys/ccompile.h b/include/os/freebsd/spl/sys/ccompile.h
index cf1e0a8a6..a02e8f098 100644
--- a/include/os/freebsd/spl/sys/ccompile.h
+++ b/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()