about summary refs log tree commit diff
path: root/config.h.in
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2016-05-24 08:44:10 -0700
committerH.J. Lu <hjl.tools@gmail.com>2016-05-24 08:44:23 -0700
commit6901def689b5c77465d34f07822989ec67e80c1e (patch)
tree2efde72294545c6b0129133d43d1f7335182fa61 /config.h.in
parent4c011268960c6f24650672597deed756f21ad363 (diff)
downloadglibc-6901def689b5c77465d34f07822989ec67e80c1e.tar.gz
glibc-6901def689b5c77465d34f07822989ec67e80c1e.tar.xz
glibc-6901def689b5c77465d34f07822989ec67e80c1e.zip
Avoid an extra branch to PLT for -z now
When --enable-bind-now is used to configure glibc build, we can avoid
an extra branch to the PLT entry by using indirect branch via the GOT
slot instead, which is similar to the first instructuon in the PLT
entry.  Changes in the shared library sizes in text sections:

Shared library    Before (bytes)   After (bytes)
libm.so             1060813          1060797
libmvec.so           160881           160805
libpthread.so         94992            94984
librt.so              25064            25048

	* 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.
Diffstat (limited to 'config.h.in')
-rw-r--r--config.h.in3
1 files changed, 3 insertions, 0 deletions
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