forked from OSchip/llvm-project
Split lgammal() from INIT_LGAMMAL
Summary: Introduce SANITIZER_INTERCEPT_LGAMMAL dedicated for lgammal(). Disable it for NetBSD as this routine is not implemented in this OS. Installation of supernumerary interceptors causes leaking of errors to dlsym(3)-like operations. Reviewers: joerg, vitalybuka Reviewed By: vitalybuka Subscribers: kubamracek, llvm-commits, mgorny, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D54054 llvm-svn: 346352
This commit is contained in:
parent
c4dfb42897
commit
e06fb482a9
|
@ -4876,6 +4876,14 @@ INTERCEPTOR(float, lgammaf, float x) {
|
||||||
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, &signgam, sizeof(signgam));
|
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, &signgam, sizeof(signgam));
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
#define INIT_LGAMMA \
|
||||||
|
COMMON_INTERCEPT_FUNCTION(lgamma); \
|
||||||
|
COMMON_INTERCEPT_FUNCTION(lgammaf);
|
||||||
|
#else
|
||||||
|
#define INIT_LGAMMA
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if SANITIZER_INTERCEPT_LGAMMAL
|
||||||
INTERCEPTOR(long double, lgammal, long double x) {
|
INTERCEPTOR(long double, lgammal, long double x) {
|
||||||
void *ctx;
|
void *ctx;
|
||||||
COMMON_INTERCEPTOR_ENTER(ctx, lgammal, x);
|
COMMON_INTERCEPTOR_ENTER(ctx, lgammal, x);
|
||||||
|
@ -4883,12 +4891,10 @@ INTERCEPTOR(long double, lgammal, long double x) {
|
||||||
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, &signgam, sizeof(signgam));
|
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, &signgam, sizeof(signgam));
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
#define INIT_LGAMMA \
|
#define INIT_LGAMMAL \
|
||||||
COMMON_INTERCEPT_FUNCTION(lgamma); \
|
|
||||||
COMMON_INTERCEPT_FUNCTION(lgammaf); \
|
|
||||||
COMMON_INTERCEPT_FUNCTION_LDBL(lgammal);
|
COMMON_INTERCEPT_FUNCTION_LDBL(lgammal);
|
||||||
#else
|
#else
|
||||||
#define INIT_LGAMMA
|
#define INIT_LGAMMAL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SANITIZER_INTERCEPT_LGAMMA_R
|
#if SANITIZER_INTERCEPT_LGAMMA_R
|
||||||
|
@ -7435,6 +7441,7 @@ static void InitializeCommonInterceptors() {
|
||||||
INIT_REMQUO;
|
INIT_REMQUO;
|
||||||
INIT_REMQUOL;
|
INIT_REMQUOL;
|
||||||
INIT_LGAMMA;
|
INIT_LGAMMA;
|
||||||
|
INIT_LGAMMAL;
|
||||||
INIT_LGAMMA_R;
|
INIT_LGAMMA_R;
|
||||||
INIT_LGAMMAL_R;
|
INIT_LGAMMAL_R;
|
||||||
INIT_DRAND48_R;
|
INIT_DRAND48_R;
|
||||||
|
|
|
@ -362,6 +362,7 @@
|
||||||
#define SANITIZER_INTERCEPT_REMQUO SI_POSIX
|
#define SANITIZER_INTERCEPT_REMQUO SI_POSIX
|
||||||
#define SANITIZER_INTERCEPT_REMQUOL (SI_POSIX && !SI_NETBSD)
|
#define SANITIZER_INTERCEPT_REMQUOL (SI_POSIX && !SI_NETBSD)
|
||||||
#define SANITIZER_INTERCEPT_LGAMMA SI_POSIX
|
#define SANITIZER_INTERCEPT_LGAMMA SI_POSIX
|
||||||
|
#define SANITIZER_INTERCEPT_LGAMMAL (SI_POSIX && !SI_NETBSD)
|
||||||
#define SANITIZER_INTERCEPT_LGAMMA_R (SI_FREEBSD || SI_LINUX || SI_SOLARIS)
|
#define SANITIZER_INTERCEPT_LGAMMA_R (SI_FREEBSD || SI_LINUX || SI_SOLARIS)
|
||||||
#define SANITIZER_INTERCEPT_LGAMMAL_R SI_LINUX_NOT_ANDROID || SI_SOLARIS
|
#define SANITIZER_INTERCEPT_LGAMMAL_R SI_LINUX_NOT_ANDROID || SI_SOLARIS
|
||||||
#define SANITIZER_INTERCEPT_DRAND48_R SI_LINUX_NOT_ANDROID
|
#define SANITIZER_INTERCEPT_DRAND48_R SI_LINUX_NOT_ANDROID
|
||||||
|
|
Loading…
Reference in New Issue