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:
parent
e94797250b
commit
59c8329389
2 changed files with 29 additions and 0 deletions
21
gcc/testsuite/gcc.target/arm/stack-protector-5.c
Normal file
21
gcc/testsuite/gcc.target/arm/stack-protector-5.c
Normal 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 } } */
|
8
gcc/testsuite/gcc.target/arm/stack-protector-6.c
Normal file
8
gcc/testsuite/gcc.target/arm/stack-protector-6.c
Normal 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 } } */
|
Loading…
Add table
Reference in a new issue