stack-protector.c revision 4967a710c84587c654b56c828382219c3937dacb
1// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 0 | FileCheck -check-prefix=DEF -check-prefix=NOSSP %s 2// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 1 | FileCheck -check-prefix=DEF -check-prefix=SSP %s 3// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 2 | FileCheck -check-prefix=DEF -check-prefix=SSPSTRONG %s 4// RUN: %clang_cc1 -emit-llvm -o - %s -stack-protector 3 | FileCheck -check-prefix=DEF -check-prefix=SSPREQ %s 5 6// RUN: %clang_cc1 -emit-llvm -o - %s -fsanitize=safe-stack | FileCheck -check-prefix=DEF -check-prefix=SAFESTACK-NOSSP %s 7// RUN: %clang_cc1 -emit-llvm -o - %s -fsanitize=safe-stack -stack-protector 0 | FileCheck -check-prefix=DEF -check-prefix=SAFESTACK-NOSSP %s 8// RUN: %clang_cc1 -emit-llvm -o - %s -fsanitize=safe-stack -stack-protector 1 | FileCheck -check-prefix=DEF -check-prefix=SAFESTACK-SSP %s 9// RUN: %clang_cc1 -emit-llvm -o - %s -fsanitize=safe-stack -stack-protector 2 | FileCheck -check-prefix=DEF -check-prefix=SAFESTACK-SSPSTRONG %s 10// RUN: %clang_cc1 -emit-llvm -o - %s -fsanitize=safe-stack -stack-protector 3 | FileCheck -check-prefix=DEF -check-prefix=SAFESTACK-SSPREQ %s 11 12typedef __SIZE_TYPE__ size_t; 13 14int printf(const char * _Format, ...); 15size_t strlen(const char *s); 16char *strcpy(char *s1, const char *s2); 17 18// DEF: define {{.*}}void @test1(i8* %msg) #[[A:.*]] { 19void test1(const char *msg) { 20 char a[strlen(msg) + 1]; 21 strcpy(a, msg); 22 printf("%s\n", a); 23} 24 25// NOSSP-NOT: attributes #[[A]] = {{.*}} ssp 26// SSP: attributes #[[A]] = {{.*}} ssp{{ }} 27// SSPSTRONG: attributes #[[A]] = {{.*}} sspstrong 28// SSPREQ: attributes #[[A]] = {{.*}} sspreq 29 30// SAFESTACK-NOSSP: attributes #[[A]] = {{.*}} safestack 31// SAFESTACK-NOSSP-NOT: ssp 32 33// SAFESTACK-SSP: attributes #[[A]] = {{.*}} safestack ssp{{ }} 34// SAFESTACK-SSPSTRONG: attributes #[[A]] = {{.*}} safestack sspstrong 35// SAFESTACK-SSPREQ: attributes #[[A]] = {{.*}} safestack sspreq 36