diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2016-11-28 09:44:49 -0800 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2017-02-09 11:18:45 -0500 |
commit | 27a54a0980cb30f7d3fd930d540c8cd10e2cccd0 (patch) | |
tree | a299b3d8403fdded35a13a31fb47957287f1432b | |
parent | 20f534e0abd81149c71cef082c8c058bb9d953af (diff) | |
download | glibc-27a54a0980cb30f7d3fd930d540c8cd10e2cccd0.tar.gz glibc-27a54a0980cb30f7d3fd930d540c8cd10e2cccd0.tar.xz glibc-27a54a0980cb30f7d3fd930d540c8cd10e2cccd0.zip |
X86_64: Don't use PLT nor GOT in static archives [BZ #20750]
There is no need to use PLT nor GOT in static archives to branch to a function, regardless whether static archives is compiled with PIC or not. When static archives are used to create dynamic executable, PLT/GOT may be used. The resulting executable still works correctly. [BZ #20750] * sysdeps/x86_64/sysdep.h (JUMPTARGET): Check SHARED instead of PIC. (cherry picked from commit c9070e6305c08365c5f8b604bdca39c699d70cfa) (cherry picked from commit d012ea850680a2a94959f1c5136502a0f712b30a)
-rw-r--r-- | sysdeps/x86_64/sysdep.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sysdeps/x86_64/sysdep.h b/sysdeps/x86_64/sysdep.h index 75ac747be8..4b67fa80c1 100644 --- a/sysdeps/x86_64/sysdep.h +++ b/sysdeps/x86_64/sysdep.h @@ -89,13 +89,14 @@ lose: \ END (name) #undef JUMPTARGET -#ifdef PIC +#ifdef SHARED # ifdef BIND_NOW # define JUMPTARGET(name) *name##@GOTPCREL(%rip) # else # define JUMPTARGET(name) name##@PLT # endif #else +/* For static archives, branch to target directly. */ # define JUMPTARGET(name) name #endif |