brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 8aa3702 Raw
38 lines · cpp
1// RUN: %clang_analyze_cc1 %s \2// RUN:   -analyzer-checker=core \3// RUN:   -analyzer-checker=unix.StdCLibraryFunctions \4// RUN:   -analyzer-config unix.StdCLibraryFunctions:ModelPOSIX=true \5// RUN:   -analyzer-config unix.StdCLibraryFunctions:DisplayLoadedSummaries=true \6// RUN:   -analyzer-checker=debug.ExprInspection \7// RUN:   -analyzer-config eagerly-assume=false \8// RUN:   -triple i686-unknown-linux 2>&1 | FileCheck %s9 10// We test here that functions from socket.h are added when sockaddr is not a11// transparent union of other sockaddr_ pointers. This is the case in C++.12 13// CHECK: Loaded summary for: int accept(int socket, struct sockaddr *address, socklen_t *address_len)14// CHECK: Loaded summary for: int bind(int socket, const struct sockaddr *address, socklen_t address_len)15// CHECK: Loaded summary for: int getpeername(int socket, struct sockaddr *address, socklen_t *address_len)16// CHECK: Loaded summary for: int getsockname(int socket, struct sockaddr *address, socklen_t *address_len)17// CHECK: Loaded summary for: int connect(int socket, const struct sockaddr *address, socklen_t address_len)18// CHECK: Loaded summary for: ssize_t recvfrom(int socket, void *buffer, size_t length, int flags, struct sockaddr *address, socklen_t *address_len)19// CHECK: Loaded summary for: ssize_t sendto(int socket, const void *message, size_t length, int flags, const struct sockaddr *dest_addr, socklen_t dest_len)20 21struct sockaddr;22using socklen_t = unsigned;23int accept(int socket, struct sockaddr *address, socklen_t *address_len);24int bind(int socket, const struct sockaddr *address, socklen_t address_len);25int getpeername(int socket, struct sockaddr *address, socklen_t *address_len);26int getsockname(int socket, struct sockaddr *address, socklen_t *address_len);27int connect(int socket, const struct sockaddr *address, socklen_t address_len);28typedef decltype(sizeof(int)) size_t;29typedef size_t ssize_t;30ssize_t recvfrom(int socket, void *buffer, size_t length, int flags, struct sockaddr *address, socklen_t *address_len);31ssize_t sendto(int socket, const void *message, size_t length, int flags, const struct sockaddr *dest_addr, socklen_t dest_len);32 33// Must have at least one call expression to initialize the summary map.34int bar(void);35void foo() {36  bar();37}38