// Like the compiler, the static analyzer treats some functions differently if // they come from a system header -- for example, it is assumed that system // functions do not arbitrarily free() their parameters, and that some bugs // found in system headers cannot be fixed by the user and should be // suppressed. #pragma clang system_header typedef struct __sFILE { unsigned char *_p; } FILE; FILE *fopen(const char * restrict, const char * restrict) __asm("_" "fopen" ); int fputc(int, FILE *); int fputs(const char * restrict, FILE * restrict) __asm("_" "fputs" ); int fclose(FILE *); void exit(int); // The following is a fake system header function typedef struct __FileStruct { FILE * p; } FileStruct; void fakeSystemHeaderCall(FileStruct *);