arm: Add a couple of extra stack-protector tests

These tests were inspired by corresponding aarch64 ones.
They already pass.

gcc/testsuite/
	* gcc.target/arm/stack-protector-5.c: New test.
	* gcc.target/arm/stack-protector-6.c: Likewise.
This commit is contained in:
Richard Sandiford 2020-09-24 10:06:11 +01:00
parent e94797250b
commit 59c8329389
2 changed files with 29 additions and 0 deletions

View file

@ -0,0 +1,21 @@
/* { dg-do compile } */
/* { dg-options "-fstack-protector-all -O2" } */
void __attribute__ ((noipa))
f (void)
{
volatile int x;
asm volatile ("" :::
"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
"r8", "r9", "r10", "r11", "r12", "r14");
}
/* The register clobbers above should not generate any single LDRs or STRs;
all registers should be pushed and popped using register lists. The only
STRs should therefore be those associated with the stack protector tests
themselves.
Make sure the address of the canary is not spilled and reloaded,
since that would give the attacker an opportunity to change the
canary value. */
/* { dg-final { scan-assembler-times {\tstr\t} 1 } } */

View file

@ -0,0 +1,8 @@
/* { dg-do compile } */
/* { dg-require-effective-target fpic } */
/* { dg-options "-fstack-protector-all -O2 -fpic" } */
#include "stack-protector-5.c"
/* See the comment in stack-protector-5.c. */
/* { dg-final { scan-assembler-times {\tstr\t} 1 } } */