forked from OSchip/llvm-project
179 lines
9.6 KiB
C
179 lines
9.6 KiB
C
|
// RUN: %clang_analyze_cc1 %s \
|
||
|
// RUN: -analyzer-checker=core \
|
||
|
// RUN: -analyzer-checker=apiModeling.StdCLibraryFunctions \
|
||
|
// RUN: -analyzer-config apiModeling.StdCLibraryFunctions:ModelPOSIX=true \
|
||
|
// RUN: -analyzer-config apiModeling.StdCLibraryFunctions:DisplayLoadedSummaries=true \
|
||
|
// RUN: -analyzer-checker=debug.ExprInspection \
|
||
|
// RUN: -analyzer-config eagerly-assume=false \
|
||
|
// RUN: -triple i686-unknown-linux 2>&1 | FileCheck %s
|
||
|
|
||
|
// CHECK: Loaded summary for: long a64l(const char *str64)
|
||
|
// CHECK: Loaded summary for: char *l64a(long value)
|
||
|
// CHECK: Loaded summary for: int access(const char *pathname, int amode)
|
||
|
// CHECK: Loaded summary for: int faccessat(int dirfd, const char *pathname, int mode, int flags)
|
||
|
// CHECK: Loaded summary for: int dup(int fildes)
|
||
|
// CHECK: Loaded summary for: int dup2(int fildes1, int filedes2)
|
||
|
// CHECK: Loaded summary for: int fdatasync(int fildes)
|
||
|
// CHECK: Loaded summary for: int fnmatch(const char *pattern, const char *string, int flags)
|
||
|
// CHECK: Loaded summary for: int fsync(int fildes)
|
||
|
// CHECK: Loaded summary for: int truncate(const char *path, off_t length)
|
||
|
// CHECK: Loaded summary for: int symlink(const char *oldpath, const char *newpath)
|
||
|
// CHECK: Loaded summary for: int symlinkat(const char *oldpath, int newdirfd, const char *newpath)
|
||
|
// CHECK: Loaded summary for: int lockf(int fd, int cmd, off_t len)
|
||
|
// CHECK: Loaded summary for: int creat(const char *pathname, mode_t mode)
|
||
|
// CHECK: Loaded summary for: unsigned int sleep(unsigned int seconds)
|
||
|
// CHECK: Loaded summary for: int dirfd(DIR *dirp)
|
||
|
// CHECK: Loaded summary for: unsigned int alarm(unsigned int seconds)
|
||
|
// CHECK: Loaded summary for: int closedir(DIR *dir)
|
||
|
// CHECK: Loaded summary for: char *strdup(const char *s)
|
||
|
// CHECK: Loaded summary for: char *strndup(const char *s, size_t n)
|
||
|
// CHECK: Loaded summary for: int mkstemp(char *template)
|
||
|
// CHECK: Loaded summary for: char *mkdtemp(char *template)
|
||
|
// CHECK: Loaded summary for: char *getcwd(char *buf, size_t size)
|
||
|
// CHECK: Loaded summary for: int mkdir(const char *pathname, mode_t mode)
|
||
|
// CHECK: Loaded summary for: int mkdirat(int dirfd, const char *pathname, mode_t mode)
|
||
|
// CHECK: Loaded summary for: int mknod(const char *pathname, mode_t mode, dev_t dev)
|
||
|
// CHECK: Loaded summary for: int mknodat(int dirfd, const char *pathname, mode_t mode, dev_t dev)
|
||
|
// CHECK: Loaded summary for: int chmod(const char *path, mode_t mode)
|
||
|
// CHECK: Loaded summary for: int fchmodat(int dirfd, const char *pathname, mode_t mode, int flags)
|
||
|
// CHECK: Loaded summary for: int fchmod(int fildes, mode_t mode)
|
||
|
// CHECK: Loaded summary for: int fchownat(int dirfd, const char *pathname, uid_t owner, gid_t group, int flags)
|
||
|
// CHECK: Loaded summary for: int chown(const char *path, uid_t owner, gid_t group)
|
||
|
// CHECK: Loaded summary for: int lchown(const char *path, uid_t owner, gid_t group)
|
||
|
// CHECK: Loaded summary for: int fchown(int fildes, uid_t owner, gid_t group)
|
||
|
// CHECK: Loaded summary for: int rmdir(const char *pathname)
|
||
|
// CHECK: Loaded summary for: int chdir(const char *path)
|
||
|
// CHECK: Loaded summary for: int link(const char *oldpath, const char *newpath)
|
||
|
// CHECK: Loaded summary for: int linkat(int fd1, const char *path1, int fd2, const char *path2, int flag)
|
||
|
// CHECK: Loaded summary for: int unlink(const char *pathname)
|
||
|
// CHECK: Loaded summary for: int unlinkat(int fd, const char *path, int flag)
|
||
|
// CHECK: Loaded summary for: int fstat(int fd, struct stat *statbuf)
|
||
|
// CHECK: Loaded summary for: int stat(const char *restrict path, struct stat *restrict buf)
|
||
|
// CHECK: Loaded summary for: int lstat(const char *restrict path, struct stat *restrict buf)
|
||
|
// CHECK: Loaded summary for: int fstatat(int fd, const char *restrict path, struct stat *restrict buf, int flag)
|
||
|
// CHECK: Loaded summary for: DIR *opendir(const char *name)
|
||
|
// CHECK: Loaded summary for: DIR *fdopendir(int fd)
|
||
|
// CHECK: Loaded summary for: int isatty(int fildes)
|
||
|
// CHECK: Loaded summary for: FILE *popen(const char *command, const char *type)
|
||
|
// CHECK: Loaded summary for: int pclose(FILE *stream)
|
||
|
// CHECK: Loaded summary for: int close(int fildes)
|
||
|
// CHECK: Loaded summary for: long fpathconf(int fildes, int name)
|
||
|
// CHECK: Loaded summary for: long pathconf(const char *path, int name)
|
||
|
// CHECK: Loaded summary for: FILE *fdopen(int fd, const char *mode)
|
||
|
// CHECK: Loaded summary for: void rewinddir(DIR *dir)
|
||
|
// CHECK: Loaded summary for: void seekdir(DIR *dirp, long loc)
|
||
|
// CHECK: Loaded summary for: int rand_r(unsigned int *seedp)
|
||
|
// CHECK: Loaded summary for: int strcasecmp(const char *s1, const char *s2)
|
||
|
// CHECK: Loaded summary for: int strncasecmp(const char *s1, const char *s2, size_t n)
|
||
|
// CHECK: Loaded summary for: int fileno(FILE *stream)
|
||
|
// CHECK: Loaded summary for: int fseeko(FILE *stream, off_t offset, int whence)
|
||
|
// CHECK: Loaded summary for: off_t ftello(FILE *stream)
|
||
|
// CHECK: Loaded summary for: void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset)
|
||
|
// CHECK: Loaded summary for: void *mmap64(void *addr, size_t length, int prot, int flags, int fd, off64_t offset)
|
||
|
// CHECK: Loaded summary for: int pipe(int fildes[2])
|
||
|
// CHECK: Loaded summary for: off_t lseek(int fildes, off_t offset, int whence)
|
||
|
// CHECK: Loaded summary for: ssize_t readlink(const char *restrict path, char *restrict buf, size_t bufsize)
|
||
|
// CHECK: Loaded summary for: ssize_t readlinkat(int fd, const char *restrict path, char *restrict buf, size_t bufsize)
|
||
|
// CHECK: Loaded summary for: int renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath)
|
||
|
// CHECK: Loaded summary for: char *realpath(const char *restrict file_name, char *restrict resolved_name)
|
||
|
// CHECK: Loaded summary for: int execv(const char *path, char *const argv[])
|
||
|
// CHECK: Loaded summary for: int execvp(const char *file, char *const argv[])
|
||
|
// CHECK: Loaded summary for: int getopt(int argc, char *const argv[], const char *optstring)
|
||
|
|
||
|
long a64l(const char *str64);
|
||
|
char *l64a(long value);
|
||
|
int access(const char *pathname, int amode);
|
||
|
int faccessat(int dirfd, const char *pathname, int mode, int flags);
|
||
|
int dup(int fildes);
|
||
|
int dup2(int fildes1, int filedes2);
|
||
|
int fdatasync(int fildes);
|
||
|
int fnmatch(const char *pattern, const char *string, int flags);
|
||
|
int fsync(int fildes);
|
||
|
typedef unsigned long off_t;
|
||
|
int truncate(const char *path, off_t length);
|
||
|
int symlink(const char *oldpath, const char *newpath);
|
||
|
int symlinkat(const char *oldpath, int newdirfd, const char *newpath);
|
||
|
int lockf(int fd, int cmd, off_t len);
|
||
|
typedef unsigned mode_t;
|
||
|
int creat(const char *pathname, mode_t mode);
|
||
|
unsigned int sleep(unsigned int seconds);
|
||
|
typedef struct {
|
||
|
int a;
|
||
|
} DIR;
|
||
|
int dirfd(DIR *dirp);
|
||
|
unsigned int alarm(unsigned int seconds);
|
||
|
int closedir(DIR *dir);
|
||
|
char *strdup(const char *s);
|
||
|
typedef typeof(sizeof(int)) size_t;
|
||
|
char *strndup(const char *s, size_t n);
|
||
|
/*FIXME How to define wchar_t in the test?*/
|
||
|
/*typedef __wchar_t wchar_t;*/
|
||
|
/*wchar_t *wcsdup(const wchar_t *s);*/
|
||
|
int mkstemp(char *template);
|
||
|
char *mkdtemp(char *template);
|
||
|
char *getcwd(char *buf, size_t size);
|
||
|
int mkdir(const char *pathname, mode_t mode);
|
||
|
int mkdirat(int dirfd, const char *pathname, mode_t mode);
|
||
|
typedef int dev_t;
|
||
|
int mknod(const char *pathname, mode_t mode, dev_t dev);
|
||
|
int mknodat(int dirfd, const char *pathname, mode_t mode, dev_t dev);
|
||
|
int chmod(const char *path, mode_t mode);
|
||
|
int fchmodat(int dirfd, const char *pathname, mode_t mode, int flags);
|
||
|
int fchmod(int fildes, mode_t mode);
|
||
|
typedef int uid_t;
|
||
|
typedef int gid_t;
|
||
|
int fchownat(int dirfd, const char *pathname, uid_t owner, gid_t group, int flags);
|
||
|
int chown(const char *path, uid_t owner, gid_t group);
|
||
|
int lchown(const char *path, uid_t owner, gid_t group);
|
||
|
int fchown(int fildes, uid_t owner, gid_t group);
|
||
|
int rmdir(const char *pathname);
|
||
|
int chdir(const char *path);
|
||
|
int link(const char *oldpath, const char *newpath);
|
||
|
int linkat(int fd1, const char *path1, int fd2, const char *path2, int flag);
|
||
|
int unlink(const char *pathname);
|
||
|
int unlinkat(int fd, const char *path, int flag);
|
||
|
struct stat;
|
||
|
int fstat(int fd, struct stat *statbuf);
|
||
|
int stat(const char *restrict path, struct stat *restrict buf);
|
||
|
int lstat(const char *restrict path, struct stat *restrict buf);
|
||
|
int fstatat(int fd, const char *restrict path, struct stat *restrict buf, int flag);
|
||
|
DIR *opendir(const char *name);
|
||
|
DIR *fdopendir(int fd);
|
||
|
int isatty(int fildes);
|
||
|
typedef struct {
|
||
|
int x;
|
||
|
} FILE;
|
||
|
FILE *popen(const char *command, const char *type);
|
||
|
int pclose(FILE *stream);
|
||
|
int close(int fildes);
|
||
|
long fpathconf(int fildes, int name);
|
||
|
long pathconf(const char *path, int name);
|
||
|
FILE *fdopen(int fd, const char *mode);
|
||
|
void rewinddir(DIR *dir);
|
||
|
void seekdir(DIR *dirp, long loc);
|
||
|
int rand_r(unsigned int *seedp);
|
||
|
int strcasecmp(const char *s1, const char *s2);
|
||
|
int strncasecmp(const char *s1, const char *s2, size_t n);
|
||
|
int fileno(FILE *stream);
|
||
|
int fseeko(FILE *stream, off_t offset, int whence);
|
||
|
off_t ftello(FILE *stream);
|
||
|
void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
|
||
|
typedef off_t off64_t;
|
||
|
void *mmap64(void *addr, size_t length, int prot, int flags, int fd, off64_t offset);
|
||
|
int pipe(int fildes[2]);
|
||
|
off_t lseek(int fildes, off_t offset, int whence);
|
||
|
typedef size_t ssize_t;
|
||
|
ssize_t readlink(const char *restrict path, char *restrict buf, size_t bufsize);
|
||
|
ssize_t readlinkat(int fd, const char *restrict path, char *restrict buf, size_t bufsize);
|
||
|
int renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath);
|
||
|
char *realpath(const char *restrict file_name, char *restrict resolved_name);
|
||
|
int execv(const char *path, char *const argv[]);
|
||
|
int execvp(const char *file, char *const argv[]);
|
||
|
int getopt(int argc, char *const argv[], const char *optstring);
|
||
|
|
||
|
// Must have at least one call expression to initialize the summary map.
|
||
|
int bar(void);
|
||
|
void foo() {
|
||
|
bar();
|
||
|
}
|