| // 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)) {} |
| } |
| |