aarch64: Add a couple of extra stack-protector tests

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

gcc/testsuite/
	* gcc.target/aarch64/stack-protector-3.c: New test.
	* gcc.target/aarch64/stack-protector-4.c: Likewise.
This commit is contained in:
Richard Sandiford 2020-09-23 19:21:56 +01:00
parent f65ebb5210
commit 0f0b00033a
2 changed files with 51 additions and 0 deletions

View File

@ -0,0 +1,45 @@
/* { dg-do run } */
/* { dg-require-effective-target fstack_protector } */
/* { dg-options "-fstack-protector-all -O2" } */
extern volatile long *stack_chk_guard_ptr;
void __attribute__ ((noipa))
f (void)
{
volatile int x;
/* Munging the contents of __stack_chk_guard should trigger a
stack-smashing failure for this function. */
*stack_chk_guard_ptr += 1;
}
#define CHECK(REG) "\tcmp\tx0, " #REG "\n\tbeq\t1f\n"
asm (
" .pushsection .data\n"
" .align 3\n"
"stack_chk_guard_ptr:\n"
#if __ILP32__
" .word __stack_chk_guard\n"
#else
" .xword __stack_chk_guard\n"
#endif
" .weak __stack_chk_guard\n"
"__stack_chk_guard:\n"
" .word 0xdead4321\n"
" .word 0xbeef8765\n"
" .text\n"
" .type __stack_chk_fail, %function\n"
"__stack_chk_fail:\n"
" mov x0, #0\n"
" b exit\n"
" .size __stack_chk_fail, .-__stack_chk_fail\n"
" .popsection"
);
int
main (void)
{
f ();
__builtin_abort ();
}

View File

@ -0,0 +1,6 @@
/* { dg-do run } */
/* { dg-require-effective-target fstack_protector } */
/* { dg-require-effective-target fpic } */
/* { dg-options "-fstack-protector-all -O2 -fpic" } */
#include "stack-protector-3.c"