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