| // RUN: rm -rf %t | |
| // RUN: mkdir -p %t | |
| // RUN: split-file %s %t | |
| // DEFINE: %{emit-pch-action} = \ | |
| // DEFINE: %clang_cc1 -x c++ -emit-pch -o %t/header.pch %t/header.h | |
| // DEFINE: %{analyze-action} = \ | |
| // DEFINE: %clang_analyze_cc1 -include-pch %t/header.pch \ | |
| // DEFINE: -analyzer-checker=core,apiModeling,unix.StdCLibraryFunctions \ | |
| // DEFINE: -verify %t/main.cpp | |
| // RUN: %{emit-pch-action} -triple x86_64-apple-macosx10.15.0 | |
| // RUN: %{analyze-action} -triple x86_64-apple-macosx10.15.0 | |
| // RUN: %{emit-pch-action} | |
| // RUN: %{analyze-action} | |
| //--- header.h | |
| // Pre-compiled header | |
| int foo(); | |
| // Literal data for macro values will be null as they are defined in a PCH | |
| #define EOF -1 | |
| #define AT_FDCWD -2 | |
| //--- main.cpp | |
| // Source file | |
| // expected-no-diagnostics | |
| int test() { | |
| // we need a function call here to initiate erroneous routine | |
| return foo(); // no-crash | |
| } | |
| // Test that StdLibraryFunctionsChecker can obtain the definition of | |
| // AT_FDCWD even if it is from a PCH: | |
| int faccessat(int, const char *, int, int); | |
| void test_faccessat() { | |
| char fileSystemPath[10] = { 0 }; | |
| if (0 != faccessat(AT_FDCWD, fileSystemPath, 2, 0x0030)) {} | |
| } | |