| /* SPDX-License-Identifier: LGPL-2.1 OR MIT */ |
| /* |
| * Assert for NOLIBC |
| * Copyright (C) 2026 Thomas Weißschuh <linux@weissschuh.net> |
| */ |
| |
| /* make sure to include all global symbols */ |
| #include "nolibc.h" |
| |
| #ifndef _NOLIBC_ASSERT_H |
| #define _NOLIBC_ASSERT_H |
| |
| #include "errno.h" |
| #include "stdio.h" |
| #include "stdlib.h" |
| |
| #endif /* _NOLIBC_ASSERT_H */ |
| |
| /* NDEBUG needs to be evaluated on *each* inclusion */ |
| #ifdef assert |
| #undef assert |
| #endif |
| |
| #ifndef NDEBUG |
| #define assert(expr) \ |
| ({ \ |
| if (!(expr)) { \ |
| fprintf(stderr, "%s: %s:%d: %s: Assertion `%s' failed.\n", \ |
| program_invocation_short_name, __FILE__, __LINE__, __func__, \ |
| #expr); \ |
| abort(); \ |
| } \ |
| }) |
| #else |
| #define assert(expr) ((void)0) |
| #endif |