diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc index 8f365ee308546..2d9636a9c8795 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc @@ -79,15 +79,13 @@ #define devname __devname50 #define fgetpos __fgetpos50 #define fsetpos __fsetpos50 -#define fstatvfs __fstatvfs90 -#define fstatvfs1 __fstatvfs190 #define fts_children __fts_children60 #define fts_close __fts_close60 #define fts_open __fts_open60 #define fts_read __fts_read60 #define fts_set __fts_set60 #define getitimer __getitimer50 -#define getmntinfo __getmntinfo90 +#define getmntinfo __getmntinfo13 #define getpwent __getpwent50 #define getpwnam __getpwnam50 #define getpwnam_r __getpwnam_r50 @@ -97,7 +95,6 @@ #define getutxent __getutxent50 #define getutxid __getutxid50 #define getutxline __getutxline50 -#define getvfsstat __getvfsstat90 #define pututxline __pututxline50 #define glob __glob30 #define gmtime __gmtime50 @@ -119,8 +116,6 @@ #define sigprocmask __sigprocmask14 #define sigtimedwait __sigtimedwait50 #define stat __stat50 -#define statvfs __statvfs90 -#define statvfs1 __statvfs190 #define time __time50 #define times __times13 #define unvis __unvis50 @@ -9713,8 +9708,6 @@ INTERCEPTOR(void, qsort_r, void *base, SIZE_T nmemb, SIZE_T size, #define INIT_QSORT_R #endif -#include "sanitizer_common_interceptors_netbsd_compat.inc" - static void InitializeCommonInterceptors() { #if SI_POSIX static u64 metadata_mem[sizeof(MetadataHashMap) / sizeof(u64) + 1]; diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_netbsd_compat.inc b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_netbsd_compat.inc deleted file mode 100644 index 0f05d635145d6..0000000000000 --- a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_netbsd_compat.inc +++ /dev/null @@ -1,127 +0,0 @@ -//===-- sanitizer_common_interceptors_netbsd_compat.inc ---------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// Common function interceptors for tools like AddressSanitizer, -// ThreadSanitizer, MemorySanitizer, etc. -// -// Interceptors for NetBSD old function calls that have been versioned. -// -// NetBSD minimal version supported 9.0. -// NetBSD current version supported 9.99.26. -// -//===----------------------------------------------------------------------===// - -#if SANITIZER_NETBSD - -// First undef all mangled symbols. -// Next, define compat interceptors. -// Finally, undef INIT_ and redefine it. This allows to avoid preprocessor issues. - -#undef fstatvfs -#undef fstatvfs1 -#undef getmntinfo -#undef getvfsstat -#undef statvfs -#undef statvfs1 - -INTERCEPTOR(int, statvfs, char *path, void *buf) { - void *ctx; - COMMON_INTERCEPTOR_ENTER(ctx, statvfs, path, buf); - if (path) COMMON_INTERCEPTOR_READ_RANGE(ctx, path, REAL(strlen)(path) + 1); - // FIXME: under ASan the call below may write to freed memory and corrupt - // its metadata. See - // https://github.com/google/sanitizers/issues/321. - int res = REAL(statvfs)(path, buf); - if (!res) COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, struct_statvfs90_sz); - return res; -} - -INTERCEPTOR(int, fstatvfs, int fd, void *buf) { - void *ctx; - COMMON_INTERCEPTOR_ENTER(ctx, fstatvfs, fd, buf); - COMMON_INTERCEPTOR_FD_ACCESS(ctx, fd); - // FIXME: under ASan the call below may write to freed memory and corrupt - // its metadata. See - // https://github.com/google/sanitizers/issues/321. - int res = REAL(fstatvfs)(fd, buf); - if (!res) { - COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, struct_statvfs90_sz); - if (fd >= 0) - COMMON_INTERCEPTOR_FD_ACQUIRE(ctx, fd); - } - return res; -} - -#undef INIT_STATVFS -#define INIT_STATVFS \ - COMMON_INTERCEPT_FUNCTION(statvfs); \ - COMMON_INTERCEPT_FUNCTION(fstatvfs); \ - COMMON_INTERCEPT_FUNCTION(__statvfs90); \ - COMMON_INTERCEPT_FUNCTION(__fstatvfs90) - -INTERCEPTOR(int, __getmntinfo13, void **mntbufp, int flags) { - void *ctx; - COMMON_INTERCEPTOR_ENTER(ctx, __getmntinfo13, mntbufp, flags); - int cnt = REAL(__getmntinfo13)(mntbufp, flags); - if (cnt > 0 && mntbufp) { - COMMON_INTERCEPTOR_WRITE_RANGE(ctx, mntbufp, sizeof(void *)); - if (*mntbufp) - COMMON_INTERCEPTOR_WRITE_RANGE(ctx, *mntbufp, cnt * struct_statvfs90_sz); - } - return cnt; -} - -#undef INIT_GETMNTINFO -#define INIT_GETMNTINFO \ - COMMON_INTERCEPT_FUNCTION(__getmntinfo13); \ - COMMON_INTERCEPT_FUNCTION(__getmntinfo90) - -INTERCEPTOR(int, getvfsstat, void *buf, SIZE_T bufsize, int flags) { - void *ctx; - COMMON_INTERCEPTOR_ENTER(ctx, getvfsstat, buf, bufsize, flags); - int ret = REAL(getvfsstat)(buf, bufsize, flags); - if (buf && ret > 0) - COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, ret * struct_statvfs90_sz); - return ret; -} - -#undef INIT_GETVFSSTAT -#define INIT_GETVFSSTAT \ - COMMON_INTERCEPT_FUNCTION(getvfsstat); \ - COMMON_INTERCEPT_FUNCTION(__getvfsstat90) - -INTERCEPTOR(int, statvfs1, const char *path, void *buf, int flags) { - void *ctx; - COMMON_INTERCEPTOR_ENTER(ctx, statvfs1, path, buf, flags); - if (path) COMMON_INTERCEPTOR_READ_RANGE(ctx, path, REAL(strlen)(path) + 1); - int res = REAL(statvfs1)(path, buf, flags); - if (!res) COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, struct_statvfs90_sz); - return res; -} - -INTERCEPTOR(int, fstatvfs1, int fd, void *buf, int flags) { - void *ctx; - COMMON_INTERCEPTOR_ENTER(ctx, fstatvfs1, fd, buf, flags); - COMMON_INTERCEPTOR_FD_ACCESS(ctx, fd); - int res = REAL(fstatvfs1)(fd, buf, flags); - if (!res) { - COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, struct_statvfs90_sz); - if (fd >= 0) - COMMON_INTERCEPTOR_FD_ACQUIRE(ctx, fd); - } - return res; -} - -#undef INIT_STATVFS1 -#define INIT_STATVFS1 \ - COMMON_INTERCEPT_FUNCTION(statvfs1); \ - COMMON_INTERCEPT_FUNCTION(fstatvfs1); \ - COMMON_INTERCEPT_FUNCTION(__statvfs190); \ - COMMON_INTERCEPT_FUNCTION(__fstatvfs190) - -#endif diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.cpp index 24e577d3010f5..1dcfbcb8047af 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.cpp +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.cpp @@ -2414,42 +2414,4 @@ CHECK_SIZE_AND_OFFSET(modctl_load_t, ml_flags); CHECK_SIZE_AND_OFFSET(modctl_load_t, ml_props); CHECK_SIZE_AND_OFFSET(modctl_load_t, ml_propslen); -// Compat with 9.0 -struct statvfs90 { - unsigned long f_flag; - unsigned long f_bsize; - unsigned long f_frsize; - unsigned long f_iosize; - - u64 f_blocks; - u64 f_bfree; - u64 f_bavail; - u64 f_bresvd; - - u64 f_files; - u64 f_ffree; - u64 f_favail; - u64 f_fresvd; - - u64 f_syncreads; - u64 f_syncwrites; - - u64 f_asyncreads; - u64 f_asyncwrites; - - struct { - s32 __fsid_val[2]; - } f_fsidx; - unsigned long f_fsid; - unsigned long f_namemax; - u32 f_owner; - - u32 f_spare[4]; - - char f_fstypename[_VFS_NAMELEN]; - char f_mntonname[_VFS_MNAMELEN]; - char f_mntfromname[_VFS_MNAMELEN]; -}; -unsigned struct_statvfs90_sz = sizeof(struct statvfs90); - #endif // SANITIZER_NETBSD diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.h index 794efdb6eff6d..612b34b3e0ca3 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.h @@ -2420,9 +2420,6 @@ struct __sanitizer_cdbw { #define SIGACTION_SYMNAME __sigaction14 -// Compat with 9.0 -extern unsigned struct_statvfs90_sz; - #endif // SANITIZER_NETBSD #endif