1 | // Like the compiler, the static analyzer treats some functions differently if |
2 | // they come from a system header -- for example, it is assumed that system |
3 | // functions do not arbitrarily free() their parameters, and that some bugs |
4 | // found in system headers cannot be fixed by the user and should be |
5 | // suppressed. |
6 | #pragma clang system_header |
7 | |
8 | typedef struct __sFILE { |
9 | unsigned char *_p; |
10 | } FILE; |
11 | FILE *fopen(const char * restrict, const char * restrict) __asm("_" "fopen" ); |
12 | int fputc(int, FILE *); |
13 | int fputs(const char * restrict, FILE * restrict) __asm("_" "fputs" ); |
14 | int fclose(FILE *); |
15 | void exit(int); |
16 | |
17 | // The following is a fake system header function |
18 | typedef struct __FileStruct { |
19 | FILE * p; |
20 | } FileStruct; |
21 | void fakeSystemHeaderCall(FileStruct *); |
22 | |