aboutsummaryrefslogtreecommitdiffstats
path: root/main/zfs-vanilla/0007-Remove-complicated-libspl-assert-wrappers.patch
diff options
context:
space:
mode:
authorCarlo Landmeter <clandmeter@gmail.com>2016-08-20 01:03:47 +0000
committerCarlo Landmeter <clandmeter@gmail.com>2016-08-20 01:03:54 +0000
commit2a4a9928dc6f584578d8340ee9b41654f4dada23 (patch)
treefece4fadfd168bc0204341b7ea42723c6b73ca23 /main/zfs-vanilla/0007-Remove-complicated-libspl-assert-wrappers.patch
parentc5cf7a9dc691eb09fe4fd30b06ad8ffa2ee94752 (diff)
downloadaports-2a4a9928dc6f584578d8340ee9b41654f4dada23.tar.bz2
aports-2a4a9928dc6f584578d8340ee9b41654f4dada23.tar.xz
main/zfs-vanilla: new aport
Diffstat (limited to 'main/zfs-vanilla/0007-Remove-complicated-libspl-assert-wrappers.patch')
-rw-r--r--main/zfs-vanilla/0007-Remove-complicated-libspl-assert-wrappers.patch159
1 files changed, 159 insertions, 0 deletions
diff --git a/main/zfs-vanilla/0007-Remove-complicated-libspl-assert-wrappers.patch b/main/zfs-vanilla/0007-Remove-complicated-libspl-assert-wrappers.patch
new file mode 100644
index 0000000000..74e8a747c6
--- /dev/null
+++ b/main/zfs-vanilla/0007-Remove-complicated-libspl-assert-wrappers.patch
@@ -0,0 +1,159 @@
+From bd123ed53786910cfdcfa7f3a983a268a5951fb0 Mon Sep 17 00:00:00 2001
+From: Brian Behlendorf <behlendorf1@llnl.gov>
+Date: Tue, 1 Mar 2016 15:45:43 +0100
+Subject: [PATCH 7/8] Remove complicated libspl assert wrappers
+
+Effectively provide our own version of assert()/verify() for use
+in user space. This minimizes our dependencies and aligns the
+user space assertion handling with what's used in the kernel.
+
+Signed-off-by: Carlo Landmeter <clandmeter@gmail.com>
+Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Closes #4449
+---
+ include/libzfs_impl.h | 5 ---
+ lib/libspl/include/assert.h | 82 ++++++++++++++++++++-------------------------
+ 2 files changed, 36 insertions(+), 51 deletions(-)
+
+diff --git a/include/libzfs_impl.h b/include/libzfs_impl.h
+index e805e3e..ff02fa7 100644
+--- a/include/libzfs_impl.h
++++ b/include/libzfs_impl.h
+@@ -46,11 +46,6 @@
+ extern "C" {
+ #endif
+
+-#ifdef VERIFY
+-#undef VERIFY
+-#endif
+-#define VERIFY verify
+-
+ typedef struct libzfs_fru {
+ char *zf_device;
+ char *zf_fru;
+diff --git a/lib/libspl/include/assert.h b/lib/libspl/include/assert.h
+index 52924e8..6226872 100644
+--- a/lib/libspl/include/assert.h
++++ b/lib/libspl/include/assert.h
+@@ -32,68 +32,54 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+
+-#ifndef __assert_c99
+-static inline void
+-__assert_c99(const char *expr, const char *file, int line, const char *func)
++static inline int
++libspl_assert(const char *buf, const char *file, const char *func, int line)
+ {
+- fprintf(stderr, "%s:%i: %s: Assertion `%s` failed.\n",
+- file, line, func, expr);
++ fprintf(stderr, "%s\n", buf);
++ fprintf(stderr, "ASSERT at %s:%d:%s()", file, line, func);
+ abort();
+ }
+-#endif /* __assert_c99 */
+-
+-#ifndef verify
+-#if defined(__STDC__)
+-#if __STDC_VERSION__ - 0 >= 199901L
+-#define verify(EX) (void)((EX) || \
+- (__assert_c99(#EX, __FILE__, __LINE__, __func__), 0))
+-#else
+-#define verify(EX) (void)((EX) || (__assert(#EX, __FILE__, __LINE__), 0))
+-#endif /* __STDC_VERSION__ - 0 >= 199901L */
+-#else
+-#define verify(EX) (void)((EX) || (_assert("EX", __FILE__, __LINE__), 0))
+-#endif /* __STDC__ */
+-#endif /* verify */
+-
+-#undef VERIFY
+-#undef ASSERT
+
+-#define VERIFY verify
+-#define ASSERT assert
++#ifdef verify
++#undef verify
++#endif
+
+-extern void __assert(const char *, const char *, int);
++#define VERIFY(cond) \
++ (void) ((!(cond)) && \
++ libspl_assert(#cond, __FILE__, __FUNCTION__, __LINE__))
++#define verify(cond) \
++ (void) ((!(cond)) && \
++ libspl_assert(#cond, __FILE__, __FUNCTION__, __LINE__))
+
+-static inline int
+-assfail(const char *buf, const char *file, int line)
+-{
+- __assert(buf, file, line);
+- return (0);
+-}
+-
+-/* BEGIN CSTYLED */
+-#define VERIFY3_IMPL(LEFT, OP, RIGHT, TYPE) do { \
+- const TYPE __left = (TYPE)(LEFT); \
+- const TYPE __right = (TYPE)(RIGHT); \
+- if (!(__left OP __right)) { \
+- char *__buf = alloca(256); \
+- (void) snprintf(__buf, 256, "%s %s %s (0x%llx %s 0x%llx)", \
+- #LEFT, #OP, #RIGHT, \
+- (u_longlong_t)__left, #OP, (u_longlong_t)__right); \
+- assfail(__buf, __FILE__, __LINE__); \
+- } \
++#define VERIFY3_IMPL(LEFT, OP, RIGHT, TYPE) \
++do { \
++ const TYPE __left = (TYPE)(LEFT); \
++ const TYPE __right = (TYPE)(RIGHT); \
++ if (!(__left OP __right)) { \
++ char *__buf = alloca(256); \
++ (void) snprintf(__buf, 256, \
++ "%s %s %s (0x%llx %s 0x%llx)", #LEFT, #OP, #RIGHT, \
++ (u_longlong_t)__left, #OP, (u_longlong_t)__right); \
++ libspl_assert(__buf, __FILE__, __FUNCTION__, __LINE__); \
++ } \
+ } while (0)
+-/* END CSTYLED */
+
+ #define VERIFY3S(x, y, z) VERIFY3_IMPL(x, y, z, int64_t)
+ #define VERIFY3U(x, y, z) VERIFY3_IMPL(x, y, z, uint64_t)
+ #define VERIFY3P(x, y, z) VERIFY3_IMPL(x, y, z, uintptr_t)
+ #define VERIFY0(x) VERIFY3_IMPL(x, ==, 0, uint64_t)
+
++#ifdef assert
++#undef assert
++#endif
++
+ #ifdef NDEBUG
+ #define ASSERT3S(x, y, z) ((void)0)
+ #define ASSERT3U(x, y, z) ((void)0)
+ #define ASSERT3P(x, y, z) ((void)0)
+ #define ASSERT0(x) ((void)0)
++#define ASSERT(x) ((void)0)
++#define assert(x) ((void)0)
+ #define ASSERTV(x)
+ #define IMPLY(A, B) ((void)0)
+ #define EQUIV(A, B) ((void)0)
+@@ -102,13 +88,17 @@ assfail(const char *buf, const char *file, int line)
+ #define ASSERT3U(x, y, z) VERIFY3U(x, y, z)
+ #define ASSERT3P(x, y, z) VERIFY3P(x, y, z)
+ #define ASSERT0(x) VERIFY0(x)
++#define ASSERT(x) VERIFY(x)
++#define assert(x) VERIFY(x)
+ #define ASSERTV(x) x
+ #define IMPLY(A, B) \
+ ((void)(((!(A)) || (B)) || \
+- assfail("(" #A ") implies (" #B ")", __FILE__, __LINE__)))
++ libspl_assert("(" #A ") implies (" #B ")", \
++ __FILE__, __FUNCTION__, __LINE__)))
+ #define EQUIV(A, B) \
+ ((void)((!!(A) == !!(B)) || \
+- assfail("(" #A ") is equivalent to (" #B ")", __FILE__, __LINE__)))
++ libspl_assert("(" #A ") is equivalent to (" #B ")", \
++ __FILE__, __FUNCTION__, __LINE__)))
+
+ #endif /* NDEBUG */
+
+--
+2.7.4
+