LWG 3035. std::allocator's constructors should be constexpr
[official-gcc.git] / gcc / testsuite / gcc.dg / builtin-strncat-chk-1.c
blob851fb7418c1d8b39a52648d89a9a1a5ae0934c8d
1 /* Test whether buffer overflow warnings for __strncat_chk builtin
2 are emitted properly. */
3 /* { dg-do compile } */
4 /* { dg-options "-O2 -std=gnu99 -ftrack-macro-expansion=0" } */
6 extern void abort (void);
8 #include "../gcc.c-torture/execute/builtins/chk.h"
10 char buf1[20];
11 char *q;
13 void
14 test (int arg, ...)
16 char *p = &buf1[10];
18 *p = 0;
19 strncat (p, "abcdefg", 9);
20 *p = 0;
21 strncat (p, "abcdefghi", 9);
22 *p = 0;
23 strncat (p, "abcdefghij", 9);
24 *p = 0;
25 strncat (p, "abcdefghi", 10);
26 *p = 0;
27 strncat (p, "abcdefghij", 10); /* { dg-warning "writing 11 bytes into a region of size 10 overflows the destination" } */
28 *p = 0;
29 strncat (p, "abcdefgh", 11);
30 *p = 0;
31 strncat (p, "abcdefghijkl", 11); /* { dg-warning "specified bound 11 exceeds destination size 10" } */
32 *p = 0;
33 strncat (p, q, 9);
34 *p = 0;
35 strncat (p, q, 10); /* { dg-warning "specified bound 10 equals destination size" } */
36 *p = 0;
37 strncat (p, q, 11); /* { dg-warning "specified bound 11 exceeds destination size 10" } */