- Add support for zero-sized VLAs and allocas with

-fstack-clash-protection.  [bnc #1059075]
  Changes gcc43-stack-probe.diff .

OBS-URL: https://build.opensuse.org/package/show/devel:gcc/gcc7?expand=0&rev=83
This commit is contained in:
Michael Matz 2017-09-25 20:30:40 +00:00 committed by Git OBS Bridge
parent 22c9ab68c4
commit 202e5ccf04
21 changed files with 161 additions and 6 deletions

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -30,12 +30,12 @@ Index: gcc/explow.c
HOST_WIDE_INT stack_usage_size = -1;
rtx_code_label *final_label;
rtx final_target, target;
+ rtx loop_lab, end_lab, last_size;
+ rtx loop_lab, end_lab, skip_lab, last_size, before_skip;
+ int probe_pass = 0;
/* If we're asking for zero bytes, it doesn't matter what we point
to since we can't dereference it. But return a reasonable
@@ -1440,6 +1444,24 @@ allocate_dynamic_stack_space (rtx size,
@@ -1440,6 +1444,30 @@ allocate_dynamic_stack_space (rtx size,
/* Don't let anti_adjust_stack emit notes. */
suppress_reg_args_size = true;
@ -47,6 +47,12 @@ Index: gcc/explow.c
+ size = copy_to_mode_reg (Pmode, convert_to_mode (Pmode, size, 1));
+ loop_lab = gen_label_rtx ();
+ end_lab = gen_label_rtx ();
+ skip_lab = gen_label_rtx ();
+ /* We insert 'target = virtual_stack_dynamic_rtx' here, but target
+ is changed later, so that insn can be constructed only later. */
+ before_skip = get_last_insn ();
+ emit_cmp_and_jump_insns (size, CONST0_RTX (Pmode), EQ, NULL_RTX,
+ Pmode, 1, skip_lab);
+ emit_label (loop_lab);
+ emit_cmp_and_jump_insns (size, GEN_INT (PROBE_INTERVAL), LTU,
+ NULL_RTX, Pmode, 1, end_lab);
@ -60,7 +66,7 @@ Index: gcc/explow.c
/* Perform the required allocation from the stack. Some systems do
this differently than simply incrementing/decrementing from the
stack pointer, such as acquiring the space by calling malloc(). */
@@ -1499,6 +1521,15 @@ allocate_dynamic_stack_space (rtx size,
@@ -1499,6 +1527,15 @@ allocate_dynamic_stack_space (rtx size,
if (STACK_GROWS_DOWNWARD)
emit_move_insn (target, virtual_stack_dynamic_rtx);
}
@ -76,16 +82,25 @@ Index: gcc/explow.c
suppress_reg_args_size = false;
@@ -1510,6 +1541,8 @@ allocate_dynamic_stack_space (rtx size,
@@ -1510,6 +1547,17 @@ allocate_dynamic_stack_space (rtx size,
emit_label (final_label);
target = final_target;
}
+ if (flag_stack_clash_protection)
+ {
+ rtx seq;
+ emit_stack_probe (target);
+ emit_label (skip_lab);
+ start_sequence ();
+ emit_move_insn (target, virtual_stack_dynamic_rtx);
+ seq = get_insns ();
+ end_sequence ();
+ emit_insn_after (seq, before_skip);
+ }
target = align_dynamic_address (target, required_align);
@@ -1593,8 +1626,6 @@ emit_stack_probe (rtx address)
@@ -1593,8 +1641,6 @@ emit_stack_probe (rtx address)
the current stack pointer. STACK_GROWS_DOWNWARD says whether to add
or subtract them from the stack pointer. */

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Mon Sep 25 20:22:09 UTC 2017 - matz@suse.de
- Add support for zero-sized VLAs and allocas with
-fstack-clash-protection. [bnc #1059075]
Changes gcc43-stack-probe.diff .
-------------------------------------------------------------------
Tue Aug 29 07:17:15 UTC 2017 - rguenther@suse.com