stack-protector.c revision f7a9da053f5bd6c18450c1796d953b42c3b7ad3a
1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 0 | FileCheck -check-prefix=NOSSP %s
2f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling// NOSSP: define void @test1(i8* %msg) #0 {
3a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 1 | FileCheck -check-prefix=WITHSSP %s
4f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling// WITHSSP: define void @test1(i8* %msg) #0 {
5a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 2 | FileCheck -check-prefix=SSPREQ %s
6f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling// SSPREQ: define void @test1(i8* %msg) #0 {
797e948e9c9cc2db9f0cdc13e708fe1bd8c6d05a2Dmitri Gribenko
897e948e9c9cc2db9f0cdc13e708fe1bd8c6d05a2Dmitri Gribenkotypedef __SIZE_TYPE__ size_t;
945483f7a1b3e57b4603b141bee80596b2d4dd443Bill Wendling
1076bee4b756badefda61ce867c757cc31b7afa12fMike Stumpint printf(const char * _Format, ...);
1197e948e9c9cc2db9f0cdc13e708fe1bd8c6d05a2Dmitri Gribenkosize_t strlen(const char *s);
1297e948e9c9cc2db9f0cdc13e708fe1bd8c6d05a2Dmitri Gribenkochar *strcpy(char *s1, const char *s2);
1345483f7a1b3e57b4603b141bee80596b2d4dd443Bill Wendling
1445483f7a1b3e57b4603b141bee80596b2d4dd443Bill Wendlingvoid test1(const char *msg) {
1545483f7a1b3e57b4603b141bee80596b2d4dd443Bill Wendling  char a[strlen(msg) + 1];
1645483f7a1b3e57b4603b141bee80596b2d4dd443Bill Wendling  strcpy(a, msg);
1745483f7a1b3e57b4603b141bee80596b2d4dd443Bill Wendling  printf("%s\n", a);
1845483f7a1b3e57b4603b141bee80596b2d4dd443Bill Wendling}
19f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling
20f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling// NOSSP: attributes #0 = { nounwind "target-features"={{.*}} }
21f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling// NOSSP: attributes #1 = { "target-features"={{.*}} }
22f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling// NOSSP: attributes #2 = { nounwind }
23f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling
24f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling// WITHSSP: attributes #0 = { nounwind ssp "target-features"={{.*}} }
25f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling// WITHSSP: attributes #1 = { "target-features"={{.*}} }
26f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling// WITHSSP: attributes #2 = { nounwind }
27f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling
28f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling// SSPREQ: attributes #0 = { nounwind sspreq "target-features"={{.*}} }
29f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling// SSPREQ: attributes #1 = { "target-features"={{.*}} }
30f7a9da053f5bd6c18450c1796d953b42c3b7ad3aBill Wendling// SSPREQ: attributes #2 = { nounwind }
31