view gcc/testsuite/c-c++-common/asan/misalign-2.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 1830386684a0
line wrap: on
line source

/* { dg-do run { target { ilp32 || lp64 } } } */
/* { dg-skip-if "" { *-*-* }  { "*" } { "-O2" } } */
/* { dg-additional-options "-fno-omit-frame-pointer" { target *-*-darwin* } } */
/* { dg-shouldfail "asan" } */

struct S { int i; } __attribute__ ((packed));

__attribute__((noinline, noclone)) int
foo (struct S *s)
{
  return s->i;
}

__attribute__((noinline, noclone)) int
bar (int *s)
{
  return *s;
}

__attribute__((noinline, noclone)) struct S
baz (struct S *s)
{
  return *s;
}

int
main ()
{
  struct T { char a[3]; struct S b[3]; char c; } t;
  int v = 5;
  struct S *p = t.b;
  asm volatile ("" : "+rm" (p));
  p += 3;
  if (bar (&v) != 5) __builtin_abort ();
  volatile struct S w = baz (p);
  return 0;
}

/* { dg-output "ERROR: AddressSanitizer:\[^\n\r]*on address\[^\n\r]*" } */
/* { dg-output "0x\[0-9a-f\]+ at pc 0x\[0-9a-f\]+ bp 0x\[0-9a-f\]+ sp 0x\[0-9a-f\]+\[^\n\r]*(\n|\r\n|\r)" } */
/* { dg-output "\[^\n\r]*READ of size 4 at 0x\[0-9a-f\]+ thread T0\[^\n\r]*(\n|\r\n|\r)" } */
/* { dg-output "    #0 0x\[0-9a-f\]+ +(in _*baz(\[^\n\r]*misalign-2.c:2\[23]|\[^\n\r]*:0|\[^\n\r]*\\+0x\[0-9a-z\]*)|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */
/* { dg-output "    #1 0x\[0-9a-f\]+ +(in _*main (\[^\n\r]*misalign-2.c:3\[45]|\[^\n\r]*:0|\[^\n\r]*\\+0x\[0-9a-z\]*)|\[(\]).*(\n|\r\n|\r)" } */