blob: b8f77fa2309086f1ed91563775ed358f47189952 [file] [log] [blame]
/* { 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;
}
asm (
" .data\n"
" .align 3\n"
" .globl stack_chk_guard_ptr\n"
"stack_chk_guard_ptr:\n"
" .word __stack_chk_guard\n"
" .weak __stack_chk_guard\n"
"__stack_chk_guard:\n"
" .word 0xdead4321\n"
" .text\n"
" .type __stack_chk_fail, %function\n"
"__stack_chk_fail:\n"
" movs r0, #0\n"
" b exit\n"
" .size __stack_chk_fail, .-__stack_chk_fail"
);
int
main (void)
{
f ();
__builtin_abort ();
}