Home | History | Annotate | Download | only in Inputs
      1 // Like the compiler, the static analyzer treats some functions differently if
      2 // they come from a system header -- for example, it is assumed that system
      3 // functions do not arbitrarily free() their parameters, and that some bugs
      4 // found in system headers cannot be fixed by the user and should be
      5 // suppressed.
      6 #pragma clang system_header
      7 
      8 #ifdef __cplusplus
      9 #define restrict /*restrict*/
     10 #endif
     11 
     12 typedef struct _FILE FILE;
     13 extern FILE *stdin;
     14 extern FILE *stdout;
     15 extern FILE *stderr;
     16 // Include a variant of standard streams that occur in the pre-processed file.
     17 extern FILE *__stdinp;
     18 extern FILE *__stdoutp;
     19 extern FILE *__stderrp;
     20 
     21 int scanf(const char *restrict format, ...);
     22 int fscanf(FILE *restrict, const char *restrict, ...);
     23 int printf(const char *restrict format, ...);
     24 int fprintf(FILE *restrict, const char *restrict, ...);
     25 int getchar(void);
     26 
     27 // Note, on some platforms errno macro gets replaced with a function call.
     28 extern int errno;
     29 
     30 typedef __typeof(sizeof(int)) size_t;
     31 
     32 size_t strlen(const char *);
     33 
     34 char *strcpy(char *restrict, const char *restrict);
     35 void *memcpy(void *dst, const void *src, size_t n);
     36 
     37 typedef unsigned long __darwin_pthread_key_t;
     38 typedef __darwin_pthread_key_t pthread_key_t;
     39 int pthread_setspecific(pthread_key_t, const void *);
     40 
     41 typedef long long __int64_t;
     42 typedef __int64_t __darwin_off_t;
     43 typedef __darwin_off_t fpos_t;
     44 
     45 void setbuf(FILE * restrict, char * restrict);
     46 int setvbuf(FILE * restrict, char * restrict, int, size_t);
     47 
     48 FILE *fopen(const char * restrict, const char * restrict);
     49 int fclose(FILE *);
     50 FILE *funopen(const void *,
     51                  int (*)(void *, char *, int),
     52                  int (*)(void *, const char *, int),
     53                  fpos_t (*)(void *, fpos_t, int),
     54                  int (*)(void *));
     55 
     56 int sqlite3_bind_text_my(int, const char*, int n, void(*)(void*));
     57 
     58 typedef void (*freeCallback) (void*);
     59 typedef struct {
     60   int i;
     61   freeCallback fc;
     62 } StWithCallback;
     63 
     64 int dealocateMemWhenDoneByVal(void*, StWithCallback);
     65 int dealocateMemWhenDoneByRef(StWithCallback*, const void*);
     66 
     67 typedef struct CGContext *CGContextRef;
     68 CGContextRef CGBitmapContextCreate(void *data/*, size_t width, size_t height,
     69                                    size_t bitsPerComponent, size_t bytesPerRow,
     70                                    CGColorSpaceRef space,
     71                                    CGBitmapInfo bitmapInfo*/);
     72 void *CGBitmapContextGetData(CGContextRef context);
     73 
     74 // Include xpc.
     75 typedef struct _xpc_connection_s * xpc_connection_t;
     76 typedef void (*xpc_finalizer_t)(void *value);
     77 void xpc_connection_set_context(xpc_connection_t connection, void *context);
     78 void xpc_connection_set_finalizer_f(xpc_connection_t connection, xpc_finalizer_t finalizer);
     79 void xpc_connection_resume(xpc_connection_t connection);
     80 
     81 //The following are fake system header functions for generic testing.
     82 void fakeSystemHeaderCallInt(int *);
     83 void fakeSystemHeaderCallIntPtr(int **);
     84 
     85 // Some data strauctures may hold onto the pointer and free it later.
     86 void fake_insque(void *, void *);
     87 typedef struct fake_rb_tree { void *opaque[8]; } fake_rb_tree_t;
     88 void fake_rb_tree_init(fake_rb_tree_t *, const void *);
     89 void *fake_rb_tree_insert_node(fake_rb_tree_t *, void *);
     90 
     91 typedef struct __SomeStruct {
     92   char * p;
     93 } SomeStruct;
     94 void fakeSystemHeaderCall(SomeStruct *);
     95 
     96 typedef int pid_t;
     97 pid_t fork(void);
     98 pid_t vfork(void);
     99 int execl(const char *path, const char *arg, ...);
    100 
    101 void exit(int status) __attribute__ ((__noreturn__));
    102 void _exit(int status) __attribute__ ((__noreturn__));
    103 void _Exit(int status) __attribute__ ((__noreturn__));
    104 
    105