Jordan Rose | b54cfa3 | 2013-02-01 19:50:01 +0000 | [diff] [blame] | 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. |
Anna Zaks | 2ed5125 | 2012-11-06 04:20:57 +0000 | [diff] [blame] | 6 | #pragma clang system_header |
| 7 | |
| 8 | typedef struct __sFILE { |
| 9 | unsigned char *_p; |
| 10 | } FILE; |
| 11 | FILE *fopen(const char * restrict, const char * restrict) __asm("_" "fopen" ); |
| 12 | int fputc(int, FILE *); |
| 13 | int fputs(const char * restrict, FILE * restrict) __asm("_" "fputs" ); |
| 14 | int fclose(FILE *); |
| 15 | void exit(int); |
Anna Zaks | acdc13c | 2013-02-07 23:05:43 +0000 | [diff] [blame] | 16 | |
| 17 | // The following is a fake system header function |
| 18 | typedef struct __FileStruct { |
| 19 | FILE * p; |
| 20 | } FileStruct; |
| 21 | void fakeSystemHeaderCall(FileStruct *); |