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