1  /* { dg-do run } */
       2  /* { dg-options "-fno-builtin-memcmp" } */
       3  /* { dg-additional-options "-D_FORTIFY_SOURCE=0 -gdwarf-3" { target *-*-darwin* } } */
       4  /* { dg-shouldfail "asan" } */
       5  
       6  #include <string.h>
       7  
       8  volatile int one = 1;
       9  
      10  int
      11  main ()
      12  {
      13    char a1[] = {(char)one, 2, 3, 4};
      14    char a2[] = {1, (char)(2*one), 3, 4};
      15    int res = memcmp (a1, a2, 5 + one);
      16    return res;
      17  }
      18  
      19  /* { dg-output "ERROR: AddressSanitizer: stack-buffer-overflow.*(\n|\r\n|\r)" } */
      20  /* { dg-output "    #\[1-9\] 0x\[0-9a-f\]+ +(in _*(interceptor_|wrap_|)memcmp|\[(\])\[^\n\r]*(\n|\r\n|\r)" { target { ! *-*-darwin* } } } */
      21  /* { dg-output "    #\[2-9\] 0x\[0-9a-f\]+ +(in _*main|\[(\])\[^\n\r]*(\n|\r\n|\r)" { target { ! *-*-darwin* } } } */
      22  
      23  /* { dg-output "    #\[0-9\] 0x\[0-9a-f\]+ +(in MemcmpInterceptorCommon|\[(\])\[^\n\r]*(\n|\r\n|\r)" { target *-*-darwin* } } */
      24  /* { dg-output "    #\[1-9\] 0x\[0-9a-f\]+ +(in wrap_(memcmp|bcmp)|\[(\])\[^\n\r]*(\n|\r\n|\r)" { target *-*-darwin* } } */