diff options
author | Aliaksey Kandratsenka <alkondratenko@gmail.com> | 2017-05-22 18:58:15 -0700 |
---|---|---|
committer | Aliaksey Kandratsenka <alkondratenko@gmail.com> | 2017-05-22 18:58:15 -0700 |
commit | f2bae51e7e609855c26095f14ffbb84082694acb (patch) | |
tree | 039583f71ef74e4bf53b8b3b6627468b508bc1d5 /configure.ac | |
parent | 6426c0cc8049dd50a681dc337ac9962577d5fa14 (diff) | |
download | gperftools-f2bae51e7e609855c26095f14ffbb84082694acb.tar.gz |
Revert "Revert "disable dynamic sized delete support by default""
This reverts commit b82d89cb7c8781a6028f6f5959cabdc5a273aec3.
Dynamic sized delete support relies on ifunc handler being able to
look up environment variable. The issue is, when stuff is linked with
-z now linker flags, all relocations are performed early. And sadly
ifunc relocations are not treated specially. So when ifunc handler
runs, it cannot rely on any dynamic relocations at all, otherwise
crash is real possibility. So we cannot afford doing it until (and if)
ifunc is fixed.
This was brought to my attention by Fedora people at
https://bugzilla.redhat.com/show_bug.cgi?id=1452813
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/configure.ac b/configure.ac index 5171027..98efd0d 100644 --- a/configure.ac +++ b/configure.ac @@ -345,23 +345,10 @@ AM_CONDITIONAL(HAVE_W_NO_UNUSED_RESULT, test "$perftools_cv_w_no_unused_result" = yes) AC_ARG_ENABLE([dynamic-sized-delete-support], - [AS_HELP_STRING([--disable-dynamic-sized-delete-support], - [don't try to build run-time switch for sized delete operator])], + [AS_HELP_STRING([--enable-dynamic-sized-delete-support], + [try to build run-time switch for sized delete operator])], [enable_dyn_sized_delete="$enableval"], - [enable_dyn_sized_delete=default]) - -AS_IF([test "x$enable_dyn_sized_delete" = xdefault], - [AC_CACHE_CHECK( - [if the compiler supports ifunc attributes for target], - [perftools_cv_ifunc_result], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([ - void *resolve_foo() {return 0;} - void foo() __attribute__((ifunc("resolve_foo"))); - ],[foo();])], - [perftools_cv_ifunc_result=yes], - [perftools_cv_ifunc_result=no])])] - [enable_dyn_sized_delete=$perftools_cv_ifunc_result]) + [enable_dyn_sized_delete=no]) AS_IF([test "x$enable_dyn_sized_delete" = xyes], [AC_DEFINE([ENABLE_DYNAMIC_SIZED_DELETE], 1, |