+2015-01-13 Niels Möller <nisse@lysator.liu.se>
+
+ * aclocal.m4 (NETTLE_CHECK_IFUNC): New macro, checking for ifunc
+ and settting HAVE_LINK_IFUNC if working.
+ * configure.ac: Use it.
+
2015-01-12 Niels Möller <nisse@lysator.liu.se>
* asm.m4 (DECLARE_FUNC): New macro, extracted from PROLOGUE.
fi
])
+dnl NETTLE_CHECK_IFUNC
+dnl ------------------
+dnl Check if __attribute__ ((ifunc(...))) works
+AC_DEFUN([NETTLE_CHECK_IFUNC],
+[AC_REQUIRE([AC_PROG_CC])
+AC_CACHE_CHECK([for ifunc support],
+ nettle_cv_link_ifunc,
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([
+static int
+foo_imp(int x)
+{
+ return 1;
+}
+
+typedef void void_func (void);
+
+static void_func *
+foo_resolv(void)
+{
+ return (void_func *) foo_imp;
+}
+
+int foo (int x) __attribute__ ((ifunc("foo_resolv")));
+],[
+ return foo(0);
+
+])],
+[nettle_cv_link_ifunc=yes],
+[nettle_cv_link_ifunc=no]))
+AH_TEMPLATE([HAVE_LINK_IFUNC], [Define if compiler and linker supports __attribute__ ifunc])
+if test "x$nettle_cv_link_ifunc" = xyes ; then
+ AC_DEFINE(HAVE_LINK_IFUNC)
+fi
+])
+
dnl @synopsis AX_CREATE_STDINT_H [( HEADER-TO-GENERATE [, HEADERS-TO-CHECK])]
dnl
dnl the "ISO C9X: 7.18 Integer types <stdint.h>" section requires the
# Checks for programs.
AC_PROG_CC
+NETTLE_CHECK_IFUNC
+
# When $CC foo.c -o foo creates both foo and foo.exe, autoconf picks
# up the foo.exe and sets exeext to .exe. That is correct for cygwin,
# which has some kind of magic link from foo to foo.exe, but not for