mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-16 19:50:19 +01:00
786c4c9911
This re-aligns the gcc5.SlackBuild script with the latest gcc.SlackBuild in Slackware 14.2. Retpoline patches are included. Signed-off-by: Eric Hameleers <alien@slackware.com> Signed-off-by: Matteo Bernardini <ponce@slackbuilds.org>
231 lines
10 KiB
Diff
231 lines
10 KiB
Diff
From 86118fbdbafe6af54b2da467e1073c49e1742116 Mon Sep 17 00:00:00 2001
|
|
From: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
|
|
Date: Tue, 16 Jan 2018 11:17:49 +0000
|
|
Subject: [PATCH 7/9] x86: Add -mindirect-branch-register (documentation)
|
|
|
|
Add -mindirect-branch-register to force indirect branch via register.
|
|
This is implemented by disabling patterns of indirect branch via memory,
|
|
similar to TARGET_X32.
|
|
|
|
-mindirect-branch= and -mfunction-return= tests are updated with
|
|
-mno-indirect-branch-register to avoid false test failures when
|
|
-mindirect-branch-register is added to RUNTESTFLAGS for "make check".
|
|
|
|
gcc/
|
|
|
|
Backport from mainline
|
|
2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
* config/i386/constraints.md (Bs): Disallow memory operand for
|
|
-mindirect-branch-register.
|
|
(Bw): Likewise.
|
|
* config/i386/predicates.md (indirect_branch_operand): Likewise.
|
|
(GOT_memory_operand): Likewise.
|
|
(call_insn_operand): Likewise.
|
|
(sibcall_insn_operand): Likewise.
|
|
(GOT32_symbol_operand): Likewise.
|
|
* config/i386/i386.md (indirect_jump): Call convert_memory_address
|
|
for -mindirect-branch-register.
|
|
(tablejump): Likewise.
|
|
(*sibcall_memory): Likewise.
|
|
(*sibcall_value_memory): Likewise.
|
|
Disallow peepholes of indirect call and jump via memory for
|
|
-mindirect-branch-register.
|
|
(*call_pop): Replace m with Bw.
|
|
(*call_value_pop): Likewise.
|
|
(*sibcall_pop_memory): Replace m with Bs.
|
|
* config/i386/i386.opt (mindirect-branch-register): New option.
|
|
* doc/invoke.texi: Document -mindirect-branch-register option.
|
|
|
|
gcc/testsuite/
|
|
|
|
Backport from mainline
|
|
2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
* gcc.target/i386/indirect-thunk-1.c (dg-options): Add
|
|
-mno-indirect-branch-register.
|
|
* gcc.target/i386/indirect-thunk-2.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-3.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-4.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-5.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-6.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-7.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-attr-1.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-attr-2.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-attr-3.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-attr-4.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-attr-5.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-attr-6.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-attr-7.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-bnd-1.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-bnd-2.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-bnd-3.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-bnd-4.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-extern-1.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-extern-2.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-extern-3.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-extern-4.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-extern-5.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-extern-6.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-extern-7.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-inline-1.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-inline-2.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-inline-3.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-inline-4.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-inline-5.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-inline-6.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-inline-7.c: Likewise.
|
|
* gcc.target/i386/ret-thunk-10.c: Likewise.
|
|
* gcc.target/i386/ret-thunk-11.c: Likewise.
|
|
* gcc.target/i386/ret-thunk-12.c: Likewise.
|
|
* gcc.target/i386/ret-thunk-13.c: Likewise.
|
|
* gcc.target/i386/ret-thunk-14.c: Likewise.
|
|
* gcc.target/i386/ret-thunk-15.c: Likewise.
|
|
* gcc.target/i386/ret-thunk-9.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-register-1.c: New test.
|
|
* gcc.target/i386/indirect-thunk-register-2.c: Likewise.
|
|
* gcc.target/i386/indirect-thunk-register-3.c: Likewise.
|
|
|
|
i386: Rename to ix86_indirect_branch_register
|
|
|
|
Rename the variable for -mindirect-branch-register to
|
|
ix86_indirect_branch_register to match the command-line option name.
|
|
|
|
Backport from mainline
|
|
2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
* config/i386/constraints.md (Bs): Replace
|
|
ix86_indirect_branch_thunk_register with
|
|
ix86_indirect_branch_register.
|
|
(Bw): Likewise.
|
|
* config/i386/i386.md (indirect_jump): Likewise.
|
|
(tablejump): Likewise.
|
|
(*sibcall_memory): Likewise.
|
|
(*sibcall_value_memory): Likewise.
|
|
Peepholes of indirect call and jump via memory: Likewise.
|
|
* config/i386/i386.opt: Likewise.
|
|
* config/i386/predicates.md (indirect_branch_operand): Likewise.
|
|
(GOT_memory_operand): Likewise.
|
|
(call_insn_operand): Likewise.
|
|
(sibcall_insn_operand): Likewise.
|
|
(GOT32_symbol_operand): Likewise.
|
|
|
|
x86: Rewrite ix86_indirect_branch_register logic
|
|
|
|
Rewrite ix86_indirect_branch_register logic with
|
|
|
|
(and (not (match_test "ix86_indirect_branch_register"))
|
|
(original condition before r256662))
|
|
|
|
Backport from mainline
|
|
2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
* config/i386/predicates.md (constant_call_address_operand):
|
|
Rewrite ix86_indirect_branch_register logic.
|
|
(sibcall_insn_operand): Likewise.
|
|
|
|
Don't check ix86_indirect_branch_register for GOT operand
|
|
|
|
Since GOT_memory_operand and GOT32_symbol_operand are simple pattern
|
|
matches, don't check ix86_indirect_branch_register here. If needed,
|
|
-mindirect-branch= will convert indirect branch via GOT slot to a call
|
|
and return thunk.
|
|
|
|
Backport from mainline
|
|
2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
* config/i386/constraints.md (Bs): Update
|
|
ix86_indirect_branch_register check. Don't check
|
|
ix86_indirect_branch_register with GOT_memory_operand.
|
|
(Bw): Likewise.
|
|
* config/i386/predicates.md (GOT_memory_operand): Don't check
|
|
ix86_indirect_branch_register here.
|
|
(GOT32_symbol_operand): Likewise.
|
|
|
|
i386: Rewrite indirect_branch_operand logic
|
|
|
|
Backport from mainline
|
|
2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
* config/i386/predicates.md (indirect_branch_operand): Rewrite
|
|
ix86_indirect_branch_register logic.
|
|
|
|
|
|
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256735 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
|
|
[Ubuntu note: Dropped indirect-thunk-5.c, indirect-thunk-6.c,
|
|
indirect-thunk-bnd-3.c, indirect-thunk-bnd-4.c,
|
|
indirect-thunk-extern-5.c, indirect-thunk-extern-6.c,
|
|
indirect-thunk-inline-5.c, and indirect-thunk-inline-6.c tests due
|
|
to gcc 5.4 and earlier not supporting the -fno-plt option.
|
|
--sbeattie,]
|
|
---
|
|
src/gcc/config/i386/constraints.md | 6 +
|
|
src/gcc/config/i386/i386.md | 34 ++++++----
|
|
src/gcc/config/i386/i386.opt | 4 +
|
|
src/gcc/config/i386/predicates.md | 9 +-
|
|
src/gcc/doc/invoke.texi | 7 +-
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c | 22 ++++++
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c | 20 +++++
|
|
src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c | 19 +++++
|
|
src/gcc/testsuite/gcc.target/i386/ret-thunk-10.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/ret-thunk-11.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/ret-thunk-12.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/ret-thunk-13.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c | 2
|
|
src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c | 2
|
|
39 files changed, 134 insertions(+), 49 deletions(-)
|
|
create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c
|
|
create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c
|
|
create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c
|
|
|
|
Index: b/src/gcc/doc/invoke.texi
|
|
===================================================================
|
|
--- a/src/gcc/doc/invoke.texi
|
|
+++ b/src/gcc/doc/invoke.texi
|
|
@@ -1091,7 +1091,8 @@ See RS/6000 and PowerPC Options.
|
|
-msse2avx -mfentry -mrecord-mcount -mnop-mcount -m8bit-idiv @gol
|
|
-mavx256-split-unaligned-load -mavx256-split-unaligned-store @gol
|
|
-malign-data=@var{type} -mstack-protector-guard=@var{guard} @gol
|
|
--mindirect-branch=@var{choice} -mfunction-return=@var{choice}}
|
|
+-mindirect-branch=@var{choice} -mfunction-return=@var{choice} @gol
|
|
+-mindirect-branch-register}
|
|
|
|
@emph{x86 Windows Options}
|
|
@gccoptlist{-mconsole -mcygwin -mno-cygwin -mdll @gol
|
|
@@ -24040,6 +24041,10 @@ object file. You can control this behav
|
|
using the function attribute @code{function_return}.
|
|
@xref{Function Attributes}.
|
|
|
|
+@item -mindirect-branch-register
|
|
+@opindex -mindirect-branch-register
|
|
+Force indirect call and jump via register.
|
|
+
|
|
@end table
|
|
|
|
@c man end
|