[PATCH] D79433: [analyzer] StdLibraryFunctionsChecker: Add summaries for POSIX
Gabor Marton via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu May 14 07:32:36 PDT 2020
martong planned changes to this revision.
martong added a comment.
With @xazax.hun we agreed that we should try our best to provide signatures for all functions. This includes two major changes:
1. Add signatures to each summary here, possibly with `Irrelevant` types.
2. Add the ability to lookup types. This will result that we can change the majority `Irrelevant` types to concrete types.
Note, we still cannot get rid of `Irrelevant` types because of platform dependent typedefs and macros. E.g. `ssize_t` or `__CONST_SOCKADDR_ARG`. Check out glibc 2.27 implementation for `struct sockaddr *` below. The only solution for such cases is to use an `Irrelevant` type.
#if defined __cplusplus || !__GNUC_PREREQ (2, 7) || !defined __USE_GNU
# define __SOCKADDR_ARG struct sockaddr *__restrict
# define __CONST_SOCKADDR_ARG const struct sockaddr *
#else
/* Add more `struct sockaddr_AF' types here as necessary.
These are all the ones I found on NetBSD and Linux. */
# define __SOCKADDR_ALLTYPES \
__SOCKADDR_ONETYPE (sockaddr) \
__SOCKADDR_ONETYPE (sockaddr_at) \
__SOCKADDR_ONETYPE (sockaddr_ax25) \
__SOCKADDR_ONETYPE (sockaddr_dl) \
__SOCKADDR_ONETYPE (sockaddr_eon) \
__SOCKADDR_ONETYPE (sockaddr_in) \
__SOCKADDR_ONETYPE (sockaddr_in6) \
__SOCKADDR_ONETYPE (sockaddr_inarp) \
__SOCKADDR_ONETYPE (sockaddr_ipx) \
__SOCKADDR_ONETYPE (sockaddr_iso) \
__SOCKADDR_ONETYPE (sockaddr_ns) \
__SOCKADDR_ONETYPE (sockaddr_un) \
__SOCKADDR_ONETYPE (sockaddr_x25)
# define __SOCKADDR_ONETYPE(type) struct type *__restrict __##type##__;
typedef union { __SOCKADDR_ALLTYPES
} __SOCKADDR_ARG __attribute__ ((__transparent_union__));
# undef __SOCKADDR_ONETYPE
# define __SOCKADDR_ONETYPE(type) const struct type *__restrict __##type##__;
typedef union { __SOCKADDR_ALLTYPES
} __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__));
# undef __SOCKADDR_ONETYPE
#endif
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D79433/new/
https://reviews.llvm.org/D79433
More information about the cfe-commits
mailing list