1fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner// Like the compiler, the static analyzer treats some functions differently if 2fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner// they come from a system header -- for example, it is assumed that system 3fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner// functions do not arbitrarily free() their parameters, and that some bugs 4fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner// found in system headers cannot be fixed by the user and should be 5fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner// suppressed. 6fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner#pragma clang system_header 7fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner 8fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner#ifdef __cplusplus 9fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner#define restrict /*restrict*/ 10fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner#endif 11fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner 12fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnertypedef struct _FILE FILE; 13fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnerextern FILE *stdin; 14fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnerextern FILE *stdout; 15fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnerextern FILE *stderr; 16fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner// Include a variant of standard streams that occur in the pre-processed file. 17fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnerextern FILE *__stdinp; 18fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnerextern FILE *__stdoutp; 19fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnerextern FILE *__stderrp; 20fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner 213c3fe462f7978b429ecdd71750c26be25c3d1335Chris Lattnerint scanf(const char *restrict format, ...); 22551ccae044b0ff658fe629dd67edd5ffe75d10e8Reid Spencerint fscanf(FILE *restrict, const char *restrict, ...); 2338135af219c48a8626d6af34a92e7e8bb957c81fChris Lattnerint printf(const char *restrict format, ...); 24c4d3b918165461bc6f5d395bca8d9d9d8a84413dAlkis Evlogimenosint fprintf(FILE *restrict, const char *restrict, ...); 25abf295fc6cfb438617e8b105022ce506f56674d8Chris Lattnerint getchar(void); 26abf295fc6cfb438617e8b105022ce506f56674d8Chris Lattner 27fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner// Note, on some platforms errno macro gets replaced with a function call. 28fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnerextern int errno; 29fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner 30fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnertypedef __typeof(sizeof(int)) size_t; 31aa14147cd6401e9c66dc9f81d1a47a90a5477159Chris Lattner 32aa14147cd6401e9c66dc9f81d1a47a90a5477159Chris Lattnersize_t strlen(const char *); 33aa14147cd6401e9c66dc9f81d1a47a90a5477159Chris Lattner 34aa14147cd6401e9c66dc9f81d1a47a90a5477159Chris Lattnerchar *strcpy(char *restrict, const char *restrict); 35fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner 36ebd7e6c54dce754a88d8f38df4ac2f388f35435eChris Lattnertypedef unsigned long __darwin_pthread_key_t; 37ebd7e6c54dce754a88d8f38df4ac2f388f35435eChris Lattnertypedef __darwin_pthread_key_t pthread_key_t; 38edf128a7fa90f2b0b7ee24741a04a7ae1ecd6f7eMisha Brukmanint pthread_setspecific(pthread_key_t, const void *); 39fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner 40fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnertypedef long long __int64_t; 41fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnertypedef __int64_t __darwin_off_t; 42fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnertypedef __darwin_off_t fpos_t; 43aa14147cd6401e9c66dc9f81d1a47a90a5477159Chris Lattner 44fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnervoid setbuf(FILE * restrict, char * restrict); 45fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnerint setvbuf(FILE * restrict, char * restrict, int, size_t); 46bae74d9192f04d8185c7b4580565d56cc4ef53f2Chris Lattner 47bae74d9192f04d8185c7b4580565d56cc4ef53f2Chris LattnerFILE *fopen(const char * restrict, const char * restrict); 48bae74d9192f04d8185c7b4580565d56cc4ef53f2Chris Lattnerint fclose(FILE *); 49fb449b9ea5a37fb411aee7d42f6a76119602288dChris LattnerFILE *funopen(const void *, 50fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner int (*)(void *, char *, int), 51fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner int (*)(void *, const char *, int), 52fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner fpos_t (*)(void *, fpos_t, int), 53fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner int (*)(void *)); 54fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner 55fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnerint sqlite3_bind_text_my(int, const char*, int n, void(*)(void*)); 56fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner 57fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnertypedef void (*freeCallback) (void*); 58fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnertypedef struct { 59fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner int i; 60fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner freeCallback fc; 61fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner} StWithCallback; 62fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner 63bae74d9192f04d8185c7b4580565d56cc4ef53f2Chris Lattnerint dealocateMemWhenDoneByVal(void*, StWithCallback); 64bae74d9192f04d8185c7b4580565d56cc4ef53f2Chris Lattnerint dealocateMemWhenDoneByRef(StWithCallback*, const void*); 65bae74d9192f04d8185c7b4580565d56cc4ef53f2Chris Lattner 66bae74d9192f04d8185c7b4580565d56cc4ef53f2Chris Lattnertypedef struct CGContext *CGContextRef; 67bae74d9192f04d8185c7b4580565d56cc4ef53f2Chris LattnerCGContextRef CGBitmapContextCreate(void *data/*, size_t width, size_t height, 68bae74d9192f04d8185c7b4580565d56cc4ef53f2Chris Lattner size_t bitsPerComponent, size_t bytesPerRow, 69bae74d9192f04d8185c7b4580565d56cc4ef53f2Chris Lattner CGColorSpaceRef space, 70bae74d9192f04d8185c7b4580565d56cc4ef53f2Chris Lattner CGBitmapInfo bitmapInfo*/); 71bae74d9192f04d8185c7b4580565d56cc4ef53f2Chris Lattnervoid *CGBitmapContextGetData(CGContextRef context); 728c68b6a226ce46b35eafda972e04bf53128c2615Chris Lattner 73f542649f1b374b1bae845e4e4f6d1e82f90a9e31Chris Lattner// Include xpc. 74fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnertypedef struct _xpc_connection_s * xpc_connection_t; 75aa14147cd6401e9c66dc9f81d1a47a90a5477159Chris Lattnertypedef void (*xpc_finalizer_t)(void *value); 76fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnervoid xpc_connection_set_context(xpc_connection_t connection, void *context); 77aa14147cd6401e9c66dc9f81d1a47a90a5477159Chris Lattnervoid xpc_connection_set_finalizer_f(xpc_connection_t connection, xpc_finalizer_t finalizer); 78ead1b3f0bb70cd9c1ba7a853a79070cb47db9344Chris Lattnervoid xpc_connection_resume(xpc_connection_t connection); 79ead1b3f0bb70cd9c1ba7a853a79070cb47db9344Chris Lattner 80ead1b3f0bb70cd9c1ba7a853a79070cb47db9344Chris Lattner//The following are fake system header functions for generic testing. 818c68b6a226ce46b35eafda972e04bf53128c2615Chris Lattnervoid fakeSystemHeaderCallInt(int *); 828c68b6a226ce46b35eafda972e04bf53128c2615Chris Lattnervoid fakeSystemHeaderCallIntPtr(int **); 838c68b6a226ce46b35eafda972e04bf53128c2615Chris Lattner 84aa14147cd6401e9c66dc9f81d1a47a90a5477159Chris Lattnertypedef struct __SomeStruct { 85aa14147cd6401e9c66dc9f81d1a47a90a5477159Chris Lattner char * p; 86fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattner} SomeStruct; 87fb449b9ea5a37fb411aee7d42f6a76119602288dChris Lattnervoid fakeSystemHeaderCall(SomeStruct *); 889fddc12c9b16a5526b0ee2e6f1da252f7974d7d0Chris Lattner