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