compiler-rt-netbsd: Sync with local patches
Changes: 1. Add fts(3) interceptors 2. Add lstat(2) interceptor 3. Correct strftime(3) inteceptor for NetBSD 4. Correct fgets(3) interceptor for NetBSD 5. Add strmode(3) interceptor Programs like chmod(1), stat(1) and similar work now under MSan. Sponsored by <The NetBSD Foundation>
This commit is contained in:
parent
c2e617f2a5
commit
8ecbafc77f
|
@ -2,33 +2,33 @@ $NetBSD: distinfo,v 1.35 2015/09/11 01:21:57 tnn Exp $
|
|||
|
||||
SHA1 (patch-cmake_config-ix.cmake) = 11195c8254c84d5972a2ffee8a9e66758ab7105b
|
||||
SHA1 (patch-include_CMakeLists.txt) = b6f2713b7e5337aed542442936b6f747efe0a607
|
||||
SHA1 (patch-include_sanitizer_netbsd__syscall__hooks.h) = b2166de9a80f37cb09a569d73fd23e298e0ab9a6
|
||||
SHA1 (patch-include_sanitizer_netbsd__syscall__hooks.h) = c7c2e602e5492dc534848705326c376cd8911124
|
||||
SHA1 (patch-lib_asan_asan__interceptors.cc) = ea4005ce02775060ff52af76d568c450892067b5
|
||||
SHA1 (patch-lib_esan_esan__interceptors.cpp) = a7103ca053e92a810c87c593262bb386f3d02606
|
||||
SHA1 (patch-lib_fuzzer_tests_CMakeLists.txt) = bed69bc433f70ec4d88fc5aa11d47ffbd18f4b74
|
||||
SHA1 (patch-lib_hwasan_hwasan__interceptors.cc) = c49ab3759728bbd3e27580a3d0d3e2db0bceb2a6
|
||||
SHA1 (patch-lib_msan_msan__interceptors.cc) = 42f9f0416e1b30f15fb0f104d70d4b0ead83519f
|
||||
SHA1 (patch-lib_msan_msan__interceptors.cc) = aacd9da9f5fc62e0f7cfe9ad9bcf90ceeb267630
|
||||
SHA1 (patch-lib_msan_msan__linux.cc) = d75d7587071a9e7a3f6a08a3008af55319e62cab
|
||||
SHA1 (patch-lib_sanitizer__common_CMakeLists.txt) = fcbf2987ccab5258fe760aef6ef47bd97e0e0b2c
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__common__interceptors.inc) = 052071b28d6852e3111910d207d7c40b3acc676d
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__common__interceptors.inc) = 7e761ee7a7991cd6c17e1dcab1aa2a67ccbd4333
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__common__interceptors__ioctl.inc) = 231f519a0564aa69d746a7f0bbee1b1aeed927a7
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__internal__defs.h) = 2ff74de8be0825ca4162969cb2ed367654934a17
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__linux.cc) = b1057f01ae2f03498613eb1a02501c8a65d16fed
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__netbsd__interceptors__ioctl.inc) = 501876c2593058c94e443dc1c6bddfc86a7b989a
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__netbsd__syscalls.inc) = 47b0815e355eba0b3c6b5e56c35568a435c8d7a6
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__platform__interceptors.h) = 9c8de18fa1661df511575a69ffdc2ff4746cd9de
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__platform__limits__netbsd.cc) = 47236661e37673d66a52e80c3f55be13029014ca
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__platform__limits__netbsd.h) = c58d9a09feaad37b02fa6490b9b3588a56663a76
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__netbsd__interceptors__ioctl.inc) = e490bf5071ec936b89c334bb3e27f0ada52e2a59
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__netbsd__syscalls.inc) = 59712a0265fa41220a711c4febca42e90a2e6412
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__platform__interceptors.h) = 430e3dc7883752ef41cacb918e6d024e7bd0031a
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__platform__limits__netbsd.cc) = 52a72419e20323a28e0c5768e114c5d6646c8006
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__platform__limits__netbsd.h) = 4bcd536820608413316034c292d651e38d834ddc
|
||||
SHA1 (patch-lib_sanitizer__common_sanitizer__procmaps__freebsd.cc) = 7e0deaeeada33bd13575251e5d8fb4a0ee4c53e8
|
||||
SHA1 (patch-lib_scudo_scudo__platform.h) = d44bd094136dd0381db87344fbbcad1dcfd44dc1
|
||||
SHA1 (patch-lib_tsan_rtl_tsan__interceptors.cc) = 4fbaa64e3f8d28cdbab6783c296dfd31cecb45a5
|
||||
SHA1 (patch-test_asan_lit.cfg) = becbc3c8c9cfd589e1dcbf1014dd4655f952c144
|
||||
SHA1 (patch-test_lsan_lit.common.cfg) = 10dc251f80efb96d015a22c740dc20b1843b9a11
|
||||
SHA1 (patch-test_sanitizer__common_TestCases_NetBSD_kvm__open.cc) = 673fd069eb26f82701cb241f32cee158c56a98ae
|
||||
SHA1 (patch-test_sanitizer__common_TestCases_NetBSD_kvm__openfiles.cc) = 09b07f5fcf0e88a9879500433ce808250459d866
|
||||
SHA1 (patch-test_sanitizer__common_TestCases_NetBSD_paccept.cc) = 677b018626ec40b7fcddf5420db4926d8da38af0
|
||||
SHA1 (patch-test_sanitizer__common_TestCases_NetBSD_strlcat.cc) = ffce89f5a6f8025e7cbf0df200a3e9ba2f61be53
|
||||
SHA1 (patch-test_sanitizer__common_TestCases_NetBSD_strlcpy.cc) = 8ef92e665a3505ca992ec0202ae228442a6f0896
|
||||
SHA1 (patch-test_sanitizer__common_TestCases_NetBSD_kvm__open.cc) = 7bad1809f9d01b33a420c25929a9a2db5f4c178a
|
||||
SHA1 (patch-test_sanitizer__common_TestCases_NetBSD_kvm__openfiles.cc) = af18e76e4c4292f7e68c3fb1534442fcb8c3dd53
|
||||
SHA1 (patch-test_sanitizer__common_TestCases_NetBSD_paccept.cc) = 4be0a27702c15cf356f63d842ddefe9ad8d19843
|
||||
SHA1 (patch-test_sanitizer__common_TestCases_NetBSD_strlcat.cc) = f2783fd89ec782354b16fb0774e768d22adf3056
|
||||
SHA1 (patch-test_sanitizer__common_TestCases_NetBSD_strlcpy.cc) = fb76348b4e1cfc0506cd05df50ac2687f850041b
|
||||
SHA1 (patch-test_scudo_lit.cfg) = 111a66513b994534bb0d69d214b7e0cb4e2b8eb8
|
||||
SHA1 (patch-utils_generate__netbsd__ioctls.awk) = d3b4fa17b08c8bf33ec38af581f945d28a164a1c
|
||||
SHA1 (patch-utils_generate__netbsd__syscalls.awk) = 6d503cd725990a9738d45ec4dc33397dc102bf6a
|
||||
SHA1 (patch-utils_generate__netbsd__ioctls.awk) = 843dfba9bdf5e82af10474d61c67458dfb2c69ad
|
||||
SHA1 (patch-utils_generate__netbsd__syscalls.awk) = dfb5d09d0631a86e503a0cb9e24918fe994ab159
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
$NetBSD$
|
||||
|
||||
--- include/sanitizer/netbsd_syscall_hooks.h.orig 2018-01-22 23:12:45.617372317 +0000
|
||||
--- include/sanitizer/netbsd_syscall_hooks.h.orig 2018-01-23 22:46:48.351823563 +0000
|
||||
+++ include/sanitizer/netbsd_syscall_hooks.h
|
||||
@@ -0,0 +1,4730 @@
|
||||
+//===-- netbsd_syscall_hooks.h --------------------------------------------===//
|
||||
|
|
|
@ -16,7 +16,23 @@ $NetBSD$
|
|||
#endif
|
||||
|
||||
#include <stdarg.h>
|
||||
@@ -1137,6 +1139,18 @@ INTERCEPTOR(int, pthread_join, void *th,
|
||||
@@ -523,6 +525,7 @@ INTERCEPTOR(SIZE_T, __strxfrm_l, char *d
|
||||
|
||||
#define INTERCEPTOR_STRFTIME_BODY(char_type, ret_type, func, s, ...) \
|
||||
ENSURE_MSAN_INITED(); \
|
||||
+ InterceptorScope interceptor_scope; \
|
||||
ret_type res = REAL(func)(s, __VA_ARGS__); \
|
||||
if (s) __msan_unpoison(s, sizeof(char_type) * (res + 1)); \
|
||||
return res;
|
||||
@@ -788,6 +791,7 @@ INTERCEPTOR(int, socketpair, int domain,
|
||||
|
||||
INTERCEPTOR(char *, fgets, char *s, int size, void *stream) {
|
||||
ENSURE_MSAN_INITED();
|
||||
+ InterceptorScope interceptor_scope;
|
||||
char *res = REAL(fgets)(s, size, stream);
|
||||
if (res)
|
||||
__msan_unpoison(s, REAL(strlen)(s) + 1);
|
||||
@@ -1137,6 +1141,18 @@ INTERCEPTOR(int, pthread_join, void *th,
|
||||
|
||||
extern char *tzname[2];
|
||||
|
||||
|
@ -35,7 +51,7 @@ $NetBSD$
|
|||
INTERCEPTOR(void, tzset, int fake) {
|
||||
ENSURE_MSAN_INITED();
|
||||
REAL(tzset)(fake);
|
||||
@@ -1146,29 +1160,85 @@ INTERCEPTOR(void, tzset, int fake) {
|
||||
@@ -1146,29 +1162,85 @@ INTERCEPTOR(void, tzset, int fake) {
|
||||
__msan_unpoison(tzname[1], REAL(strlen)(tzname[1]) + 1);
|
||||
return;
|
||||
}
|
||||
|
@ -124,7 +140,7 @@ $NetBSD$
|
|||
}
|
||||
|
||||
static void BeforeFork() {
|
||||
@@ -1322,6 +1392,11 @@ int OnExit() {
|
||||
@@ -1322,6 +1394,11 @@ int OnExit() {
|
||||
__msan_unpoison(to + size, 1); \
|
||||
} while (false)
|
||||
|
||||
|
@ -136,7 +152,7 @@ $NetBSD$
|
|||
#include "sanitizer_common/sanitizer_platform_interceptors.h"
|
||||
#include "sanitizer_common/sanitizer_common_interceptors.inc"
|
||||
|
||||
@@ -1401,6 +1476,7 @@ static uptr signal_impl(int signo, uptr
|
||||
@@ -1401,6 +1478,7 @@ static uptr signal_impl(int signo, uptr
|
||||
} while (false)
|
||||
#define COMMON_SYSCALL_POST_WRITE_RANGE(p, s) __msan_unpoison(p, s)
|
||||
#include "sanitizer_common/sanitizer_common_syscalls.inc"
|
||||
|
@ -144,7 +160,7 @@ $NetBSD$
|
|||
|
||||
struct dlinfo {
|
||||
char *dli_fname;
|
||||
@@ -1566,6 +1642,9 @@ namespace __msan {
|
||||
@@ -1566,6 +1644,9 @@ namespace __msan {
|
||||
void InitializeInterceptors() {
|
||||
static int inited = 0;
|
||||
CHECK_EQ(inited, 0);
|
||||
|
@ -154,7 +170,7 @@ $NetBSD$
|
|||
InitializeCommonInterceptors();
|
||||
InitializeSignalInterceptors();
|
||||
|
||||
@@ -1682,6 +1761,7 @@ void InitializeInterceptors() {
|
||||
@@ -1682,6 +1763,7 @@ void InitializeInterceptors() {
|
||||
|
||||
INTERCEPT_FUNCTION(pthread_join);
|
||||
INTERCEPT_FUNCTION(tzset);
|
||||
|
|
|
@ -10,15 +10,28 @@ $NetBSD$
|
|||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "interception/interception.h"
|
||||
@@ -75,6 +76,7 @@
|
||||
@@ -75,6 +76,12 @@
|
||||
#define clock_settime __clock_settime50
|
||||
#define ctime __ctime50
|
||||
#define ctime_r __ctime_r50
|
||||
+#define devname __devname50
|
||||
+#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 getpwent __getpwent50
|
||||
#define getpwnam __getpwnam50
|
||||
@@ -108,6 +110,9 @@
|
||||
@@ -90,6 +97,7 @@
|
||||
#define gmtime_r __gmtime_r50
|
||||
#define localtime __locatime50
|
||||
#define localtime_r __localtime_r50
|
||||
+#define lstat __lstat50
|
||||
#define mktime __mktime50
|
||||
#define opendir __opendir30
|
||||
#define readdir __readdir30
|
||||
@@ -108,6 +116,9 @@
|
||||
#define times __times13
|
||||
#define wait3 __wait350
|
||||
#define wait4 __wait450
|
||||
|
@ -28,7 +41,7 @@ $NetBSD$
|
|||
#endif
|
||||
|
||||
// Platform-specific options.
|
||||
@@ -280,6 +285,10 @@ bool PlatformHasDifferentMemcpyAndMemmov
|
||||
@@ -280,6 +291,10 @@ bool PlatformHasDifferentMemcpyAndMemmov
|
||||
return new_mem;
|
||||
#endif
|
||||
|
||||
|
@ -39,7 +52,7 @@ $NetBSD$
|
|||
struct FileMetadata {
|
||||
// For open_memstream().
|
||||
char **addr;
|
||||
@@ -1230,6 +1239,7 @@ static void unpoison_tm(void *ctx, __san
|
||||
@@ -1230,6 +1245,7 @@ static void unpoison_tm(void *ctx, __san
|
||||
INTERCEPTOR(__sanitizer_tm *, localtime, unsigned long *timep) {
|
||||
void *ctx;
|
||||
COMMON_INTERCEPTOR_ENTER(ctx, localtime, timep);
|
||||
|
@ -47,7 +60,7 @@ $NetBSD$
|
|||
__sanitizer_tm *res = REAL(localtime)(timep);
|
||||
if (res) {
|
||||
COMMON_INTERCEPTOR_READ_RANGE(ctx, timep, sizeof(*timep));
|
||||
@@ -1240,6 +1250,7 @@ INTERCEPTOR(__sanitizer_tm *, localtime,
|
||||
@@ -1240,6 +1256,7 @@ INTERCEPTOR(__sanitizer_tm *, localtime,
|
||||
INTERCEPTOR(__sanitizer_tm *, localtime_r, unsigned long *timep, void *result) {
|
||||
void *ctx;
|
||||
COMMON_INTERCEPTOR_ENTER(ctx, localtime_r, timep, result);
|
||||
|
@ -55,7 +68,7 @@ $NetBSD$
|
|||
__sanitizer_tm *res = REAL(localtime_r)(timep, result);
|
||||
if (res) {
|
||||
COMMON_INTERCEPTOR_READ_RANGE(ctx, timep, sizeof(*timep));
|
||||
@@ -1250,6 +1261,7 @@ INTERCEPTOR(__sanitizer_tm *, localtime_
|
||||
@@ -1250,6 +1267,7 @@ INTERCEPTOR(__sanitizer_tm *, localtime_
|
||||
INTERCEPTOR(__sanitizer_tm *, gmtime, unsigned long *timep) {
|
||||
void *ctx;
|
||||
COMMON_INTERCEPTOR_ENTER(ctx, gmtime, timep);
|
||||
|
@ -63,7 +76,7 @@ $NetBSD$
|
|||
__sanitizer_tm *res = REAL(gmtime)(timep);
|
||||
if (res) {
|
||||
COMMON_INTERCEPTOR_READ_RANGE(ctx, timep, sizeof(*timep));
|
||||
@@ -1260,6 +1272,7 @@ INTERCEPTOR(__sanitizer_tm *, gmtime, un
|
||||
@@ -1260,6 +1278,7 @@ INTERCEPTOR(__sanitizer_tm *, gmtime, un
|
||||
INTERCEPTOR(__sanitizer_tm *, gmtime_r, unsigned long *timep, void *result) {
|
||||
void *ctx;
|
||||
COMMON_INTERCEPTOR_ENTER(ctx, gmtime_r, timep, result);
|
||||
|
@ -71,7 +84,7 @@ $NetBSD$
|
|||
__sanitizer_tm *res = REAL(gmtime_r)(timep, result);
|
||||
if (res) {
|
||||
COMMON_INTERCEPTOR_READ_RANGE(ctx, timep, sizeof(*timep));
|
||||
@@ -1270,6 +1283,7 @@ INTERCEPTOR(__sanitizer_tm *, gmtime_r,
|
||||
@@ -1270,6 +1289,7 @@ INTERCEPTOR(__sanitizer_tm *, gmtime_r,
|
||||
INTERCEPTOR(char *, ctime, unsigned long *timep) {
|
||||
void *ctx;
|
||||
COMMON_INTERCEPTOR_ENTER(ctx, ctime, timep);
|
||||
|
@ -79,7 +92,7 @@ $NetBSD$
|
|||
// FIXME: under ASan the call below may write to freed memory and corrupt
|
||||
// its metadata. See
|
||||
// https://github.com/google/sanitizers/issues/321.
|
||||
@@ -1283,6 +1297,7 @@ INTERCEPTOR(char *, ctime, unsigned long
|
||||
@@ -1283,6 +1303,7 @@ INTERCEPTOR(char *, ctime, unsigned long
|
||||
INTERCEPTOR(char *, ctime_r, unsigned long *timep, char *result) {
|
||||
void *ctx;
|
||||
COMMON_INTERCEPTOR_ENTER(ctx, ctime_r, timep, result);
|
||||
|
@ -87,7 +100,7 @@ $NetBSD$
|
|||
// FIXME: under ASan the call below may write to freed memory and corrupt
|
||||
// its metadata. See
|
||||
// https://github.com/google/sanitizers/issues/321.
|
||||
@@ -1296,6 +1311,7 @@ INTERCEPTOR(char *, ctime_r, unsigned lo
|
||||
@@ -1296,6 +1317,7 @@ INTERCEPTOR(char *, ctime_r, unsigned lo
|
||||
INTERCEPTOR(char *, asctime, __sanitizer_tm *tm) {
|
||||
void *ctx;
|
||||
COMMON_INTERCEPTOR_ENTER(ctx, asctime, tm);
|
||||
|
@ -95,7 +108,7 @@ $NetBSD$
|
|||
// FIXME: under ASan the call below may write to freed memory and corrupt
|
||||
// its metadata. See
|
||||
// https://github.com/google/sanitizers/issues/321.
|
||||
@@ -1309,6 +1325,7 @@ INTERCEPTOR(char *, asctime, __sanitizer
|
||||
@@ -1309,6 +1331,7 @@ INTERCEPTOR(char *, asctime, __sanitizer
|
||||
INTERCEPTOR(char *, asctime_r, __sanitizer_tm *tm, char *result) {
|
||||
void *ctx;
|
||||
COMMON_INTERCEPTOR_ENTER(ctx, asctime_r, tm, result);
|
||||
|
@ -103,7 +116,7 @@ $NetBSD$
|
|||
// FIXME: under ASan the call below may write to freed memory and corrupt
|
||||
// its metadata. See
|
||||
// https://github.com/google/sanitizers/issues/321.
|
||||
@@ -1322,6 +1339,7 @@ INTERCEPTOR(char *, asctime_r, __sanitiz
|
||||
@@ -1322,6 +1345,7 @@ INTERCEPTOR(char *, asctime_r, __sanitiz
|
||||
INTERCEPTOR(long, mktime, __sanitizer_tm *tm) {
|
||||
void *ctx;
|
||||
COMMON_INTERCEPTOR_ENTER(ctx, mktime, tm);
|
||||
|
@ -111,7 +124,7 @@ $NetBSD$
|
|||
COMMON_INTERCEPTOR_READ_RANGE(ctx, &tm->tm_sec, sizeof(tm->tm_sec));
|
||||
COMMON_INTERCEPTOR_READ_RANGE(ctx, &tm->tm_min, sizeof(tm->tm_min));
|
||||
COMMON_INTERCEPTOR_READ_RANGE(ctx, &tm->tm_hour, sizeof(tm->tm_hour));
|
||||
@@ -1704,6 +1722,7 @@ FORMAT_INTERCEPTOR_IMPL(__isoc99_snprint
|
||||
@@ -1704,6 +1728,7 @@ FORMAT_INTERCEPTOR_IMPL(__isoc99_snprint
|
||||
|
||||
#if SANITIZER_INTERCEPT_IOCTL
|
||||
#include "sanitizer_common_interceptors_ioctl.inc"
|
||||
|
@ -119,7 +132,7 @@ $NetBSD$
|
|||
INTERCEPTOR(int, ioctl, int d, unsigned long request, ...) {
|
||||
// We need a frame pointer, because we call into ioctl_common_[pre|post] which
|
||||
// can trigger a report and we need to be able to unwind through this
|
||||
@@ -2777,6 +2796,30 @@ INTERCEPTOR(int, accept4, int fd, void *
|
||||
@@ -2777,6 +2802,30 @@ INTERCEPTOR(int, accept4, int fd, void *
|
||||
#define INIT_ACCEPT4
|
||||
#endif
|
||||
|
||||
|
@ -150,7 +163,7 @@ $NetBSD$
|
|||
#if SANITIZER_INTERCEPT_MODF
|
||||
INTERCEPTOR(double, modf, double x, double *iptr) {
|
||||
void *ctx;
|
||||
@@ -3165,7 +3208,14 @@ INTERCEPTOR(char *, setlocale, int categ
|
||||
@@ -3165,7 +3214,14 @@ INTERCEPTOR(char *, setlocale, int categ
|
||||
if (locale)
|
||||
COMMON_INTERCEPTOR_READ_RANGE(ctx, locale, REAL(strlen)(locale) + 1);
|
||||
char *res = REAL(setlocale)(category, locale);
|
||||
|
@ -166,7 +179,30 @@ $NetBSD$
|
|||
return res;
|
||||
}
|
||||
|
||||
@@ -6608,6 +6658,757 @@ INTERCEPTOR(int, getgroupmembership, con
|
||||
@@ -6252,6 +6308,22 @@ INTERCEPTOR(int, stat, const char *path,
|
||||
#define INIT_STAT
|
||||
#endif
|
||||
|
||||
+#if SANITIZER_INTERCEPT_LSTAT
|
||||
+INTERCEPTOR(int, lstat, const char *path, void *buf) {
|
||||
+ void *ctx;
|
||||
+ COMMON_INTERCEPTOR_ENTER(ctx, lstat, path, buf);
|
||||
+ if (common_flags()->intercept_stat)
|
||||
+ COMMON_INTERCEPTOR_READ_STRING(ctx, path, 0);
|
||||
+ int res = REAL(lstat)(path, buf);
|
||||
+ if (!res)
|
||||
+ COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, __sanitizer::struct_stat_sz);
|
||||
+ return res;
|
||||
+}
|
||||
+#define INIT_LSTAT COMMON_INTERCEPT_FUNCTION(lstat)
|
||||
+#else
|
||||
+#define INIT_LSTAT
|
||||
+#endif
|
||||
+
|
||||
#if SANITIZER_INTERCEPT___XSTAT
|
||||
INTERCEPTOR(int, __xstat, int version, const char *path, void *buf) {
|
||||
void *ctx;
|
||||
@@ -6608,6 +6680,837 @@ INTERCEPTOR(int, getgroupmembership, con
|
||||
#define INIT_GETGROUPLIST
|
||||
#endif
|
||||
|
||||
|
@ -920,11 +956,91 @@ $NetBSD$
|
|||
+#else
|
||||
+#define INIT_GETNETENT
|
||||
+#endif
|
||||
+
|
||||
+#if SANITIZER_INTERCEPT_FTS
|
||||
+INTERCEPTOR(void *, fts_open, char * const *path_argv, int options,
|
||||
+ int (*compar)(void **, void **)) {
|
||||
+ void *ctx;
|
||||
+ void *fts;
|
||||
+ COMMON_INTERCEPTOR_ENTER(ctx, fts_open, path_argv, options, compar);
|
||||
+ if (path_argv) {
|
||||
+ char * const *pa = path_argv;
|
||||
+ while (*pa) {
|
||||
+ COMMON_INTERCEPTOR_READ_RANGE(ctx, pa, sizeof(char **));
|
||||
+ COMMON_INTERCEPTOR_READ_RANGE(ctx, *pa, REAL(strlen)(*pa) + 1);
|
||||
+ pa++;
|
||||
+ }
|
||||
+ COMMON_INTERCEPTOR_READ_RANGE(ctx, pa, sizeof(char **));
|
||||
+ }
|
||||
+ fts = REAL(fts_open)(path_argv, options, compar);
|
||||
+ if (fts)
|
||||
+ COMMON_INTERCEPTOR_WRITE_RANGE(ctx, fts, struct_FTS_sz);
|
||||
+ return fts;
|
||||
+}
|
||||
+
|
||||
+INTERCEPTOR(void *, fts_read, void *ftsp) {
|
||||
+ void *ctx;
|
||||
+ void *ftsent;
|
||||
+ COMMON_INTERCEPTOR_ENTER(ctx, fts_read, ftsp);
|
||||
+ COMMON_INTERCEPTOR_READ_RANGE(ctx, ftsp, struct_FTS_sz);
|
||||
+ ftsent = REAL(fts_read)(ftsp);
|
||||
+ if (ftsent)
|
||||
+ COMMON_INTERCEPTOR_WRITE_RANGE(ctx, ftsent, struct_FTSENT_sz);
|
||||
+ return ftsent;
|
||||
+}
|
||||
+
|
||||
+INTERCEPTOR(void *, fts_children, void *ftsp, int options) {
|
||||
+ void *ctx;
|
||||
+ void *ftsent;
|
||||
+ COMMON_INTERCEPTOR_ENTER(ctx, fts_children, ftsp, options);
|
||||
+ COMMON_INTERCEPTOR_READ_RANGE(ctx, ftsp, struct_FTS_sz);
|
||||
+ ftsent = REAL(fts_children)(ftsp, options);
|
||||
+ if (ftsent)
|
||||
+ COMMON_INTERCEPTOR_WRITE_RANGE(ctx, ftsent, struct_FTSENT_sz);
|
||||
+ return ftsent;
|
||||
+}
|
||||
+
|
||||
+INTERCEPTOR(int, fts_set, void *ftsp, void *f, int options) {
|
||||
+ void *ctx;
|
||||
+ COMMON_INTERCEPTOR_ENTER(ctx, fts_set, ftsp, f, options);
|
||||
+ COMMON_INTERCEPTOR_READ_RANGE(ctx, ftsp, struct_FTS_sz);
|
||||
+ COMMON_INTERCEPTOR_READ_RANGE(ctx, f, struct_FTSENT_sz);
|
||||
+ return REAL(fts_set)(ftsp, f, options);
|
||||
+}
|
||||
+
|
||||
+INTERCEPTOR(int, fts_close, void *ftsp) {
|
||||
+ void *ctx;
|
||||
+ COMMON_INTERCEPTOR_ENTER(ctx, fts_close, ftsp);
|
||||
+ COMMON_INTERCEPTOR_READ_RANGE(ctx, ftsp, struct_FTS_sz);
|
||||
+ return REAL(fts_close)(ftsp);
|
||||
+}
|
||||
+#define INIT_FTS \
|
||||
+ COMMON_INTERCEPT_FUNCTION(fts_open); \
|
||||
+ COMMON_INTERCEPT_FUNCTION(fts_read); \
|
||||
+ COMMON_INTERCEPT_FUNCTION(fts_children); \
|
||||
+ COMMON_INTERCEPT_FUNCTION(fts_set); \
|
||||
+ COMMON_INTERCEPT_FUNCTION(fts_close);
|
||||
+#else
|
||||
+#define INIT_FTS
|
||||
+#endif
|
||||
+
|
||||
+#if SANITIZER_INTERCEPT_STRMODE
|
||||
+INTERCEPTOR(void, strmode, u32 mode, char *bp) {
|
||||
+ void *ctx;
|
||||
+ COMMON_INTERCEPTOR_ENTER(ctx, strmode, mode, bp);
|
||||
+ REAL(strmode)(mode, bp);
|
||||
+ if (bp)
|
||||
+ COMMON_INTERCEPTOR_WRITE_RANGE(ctx, bp, REAL(strlen)(bp) + 1);
|
||||
+}
|
||||
+#define INIT_STRMODE COMMON_INTERCEPT_FUNCTION(strmode)
|
||||
+#else
|
||||
+#define INIT_STRMODE
|
||||
+#endif
|
||||
+
|
||||
static void InitializeCommonInterceptors() {
|
||||
static u64 metadata_mem[sizeof(MetadataHashMap) / sizeof(u64) + 1];
|
||||
interceptor_metadata_map = new((void *)&metadata_mem) MetadataHashMap();
|
||||
@@ -6687,6 +7488,7 @@ static void InitializeCommonInterceptors
|
||||
@@ -6687,6 +7590,7 @@ static void InitializeCommonInterceptors
|
||||
INIT_GETSOCKOPT;
|
||||
INIT_ACCEPT;
|
||||
INIT_ACCEPT4;
|
||||
|
@ -932,7 +1048,15 @@ $NetBSD$
|
|||
INIT_MODF;
|
||||
INIT_RECVMSG;
|
||||
INIT_SENDMSG;
|
||||
@@ -6827,6 +7629,15 @@ static void InitializeCommonInterceptors
|
||||
@@ -6809,6 +7713,7 @@ static void InitializeCommonInterceptors
|
||||
INIT_SEND_SENDTO;
|
||||
INIT_STAT;
|
||||
INIT_EVENTFD_READ_WRITE;
|
||||
+ INIT_LSTAT;
|
||||
INIT___XSTAT;
|
||||
INIT___XSTAT64;
|
||||
INIT___LXSTAT;
|
||||
@@ -6827,6 +7732,17 @@ static void InitializeCommonInterceptors
|
||||
INIT_ACCESS;
|
||||
INIT_FACCESSAT;
|
||||
INIT_GETGROUPLIST;
|
||||
|
@ -945,6 +1069,8 @@ $NetBSD$
|
|||
+ INIT_FGETLN;
|
||||
+ INIT_GETPROTOENT;
|
||||
+ INIT_GETNETENT;
|
||||
+ INIT_FTS;
|
||||
+ INIT_STRMODE;
|
||||
|
||||
#if SANITIZER_NETBSD
|
||||
COMMON_INTERCEPT_FUNCTION(__libc_mutex_lock);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
$NetBSD$
|
||||
|
||||
--- lib/sanitizer_common/sanitizer_netbsd_interceptors_ioctl.inc.orig 2018-01-22 23:12:45.620394449 +0000
|
||||
--- lib/sanitizer_common/sanitizer_netbsd_interceptors_ioctl.inc.orig 2018-01-23 22:46:48.355067025 +0000
|
||||
+++ lib/sanitizer_common/sanitizer_netbsd_interceptors_ioctl.inc
|
||||
@@ -0,0 +1,1490 @@
|
||||
+//===-- sanitizer_common_interceptors_ioctl.inc -----------------*- C++ -*-===//
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
$NetBSD$
|
||||
|
||||
--- lib/sanitizer_common/sanitizer_netbsd_syscalls.inc.orig 2018-01-22 23:12:45.621254703 +0000
|
||||
--- lib/sanitizer_common/sanitizer_netbsd_syscalls.inc.orig 2018-01-23 22:46:48.355958439 +0000
|
||||
+++ lib/sanitizer_common/sanitizer_netbsd_syscalls.inc
|
||||
@@ -0,0 +1,3793 @@
|
||||
+//===-- sanitizer_common_syscalls.inc ---------------------------*- C++ -*-===//
|
||||
|
|
|
@ -10,7 +10,15 @@ $NetBSD$
|
|||
#define SANITIZER_INTERCEPT_MODF SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_RECVMSG SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_SENDMSG SI_POSIX
|
||||
@@ -440,5 +441,14 @@
|
||||
@@ -405,6 +406,7 @@
|
||||
|
||||
#define SANITIZER_INTERCEPT_STAT \
|
||||
(SI_FREEBSD || SI_MAC || SI_ANDROID || SI_NETBSD || SI_SOLARIS)
|
||||
+#define SANITIZER_INTERCEPT_LSTAT SI_NETBSD
|
||||
#define SANITIZER_INTERCEPT___XSTAT (!SANITIZER_INTERCEPT_STAT && SI_POSIX)
|
||||
#define SANITIZER_INTERCEPT___XSTAT64 SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT___LXSTAT SANITIZER_INTERCEPT___XSTAT
|
||||
@@ -440,5 +442,16 @@
|
||||
#define SANITIZER_INTERCEPT_ACCESS SI_NETBSD
|
||||
#define SANITIZER_INTERCEPT_FACCESSAT SI_NETBSD
|
||||
#define SANITIZER_INTERCEPT_GETGROUPLIST SI_NETBSD
|
||||
|
@ -23,5 +31,7 @@ $NetBSD$
|
|||
+#define SANITIZER_INTERCEPT_FGETLN SI_NETBSD
|
||||
+#define SANITIZER_INTERCEPT_GETPROTOENT SI_NETBSD
|
||||
+#define SANITIZER_INTERCEPT_GETNETENT SI_NETBSD
|
||||
+#define SANITIZER_INTERCEPT_FTS SI_NETBSD
|
||||
+#define SANITIZER_INTERCEPT_STRMODE SI_NETBSD
|
||||
|
||||
#endif // #ifndef SANITIZER_PLATFORM_INTERCEPTORS_H
|
||||
|
|
|
@ -172,20 +172,24 @@ $NetBSD$
|
|||
#include <sys/shm.h>
|
||||
#include <sys/signal.h>
|
||||
#include <sys/socket.h>
|
||||
@@ -67,6 +208,7 @@
|
||||
@@ -67,6 +208,9 @@
|
||||
#include <utmpx.h>
|
||||
#include <wchar.h>
|
||||
#include <wordexp.h>
|
||||
+#include <ttyent.h>
|
||||
+
|
||||
+#include <fts.h>
|
||||
|
||||
// Include these after system headers to avoid name clashes and ambiguities.
|
||||
#include "sanitizer_internal_defs.h"
|
||||
@@ -99,18 +241,83 @@ unsigned struct_sockaddr_sz = sizeof(str
|
||||
@@ -99,18 +243,85 @@ unsigned struct_sockaddr_sz = sizeof(str
|
||||
unsigned ucontext_t_sz = sizeof(ucontext_t);
|
||||
unsigned struct_rlimit_sz = sizeof(struct rlimit);
|
||||
unsigned struct_timespec_sz = sizeof(struct timespec);
|
||||
+unsigned struct_sembuf_sz = sizeof(struct sembuf);
|
||||
+unsigned struct_kevent_sz = sizeof(struct kevent);
|
||||
+unsigned struct_FTS_sz = sizeof(FTS);
|
||||
+unsigned struct_FTSENT_sz = sizeof(FTSENT);
|
||||
unsigned struct_utimbuf_sz = sizeof(struct utimbuf);
|
||||
unsigned struct_itimerspec_sz = sizeof(struct itimerspec);
|
||||
unsigned struct_timex_sz = sizeof(struct timex);
|
||||
|
@ -264,7 +268,7 @@ $NetBSD$
|
|||
int shmctl_ipc_stat = (int)IPC_STAT;
|
||||
|
||||
unsigned struct_utmp_sz = sizeof(struct utmp);
|
||||
@@ -137,65 +344,1731 @@ int glob_altdirfunc = GLOB_ALTDIRFUNC;
|
||||
@@ -137,65 +348,1731 @@ int glob_altdirfunc = GLOB_ALTDIRFUNC;
|
||||
|
||||
unsigned path_max = PATH_MAX;
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ $NetBSD$
|
|||
|
||||
--- lib/sanitizer_common/sanitizer_platform_limits_netbsd.h.orig 2018-01-15 06:00:16.000000000 +0000
|
||||
+++ lib/sanitizer_common/sanitizer_platform_limits_netbsd.h
|
||||
@@ -57,33 +57,36 @@ extern unsigned ucontext_t_sz;
|
||||
@@ -57,33 +57,38 @@ extern unsigned ucontext_t_sz;
|
||||
extern unsigned struct_rlimit_sz;
|
||||
extern unsigned struct_utimbuf_sz;
|
||||
extern unsigned struct_timespec_sz;
|
||||
|
@ -10,6 +10,8 @@ $NetBSD$
|
|||
|
||||
-struct __sanitizer_iocb {
|
||||
+extern unsigned struct_kevent_sz;
|
||||
+extern unsigned struct_FTS_sz;
|
||||
+extern unsigned struct_FTSENT_sz;
|
||||
+
|
||||
+union __sanitizer_sigval {
|
||||
+ int sival_int;
|
||||
|
@ -60,7 +62,7 @@ $NetBSD$
|
|||
struct __sanitizer_sem_t {
|
||||
uptr data[5];
|
||||
};
|
||||
@@ -110,6 +113,19 @@ struct __sanitizer_shmid_ds {
|
||||
@@ -110,6 +115,19 @@ struct __sanitizer_shmid_ds {
|
||||
void *_shm_internal;
|
||||
};
|
||||
|
||||
|
@ -80,7 +82,7 @@ $NetBSD$
|
|||
extern unsigned struct_msqid_ds_sz;
|
||||
extern unsigned struct_mq_attr_sz;
|
||||
extern unsigned struct_timex_sz;
|
||||
@@ -131,6 +147,8 @@ struct __sanitizer_ifaddrs {
|
||||
@@ -131,6 +149,8 @@ struct __sanitizer_ifaddrs {
|
||||
unsigned int ifa_addrflags;
|
||||
};
|
||||
|
||||
|
@ -89,7 +91,7 @@ $NetBSD$
|
|||
typedef unsigned __sanitizer_pthread_key_t;
|
||||
|
||||
typedef long long __sanitizer_time_t;
|
||||
@@ -200,6 +218,12 @@ struct __sanitizer_msghdr {
|
||||
@@ -200,6 +220,12 @@ struct __sanitizer_msghdr {
|
||||
unsigned msg_controllen;
|
||||
int msg_flags;
|
||||
};
|
||||
|
@ -102,7 +104,7 @@ $NetBSD$
|
|||
struct __sanitizer_cmsghdr {
|
||||
unsigned cmsg_len;
|
||||
int cmsg_level;
|
||||
@@ -252,6 +276,22 @@ struct __sanitizer_sigaction {
|
||||
@@ -252,6 +278,22 @@ struct __sanitizer_sigaction {
|
||||
int sa_flags;
|
||||
};
|
||||
|
||||
|
@ -125,7 +127,7 @@ $NetBSD$
|
|||
typedef __sanitizer_sigset_t __sanitizer_kernel_sigset_t;
|
||||
|
||||
struct __sanitizer_kernel_sigaction_t {
|
||||
@@ -309,6 +349,8 @@ struct __sanitizer_pollfd {
|
||||
@@ -309,6 +351,8 @@ struct __sanitizer_pollfd {
|
||||
|
||||
typedef unsigned __sanitizer_nfds_t;
|
||||
|
||||
|
@ -134,7 +136,7 @@ $NetBSD$
|
|||
struct __sanitizer_glob_t {
|
||||
uptr gl_pathc;
|
||||
uptr gl_matchc;
|
||||
@@ -328,6 +370,54 @@ extern int glob_altdirfunc;
|
||||
@@ -328,6 +372,54 @@ extern int glob_altdirfunc;
|
||||
|
||||
extern unsigned path_max;
|
||||
|
||||
|
@ -189,7 +191,7 @@ $NetBSD$
|
|||
struct __sanitizer_wordexp_t {
|
||||
uptr we_wordc;
|
||||
char **we_wordv;
|
||||
@@ -361,6 +451,53 @@ struct __sanitizer_ifconf {
|
||||
@@ -361,6 +453,53 @@ struct __sanitizer_ifconf {
|
||||
} ifc_ifcu;
|
||||
};
|
||||
|
||||
|
@ -243,7 +245,7 @@ $NetBSD$
|
|||
#define IOC_NRBITS 8
|
||||
#define IOC_TYPEBITS 8
|
||||
#define IOC_SIZEBITS 14
|
||||
@@ -385,185 +522,1712 @@ struct __sanitizer_ifconf {
|
||||
@@ -385,185 +524,1712 @@ struct __sanitizer_ifconf {
|
||||
#define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK)
|
||||
#define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
$NetBSD$
|
||||
|
||||
--- test/sanitizer_common/TestCases/NetBSD/kvm_open.cc.orig 2018-01-22 23:12:45.623442152 +0000
|
||||
--- test/sanitizer_common/TestCases/NetBSD/kvm_open.cc.orig 2018-01-23 22:46:48.358301060 +0000
|
||||
+++ test/sanitizer_common/TestCases/NetBSD/kvm_open.cc
|
||||
@@ -0,0 +1,13 @@
|
||||
+// RUN: %clangxx -O0 -g %s -o %t && %run %t
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
$NetBSD$
|
||||
|
||||
--- test/sanitizer_common/TestCases/NetBSD/kvm_openfiles.cc.orig 2018-01-22 23:12:45.623530010 +0000
|
||||
--- test/sanitizer_common/TestCases/NetBSD/kvm_openfiles.cc.orig 2018-01-23 22:46:48.358411709 +0000
|
||||
+++ test/sanitizer_common/TestCases/NetBSD/kvm_openfiles.cc
|
||||
@@ -0,0 +1,13 @@
|
||||
+// RUN: %clangxx -O0 -g %s -o %t && %run %t
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
$NetBSD$
|
||||
|
||||
--- test/sanitizer_common/TestCases/NetBSD/paccept.cc.orig 2018-01-22 23:12:45.623624921 +0000
|
||||
--- test/sanitizer_common/TestCases/NetBSD/paccept.cc.orig 2018-01-23 22:46:48.358540436 +0000
|
||||
+++ test/sanitizer_common/TestCases/NetBSD/paccept.cc
|
||||
@@ -0,0 +1,74 @@
|
||||
+// RUN: %clangxx -O0 -g %s -o %t && %run %t
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
$NetBSD$
|
||||
|
||||
--- test/sanitizer_common/TestCases/NetBSD/strlcat.cc.orig 2018-01-22 23:12:45.623715166 +0000
|
||||
--- test/sanitizer_common/TestCases/NetBSD/strlcat.cc.orig 2018-01-23 22:46:48.358653350 +0000
|
||||
+++ test/sanitizer_common/TestCases/NetBSD/strlcat.cc
|
||||
@@ -0,0 +1,56 @@
|
||||
+// RUN: %clangxx -O0 -g %s -o %t && %run %t
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
$NetBSD$
|
||||
|
||||
--- test/sanitizer_common/TestCases/NetBSD/strlcpy.cc.orig 2018-01-22 23:12:45.623811564 +0000
|
||||
--- test/sanitizer_common/TestCases/NetBSD/strlcpy.cc.orig 2018-01-23 22:46:48.358762029 +0000
|
||||
+++ test/sanitizer_common/TestCases/NetBSD/strlcpy.cc
|
||||
@@ -0,0 +1,56 @@
|
||||
+// RUN: %clangxx -O0 -g %s -o %t && %run %t
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
$NetBSD$
|
||||
|
||||
--- utils/generate_netbsd_ioctls.awk.orig 2018-01-22 23:12:45.624127411 +0000
|
||||
--- utils/generate_netbsd_ioctls.awk.orig 2018-01-23 22:46:48.359108232 +0000
|
||||
+++ utils/generate_netbsd_ioctls.awk
|
||||
@@ -0,0 +1,755 @@
|
||||
+#!/usr/bin/awk -f
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
$NetBSD$
|
||||
|
||||
--- utils/generate_netbsd_syscalls.awk.orig 2018-01-22 23:12:45.624782606 +0000
|
||||
--- utils/generate_netbsd_syscalls.awk.orig 2018-01-23 22:46:48.359824628 +0000
|
||||
+++ utils/generate_netbsd_syscalls.awk
|
||||
@@ -0,0 +1,2989 @@
|
||||
+#!/usr/bin/awk -f
|
||||
|
|
Loading…
Reference in New Issue