// 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 __typeof(sizeof(int)) size_t; typedef struct _FILE { 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" ); size_t fread(void *buffer, size_t size, size_t count, FILE *stream); int fgetc(FILE *stream); int fclose(FILE *); void exit(int); // The following is a fake system header function typedef struct __FileStruct { FILE * p; } FileStruct; void fakeSystemHeaderCall(FileStruct *);