From 235fe911df596333ea63152baa7ec4eecdeb7d12 Mon Sep 17 00:00:00 2001 From: Kyle Evans Date: Sun, 12 Jan 2025 18:41:25 -0600 Subject: [PATCH] include: add a userland version of __assert_unreachable The kernel has had a version of this since c79cee71363d ("kernel: provide panicky version of __unreachable"), and userland can benefit from the same. __unreachable is largely inadequate because it's *not* an assertion of any sort, so we're not really alerted to a problem that we could've anticipated. Reviewed by: emaste, imp, jhb, olce Differential Revision: https://reviews.freebsd.org/D48077 (cherry picked from commit 712f81feea416e9f8aaf040173883876a50a7d34) --- include/assert.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/assert.h b/include/assert.h index 54e1456b9e0..b483465dfc5 100644 --- a/include/assert.h +++ b/include/assert.h @@ -45,15 +45,22 @@ #undef assert #undef _assert +#undef __assert_unreachable #ifdef NDEBUG #define assert(e) ((void)0) #define _assert(e) ((void)0) +#if __BSD_VISIBLE +#define __assert_unreachable() __unreachable() +#endif /* __BSD_VISIBLE */ #else #define _assert(e) assert(e) #define assert(e) ((e) ? (void)0 : __assert(__func__, __FILE__, \ __LINE__, #e)) +#if __BSD_VISIBLE +#define __assert_unreachable() assert(0 && "unreachable segment reached") +#endif /* __BSD_VISIBLE */ #endif /* NDEBUG */ #ifndef _ASSERT_H_