summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--fat-setup.h9
2 files changed, 14 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index e67fae19..2425c82d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-09-02 Niels Möller <nisse@lysator.liu.se>
+
+ * fat-setup.h: Disable use of ifunc, since it breaks dlopen with
+ RTLD_NOW.
+
2015-08-25 Niels Möller <nisse@lysator.liu.se>
* NEWS: Started on entries for Nettle-3.2.
diff --git a/fat-setup.h b/fat-setup.h
index 09e8c371..eb7166a7 100644
--- a/fat-setup.h
+++ b/fat-setup.h
@@ -77,6 +77,15 @@
# endif
#endif
+/* Disable use of ifunc for now. Problem is, there's no guarantee that
+ one can call any libc functions from the ifunc resolver. On x86 and
+ x86_64, the corresponding IRELATIVE relocs are supposed to be
+ processed last, but that doesn't seem to happen, and its a
+ platform-specific feature. To trigger problems, simply try dlopen
+ ("libnettle.so", RTLD_NOW), which crashes in an uninitialized plt
+ entry. */
+#undef HAVE_LINK_IFUNC
+
#if !HAVE_SECURE_GETENV
#define secure_getenv(s) NULL
#endif