Avoid an extra branch to PLT for -z now
commit6901def689b5c77465d34f07822989ec67e80c1e
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 24 May 2016 15:44:10 +0000 (24 08:44 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 24 May 2016 15:44:23 +0000 (24 08:44 -0700)
tree2efde72294545c6b0129133d43d1f7335182fa61
parent4c011268960c6f24650672597deed756f21ad363
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.
ChangeLog
config.h.in
configure
configure.ac
sysdeps/x86_64/sysdep.h