aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--config.h.in3
-rwxr-xr-xconfigure4
-rw-r--r--configure.ac3
-rw-r--r--sysdeps/x86_64/sysdep.h8
5 files changed, 24 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 3345a1d379..055316f86e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2016-05-24 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config.h.in (BIND_NOW): New.
+ * configure.ac (BIND_NOW): New. Defined for --enable-bind-now.
+ * configure: Regenerated.
+ * sysdeps/x86_64/sysdep.h (JUMPTARGET)[BIND_NOW]: Defined to
+ indirect branch via the GOT slot.
+
2016-05-24 Stefan Liebler <stli@linux.vnet.ibm.com>
[BZ #19765]
diff --git a/config.h.in b/config.h.in
index 0147ba3c34..2c902b0214 100644
--- a/config.h.in
+++ b/config.h.in
@@ -87,6 +87,9 @@
include/libc-symbols.h that avoid PLT slots in the shared objects. */
#undef NO_HIDDEN
+/* Define this to disable lazy relocations in DSOs. */
+#undef BIND_NOW
+
/* AArch64 big endian ABI */
#undef HAVE_AARCH64_BE
diff --git a/configure b/configure
index 8fe59377ea..19a4829466 100755
--- a/configure
+++ b/configure
@@ -3416,6 +3416,10 @@ else
fi
+if test "x$bindnow" = xyes; then
+ $as_echo "#define BIND_NOW 1" >>confdefs.h
+
+fi
# Check whether --enable-static-nss was given.
if test "${enable_static_nss+set}" = set; then :
diff --git a/configure.ac b/configure.ac
index 3c766b7409..123f0d26ee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -231,6 +231,9 @@ AC_ARG_ENABLE([bind-now],
[bindnow=$enableval],
[bindnow=no])
AC_SUBST(bindnow)
+if test "x$bindnow" = xyes; then
+ AC_DEFINE(BIND_NOW)
+fi
dnl On some platforms we cannot use dynamic loading. We must provide
dnl static NSS modules.
diff --git a/sysdeps/x86_64/sysdep.h b/sysdeps/x86_64/sysdep.h
index fbe3560588..75ac747be8 100644
--- a/sysdeps/x86_64/sysdep.h
+++ b/sysdeps/x86_64/sysdep.h
@@ -90,9 +90,13 @@ lose: \
#undef JUMPTARGET
#ifdef PIC
-#define JUMPTARGET(name) name##@PLT
+# ifdef BIND_NOW
+# define JUMPTARGET(name) *name##@GOTPCREL(%rip)
+# else
+# define JUMPTARGET(name) name##@PLT
+# endif
#else
-#define JUMPTARGET(name) name
+# define JUMPTARGET(name) name
#endif
/* Local label name for asm code. */