156b038f8SEduard Zingerman // REQUIRES: bpf-registered-target 256b038f8SEduard Zingerman 3*7e6a5fe1SDavid Spickett // RUN: %clang -target bpf -S -emit-llvm -o - %s -fno-stack-protector 2>&1 \ 4*7e6a5fe1SDavid Spickett // RUN: | FileCheck -check-prefix=OFF -check-prefix=COMMON %s 556b038f8SEduard Zingerman 656b038f8SEduard Zingerman // RUN: %clang -target bpf -S -emit-llvm -o - %s -fstack-protector 2>&1 \ 7*7e6a5fe1SDavid Spickett // RUN: | FileCheck -check-prefix=ON -check-prefix=COMMON -check-prefix=WARNING %s 856b038f8SEduard Zingerman 956b038f8SEduard Zingerman // RUN: %clang -target bpf -S -emit-llvm -o - %s -fstack-protector-all 2>&1 \ 10*7e6a5fe1SDavid Spickett // RUN: | FileCheck -check-prefix=ALL -check-prefix=COMMON -check-prefix=WARNING %s 1156b038f8SEduard Zingerman 1256b038f8SEduard Zingerman // RUN: %clang -target bpf -S -emit-llvm -o - %s -fstack-protector-strong 2>&1 \ 13*7e6a5fe1SDavid Spickett // RUN: | FileCheck -check-prefix=STRONG -check-prefix=COMMON -check-prefix=WARNING %s 1456b038f8SEduard Zingerman 1556b038f8SEduard Zingerman typedef __SIZE_TYPE__ size_t; 1656b038f8SEduard Zingerman 1756b038f8SEduard Zingerman int printf(const char * _Format, ...); 1856b038f8SEduard Zingerman size_t strlen(const char *s); 1956b038f8SEduard Zingerman char *strcpy(char *s1, const char *s2); 2056b038f8SEduard Zingerman 2156b038f8SEduard Zingerman // OFF-NOT: warning 2256b038f8SEduard Zingerman // ON: warning: ignoring '-fstack-protector' 2356b038f8SEduard Zingerman // ALL: warning: ignoring '-fstack-protector-all' 2456b038f8SEduard Zingerman // STRONG: warning: ignoring '-fstack-protector-strong' 25*7e6a5fe1SDavid Spickett // WARNING-SAME: option as it is not currently supported for target 'bpf' 2656b038f8SEduard Zingerman 27183d0750SYonghong Song // COMMON: define {{.*}}void @test1(ptr noundef %{{[0-9a-z]+}}) #[[A:.*]] { test1(const char * msg)2856b038f8SEduard Zingermanvoid test1(const char *msg) { 2956b038f8SEduard Zingerman char a[strlen(msg) + 1]; 3056b038f8SEduard Zingerman strcpy(a, msg); 3156b038f8SEduard Zingerman printf("%s\n", a); 3256b038f8SEduard Zingerman } 3356b038f8SEduard Zingerman 3456b038f8SEduard Zingerman // COMMON-NOT: attributes #[[A]] = {{.*}} ssp 35