From: Niels Möller Date: Wed, 2 Sep 2015 20:09:01 +0000 (+0200) Subject: Disable use of ifunc. X-Git-Tag: nettle_3.2_release_20160128~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7b1bb3292d2527c73faa7b192dec86e13346467d;p=thirdparty%2Fnettle.git Disable use of ifunc. --- diff --git a/ChangeLog b/ChangeLog index e67fae19..2425c82d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-09-02 Niels Möller + + * fat-setup.h: Disable use of ifunc, since it breaks dlopen with + RTLD_NOW. + 2015-08-25 Niels Möller * 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