@@ -141,6 +141,12 @@ SANITIZER_WEAK_IMPORT void *aligned_alloc(__sanitizer::usize __alignment,
141141#define SI_SOLARIS 0
142142#endif
143143
144+ #if SANITIZER_AIX
145+ # define SI_NOT_AIX 0
146+ #else
147+ # define SI_NOT_AIX 1
148+ #endif
149+
144150#if SANITIZER_SOLARIS32
145151#define SI_SOLARIS32 1
146152#else
@@ -161,20 +167,20 @@ SANITIZER_WEAK_IMPORT void *aligned_alloc(__sanitizer::usize __alignment,
161167
162168#define SANITIZER_INTERCEPT_STRLEN SI_NOT_FUCHSIA
163169#define SANITIZER_INTERCEPT_STRNLEN (SI_NOT_MAC && SI_NOT_FUCHSIA)
164- #define SANITIZER_INTERCEPT_STRCMP SI_NOT_FUCHSIA
170+ #define SANITIZER_INTERCEPT_STRCMP ( SI_NOT_FUCHSIA && SI_NOT_AIX)
165171#define SANITIZER_INTERCEPT_STRSTR SI_NOT_FUCHSIA
166- #define SANITIZER_INTERCEPT_STRCASESTR SI_POSIX
172+ #define SANITIZER_INTERCEPT_STRCASESTR ( SI_POSIX && SI_NOT_AIX)
167173#define SANITIZER_INTERCEPT_STRTOK SI_NOT_FUCHSIA
168174#define SANITIZER_INTERCEPT_STRCHR SI_NOT_FUCHSIA
169- #define SANITIZER_INTERCEPT_STRCHRNUL SI_POSIX_NOT_MAC
175+ #define SANITIZER_INTERCEPT_STRCHRNUL ( SI_POSIX_NOT_MAC && SI_NOT_AIX)
170176#define SANITIZER_INTERCEPT_STRRCHR SI_NOT_FUCHSIA
171177#define SANITIZER_INTERCEPT_STRSPN SI_NOT_FUCHSIA
172178#define SANITIZER_INTERCEPT_STRPBRK SI_NOT_FUCHSIA
173179#define SANITIZER_INTERCEPT_TEXTDOMAIN SI_LINUX_NOT_ANDROID || SI_SOLARIS
174180#define SANITIZER_INTERCEPT_STRCASECMP SI_POSIX
175181#define SANITIZER_INTERCEPT_MEMSET 1
176- #define SANITIZER_INTERCEPT_MEMMOVE 1
177- #define SANITIZER_INTERCEPT_MEMCPY 1
182+ #define SANITIZER_INTERCEPT_MEMMOVE SI_NOT_AIX
183+ #define SANITIZER_INTERCEPT_MEMCPY SI_NOT_AIX
178184#define SANITIZER_INTERCEPT_MEMCMP SI_NOT_FUCHSIA
179185#define SANITIZER_INTERCEPT_BCMP \
180186 SANITIZER_INTERCEPT_MEMCMP && \
@@ -233,18 +239,21 @@ SANITIZER_WEAK_IMPORT void *aligned_alloc(__sanitizer::usize __alignment,
233239#define SANITIZER_INTERCEPT_ISOC99_SCANF SI_GLIBC
234240
235241#ifndef SANITIZER_INTERCEPT_PRINTF
236- #define SANITIZER_INTERCEPT_PRINTF SI_POSIX
237- #define SANITIZER_INTERCEPT_PRINTF_L (SI_FREEBSD || SI_NETBSD)
238- #define SANITIZER_INTERCEPT_ISOC99_PRINTF SI_GLIBC
242+ # define SANITIZER_INTERCEPT_ASPRINTF SI_NOT_AIX
243+ # define SANITIZER_INTERCEPT_VASPRINTF SI_NOT_AIX
244+ # define SANITIZER_INTERCEPT_PRINTF SI_POSIX
245+ # define SANITIZER_INTERCEPT_PRINTF_L (SI_FREEBSD || SI_NETBSD)
246+ # define SANITIZER_INTERCEPT_ISOC99_PRINTF SI_GLIBC
239247#endif
240248
241249#define SANITIZER_INTERCEPT_SETPROCTITLE (SI_FREEBSD || SI_NETBSD)
242250
243251#define SANITIZER_INTERCEPT___PRINTF_CHK \
244252 (SANITIZER_INTERCEPT_PRINTF && SI_GLIBC)
245253
246- #define SANITIZER_INTERCEPT_FREXP SI_NOT_FUCHSIA
247- #define SANITIZER_INTERCEPT_FREXPF SI_POSIX
254+ // AIX libc does not export FREXP and FREXPF.
255+ #define SANITIZER_INTERCEPT_FREXP (SI_NOT_FUCHSIA && SI_NOT_AIX)
256+ #define SANITIZER_INTERCEPT_FREXPF (SI_POSIX && SI_NOT_AIX)
248257#define SANITIZER_INTERCEPT_FREXPL SI_POSIX
249258
250259#define SANITIZER_INTERCEPT_GETPWNAM_AND_FRIENDS SI_POSIX
@@ -294,7 +303,7 @@ SANITIZER_WEAK_IMPORT void *aligned_alloc(__sanitizer::usize __alignment,
294303#define SANITIZER_INTERCEPT_ACCEPT4 \
295304 (SI_LINUX_NOT_ANDROID || SI_NETBSD || SI_FREEBSD)
296305#define SANITIZER_INTERCEPT_PACCEPT SI_NETBSD
297- #define SANITIZER_INTERCEPT_MODF SI_POSIX
306+ #define SANITIZER_INTERCEPT_MODF ( SI_POSIX && SI_NOT_AIX)
298307#define SANITIZER_INTERCEPT_RECVMSG SI_POSIX
299308#define SANITIZER_INTERCEPT_SENDMSG SI_POSIX
300309#define SANITIZER_INTERCEPT_RECVMMSG SI_LINUX
@@ -329,8 +338,9 @@ SANITIZER_WEAK_IMPORT void *aligned_alloc(__sanitizer::usize __alignment,
329338#define SANITIZER_INTERCEPT___WCSXFRM_L SI_LINUX
330339#define SANITIZER_INTERCEPT_WCSNRTOMBS \
331340 (SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
332- #define SANITIZER_INTERCEPT_WCRTOMB \
333- (SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
341+ #define SANITIZER_INTERCEPT_WCRTOMB \
342+ (SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS || \
343+ !SI_NOT_AIX)
334344#define SANITIZER_INTERCEPT_WCTOMB \
335345 (SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
336346#define SANITIZER_INTERCEPT_TCGETATTR SI_LINUX_NOT_ANDROID || SI_SOLARIS
@@ -370,7 +380,8 @@ SANITIZER_WEAK_IMPORT void *aligned_alloc(__sanitizer::usize __alignment,
370380#define SANITIZER_INTERCEPT_GETMNTENT_R SI_LINUX_NOT_ANDROID
371381#define SANITIZER_INTERCEPT_STATFS \
372382 (SI_FREEBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
373- #define SANITIZER_INTERCEPT_STATFS64 SI_GLIBC && SANITIZER_HAS_STATFS64
383+ #define SANITIZER_INTERCEPT_STATFS64 \
384+ ((SI_GLIBC || !SI_NOT_AIX) && SANITIZER_HAS_STATFS64)
374385#define SANITIZER_INTERCEPT_STATVFS \
375386 (SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID)
376387#define SANITIZER_INTERCEPT_STATVFS64 SI_GLIBC
@@ -419,10 +430,10 @@ SANITIZER_WEAK_IMPORT void *aligned_alloc(__sanitizer::usize __alignment,
419430#define SANITIZER_INTERCEPT_TTYNAME_R SI_POSIX
420431#define SANITIZER_INTERCEPT_TEMPNAM SI_POSIX
421432#define SANITIZER_INTERCEPT_SINCOS SI_LINUX || SI_SOLARIS
422- #define SANITIZER_INTERCEPT_REMQUO SI_POSIX
423- #define SANITIZER_INTERCEPT_REMQUOL (SI_POSIX && !SI_NETBSD)
424- #define SANITIZER_INTERCEPT_LGAMMA SI_POSIX
425- #define SANITIZER_INTERCEPT_LGAMMAL (SI_POSIX && !SI_NETBSD)
433+ #define SANITIZER_INTERCEPT_REMQUO ( SI_POSIX && SI_NOT_AIX)
434+ #define SANITIZER_INTERCEPT_REMQUOL (SI_POSIX && !SI_NETBSD && SI_NOT_AIX )
435+ #define SANITIZER_INTERCEPT_LGAMMA ( SI_POSIX && SI_NOT_AIX)
436+ #define SANITIZER_INTERCEPT_LGAMMAL (SI_POSIX && !SI_NETBSD && SI_NOT_AIX )
426437#define SANITIZER_INTERCEPT_LGAMMA_R (SI_FREEBSD || SI_LINUX || SI_SOLARIS)
427438#define SANITIZER_INTERCEPT_LGAMMAL_R SI_LINUX_NOT_ANDROID || SI_SOLARIS
428439#define SANITIZER_INTERCEPT_DRAND48_R SI_GLIBC
@@ -505,11 +516,13 @@ SANITIZER_WEAK_IMPORT void *aligned_alloc(__sanitizer::usize __alignment,
505516#define SANITIZER_INTERCEPT_EVENTFD_READ_WRITE (SI_LINUX || SI_FREEBSD)
506517
507518#define SI_STAT_LINUX (SI_LINUX && __GLIBC_PREREQ(2 , 33 ))
508- #define SANITIZER_INTERCEPT_STAT \
509- (SI_FREEBSD || SI_MAC || SI_ANDROID || SI_NETBSD || SI_SOLARIS || \
510- SI_STAT_LINUX)
511- #define SANITIZER_INTERCEPT_STAT64 SI_STAT_LINUX && SANITIZER_HAS_STAT64
512- #define SANITIZER_INTERCEPT_LSTAT (SI_NETBSD || SI_FREEBSD || SI_STAT_LINUX)
519+ #define SANITIZER_INTERCEPT_STAT \
520+ (SI_FREEBSD || SI_MAC || SI_ANDROID || SI_NETBSD || SI_SOLARIS || \
521+ SI_STAT_LINUX || !SI_NOT_AIX)
522+ #define SANITIZER_INTERCEPT_STAT64 \
523+ ((SI_STAT_LINUX || !SI_NOT_AIX) && SANITIZER_HAS_STAT64)
524+ #define SANITIZER_INTERCEPT_LSTAT \
525+ (SI_NETBSD || SI_FREEBSD || SI_STAT_LINUX || !SI_NOT_AIX)
513526#define SANITIZER_INTERCEPT___XSTAT \
514527 ((!SANITIZER_INTERCEPT_STAT && SI_POSIX) || SI_STAT_LINUX)
515528#define SANITIZER_INTERCEPT___XSTAT64 SI_GLIBC
@@ -578,7 +591,7 @@ SANITIZER_WEAK_IMPORT void *aligned_alloc(__sanitizer::usize __alignment,
578591#define SANITIZER_INTERCEPT_PROTOENT_R SI_GLIBC
579592#define SANITIZER_INTERCEPT_NETENT (SI_LINUX || SI_NETBSD || SI_FREEBSD)
580593#define SANITIZER_INTERCEPT_SETVBUF \
581- (SI_NETBSD || SI_FREEBSD || SI_LINUX || SI_MAC)
594+ (SI_NETBSD || SI_FREEBSD || SI_LINUX || SI_MAC || !SI_NOT_AIX )
582595#define SANITIZER_INTERCEPT_GETMNTINFO (SI_NETBSD || SI_FREEBSD || SI_MAC)
583596#define SANITIZER_INTERCEPT_MI_VECTOR_HASH SI_NETBSD
584597#define SANITIZER_INTERCEPT_GETVFSSTAT SI_NETBSD
0 commit comments