summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build/configure.ac.system12
-rw-r--r--util/cairo-trace/trace.c2
2 files changed, 13 insertions, 1 deletions
diff --git a/build/configure.ac.system b/build/configure.ac.system
index 09d2e307a..3fffb9492 100644
--- a/build/configure.ac.system
+++ b/build/configure.ac.system
@@ -73,6 +73,18 @@ dnl ====================================================================
dnl Header/function checks
dnl ====================================================================
+dnl check if we have a __builtin_return_address for the cairo-trace
+dnl utility.
+AC_MSG_CHECKING([for __builtin_return_address(0)])
+AC_TRY_COMPILE([],[__builtin_return_address(0);],
+ [have_builtin_return_address=yes],
+ [have_builtin_return_address=no])
+AC_MSG_RESULT($have_builtin_return_address)
+if test "x$have_builtin_return_address" = "xyes"; then
+ AC_DEFINE(HAVE_BUILTIN_RETURN_ADDRESS, 1,
+ [Define to 1 if your compiler supports the __builtin_return_address() intrinsic.])
+fi
+
dnl Checks for precise integer types
AC_CHECK_HEADERS([stdint.h inttypes.h sys/int_types.h])
AC_CHECK_TYPES([uint64_t, uint128_t])
diff --git a/util/cairo-trace/trace.c b/util/cairo-trace/trace.c
index 626a81e4c..9a1c54e90 100644
--- a/util/cairo-trace/trace.c
+++ b/util/cairo-trace/trace.c
@@ -177,7 +177,7 @@ static bool _line_info;
static bool _mark_dirty;
static const cairo_user_data_key_t destroy_key;
-#if __GNUC__ >= 3
+#if HAVE_BUILTIN_RETURN_ADDRESS
#define _emit_line_info() do { \
if (_line_info && _write_lock ()) { \
void *addr = __builtin_return_address(0); \