view gcc/testsuite/g++.dg/asan/function-argument-1.C @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 84e7813d76e9
children
line wrap: on
line source

// { dg-do run }
// { dg-shouldfail "asan" }
// { dg-options "-fsanitize=address -fno-sanitize-address-use-after-scope" }

struct A
{
  int a[5];
};

static __attribute__ ((noinline)) int
goo (A *a)
{
  int *ptr = &a->a[0];
  return *(volatile int *) (ptr - 1);
}

__attribute__ ((noinline)) int
foo (A arg)
{
  return goo (&arg);
}

int
main ()
{
  return foo (A ());
}

// { dg-output "ERROR: AddressSanitizer: stack-buffer-underflow on address.*(\n|\r\n|\r)" }
// { dg-output "READ of size . at.*" }
// { dg-output ".*'arg' \\(line 18\\) <== Memory access at offset \[0-9\]* underflows this variable.*" }