diff options
author | Adrian Chadd <[email protected]> | 2020-10-15 13:07:12 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2020-11-10 15:54:12 -0800 |
commit | 3fcd737478217ab3f4cc518fadb20e1931f13dfe (patch) | |
tree | 69a1335b42d156427807e23398fd67445fb73d79 /include/os | |
parent | 79a357c2a1fb42f9539af57aa729ca175a8115b9 (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/os')
-rw-r--r-- | include/os/freebsd/spl/sys/ccompile.h | 32 |
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() |