[patch] Use __builtin_FILE and __builtin_LINE in assert implementation in C++
Paul Pluzhnikov
ppluzhnikov@google.com
Sun Feb 5 21:51:25 GMT 2023
On Sun, Feb 5, 2023 at 12:08 PM Florian Weimer <fweimer@redhat.com> wrote:
> As I said before, use of these builtins needs to be conditionalized.
Yes (revised patch attached).
I was more asking whether there were any fundamental objections.
Thanks,
--
Paul Pluzhnikov
-------------- next part --------------
diff --git a/assert/assert.h b/assert/assert.h
index 72209bc5e7..6edcb01d0a 100644
--- a/assert/assert.h
+++ b/assert/assert.h
@@ -86,10 +86,18 @@ __END_DECLS
parentheses around EXPR. Otherwise, those added parentheses would
suppress warnings we'd expect to be detected by gcc's -Wparentheses. */
# if defined __cplusplus
+# if __has_builtin(__builtin_FILE)
+# define __ASSERT_FILE __builtin_FILE()
+# define __ASSERT_LINE __builtin_LINE()
+# else
+# define __ASSERT_FILE __FILE__
+# define __ASSERT_LINE __LINE__
+# endif
# define assert(expr) \
(static_cast <bool> (expr) \
? void (0) \
- : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
+ : __assert_fail (#expr, __ASSERT_FILE, __ASSERT_LINE, \
+ __ASSERT_FUNCTION))
# elif !defined __GNUC__ || defined __STRICT_ANSI__
# define assert(expr) \
((expr) \
More information about the Libc-alpha
mailing list