diff options
author | amonakov <amonakov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-05-11 13:20:57 +0000 |
---|---|---|
committer | amonakov <amonakov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-05-11 13:20:57 +0000 |
commit | 562ef5ccc46d9786275a40639fa56fa12ad7e476 (patch) | |
tree | 532861d0edff899e1bd9fe5d71d6a207bb11a98a /gcc/doc/invoke.texi | |
parent | 4090805fc1202cce2b05428eb033e4a26ab0cc9e (diff) | |
download | gcc-562ef5ccc46d9786275a40639fa56fa12ad7e476.tar.gz |
* calls.c (prepare_call_address): Transform PLT call to GOT lookup and
indirect call by forcing address into a pseudo with -fno-plt.
* common.opt (flag_plt): New option.
* doc/invoke.texi (Code Generation Options): Add -fno-plt.
([-fno-plt]): Document.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223003 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/doc/invoke.texi')
-rw-r--r-- | gcc/doc/invoke.texi | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index c332f884b92..b5721c9f242 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -1128,7 +1128,7 @@ See S/390 and zSeries Options. -finstrument-functions-exclude-function-list=@var{sym},@var{sym},@dots{} @gol -finstrument-functions-exclude-file-list=@var{file},@var{file},@dots{} @gol -fno-common -fno-ident @gol --fpcc-struct-return -fpic -fPIC -fpie -fPIE @gol +-fpcc-struct-return -fpic -fPIC -fpie -fPIE -fno-plt @gol -fno-jump-tables @gol -frecord-gcc-switches @gol -freg-struct-return -fshort-enums @gol @@ -23782,6 +23782,16 @@ used during linking. @code{__pie__} and @code{__PIE__}. The macros have the value 1 for @option{-fpie} and 2 for @option{-fPIE}. +@item -fno-plt +@opindex fno-plt +Do not use PLT for external function calls in position-independent code. +Instead, load callee address at call site from GOT and branch to it. +This leads to more efficient code by eliminating PLT stubs and exposing +GOT load to optimizations. On architectures such as 32-bit x86 where +PLT stubs expect GOT pointer in a specific register, this gives more +register allocation freedom to the compiler. Lazy binding requires PLT: +with @option{-fno-plt} all external symbols are resolved at load time. + @item -fno-jump-tables @opindex fno-jump-tables Do not use jump tables for switch statements even where it would be |