openwrtv3/toolchain/gcc/patches/5.2.0/020-no-plt-backport.patch
Hauke Mehrtens 32c3af6a19 toolchain: gcc: add gcc 5.2.0
This was boot tested on mipsel32, arm32 and x86 only.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 46611
2015-08-16 20:20:36 +00:00

28 lines
966 B
Diff

--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -225,6 +225,12 @@ prepare_call_address (tree fndecl_or_typ
&& targetm.small_register_classes_for_mode_p (FUNCTION_MODE))
? force_not_mem (memory_address (FUNCTION_MODE, funexp))
: memory_address (FUNCTION_MODE, funexp));
+ else if (flag_pic && !flag_plt && fndecl_or_type
+ && TREE_CODE (fndecl_or_type) == FUNCTION_DECL
+ && !targetm.binds_local_p (fndecl_or_type))
+ {
+ funexp = force_reg (Pmode, funexp);
+ }
else if (! sibcallp)
{
#ifndef NO_FUNCTION_CSE
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -1779,6 +1779,10 @@ fpie
Common Report Var(flag_pie,1) Negative(fPIC)
Generate position-independent code for executables if possible (small mode)
+fplt
+Common Report Var(flag_plt) Init(1)
+Use PLT for PIC calls (-fno-plt: load the address from GOT at call site)
+
fplugin=
Common Joined RejectNegative Var(common_deferred_options) Defer
Specify a plugin to load