Index: head/devel/llvm40/files/compiler-rt/patch-lib_sanitizer__common_sanitizer__linux.cc =================================================================== --- head/devel/llvm40/files/compiler-rt/patch-lib_sanitizer__common_sanitizer__linux.cc (revision 467785) +++ head/devel/llvm40/files/compiler-rt/patch-lib_sanitizer__common_sanitizer__linux.cc (revision 467786) @@ -1,35 +1,41 @@ -diff --git lib/sanitizer_common/sanitizer_linux.cc lib/sanitizer_common/sanitizer_linux.cc -index 7328a5c0ac1..4b59a39ee27 100644 ---- lib/sanitizer_common/sanitizer_linux.cc -+++ lib/sanitizer_common/sanitizer_linux.cc -@@ -223,7 +223,8 @@ static void kernel_stat_to_stat(struct kernel_stat *in, struct stat *out) { +--- lib/sanitizer_common/sanitizer_linux.cc.orig 2017-01-06 20:57:47.000000000 +0000 ++++ lib/sanitizer_common/sanitizer_linux.cc 2018-04-19 17:03:38.293789000 +0100 +@@ -63,7 +63,6 @@ + #include + #include + #include +-#include + #include + extern "C" { + // must be included after and on +@@ -223,7 +222,8 @@ static void kernel_stat_to_stat(struct k uptr internal_stat(const char *path, void *buf) { #if SANITIZER_FREEBSD - return internal_syscall(SYSCALL(stat), path, buf); + return internal_syscall(SYSCALL(fstatat), AT_FDCWD, (uptr)path, + (uptr)buf, 0); #elif SANITIZER_USES_CANONICAL_LINUX_SYSCALLS return internal_syscall(SYSCALL(newfstatat), AT_FDCWD, (uptr)path, (uptr)buf, 0); -@@ -247,7 +248,8 @@ uptr internal_stat(const char *path, void *buf) { +@@ -247,7 +247,8 @@ uptr internal_stat(const char *path, voi uptr internal_lstat(const char *path, void *buf) { #if SANITIZER_FREEBSD - return internal_syscall(SYSCALL(lstat), path, buf); + return internal_syscall(SYSCALL(fstatat), AT_FDCWD, (uptr)path, + (uptr)buf, AT_SYMLINK_NOFOLLOW); #elif SANITIZER_USES_CANONICAL_LINUX_SYSCALLS return internal_syscall(SYSCALL(newfstatat), AT_FDCWD, (uptr)path, (uptr)buf, AT_SYMLINK_NOFOLLOW); -@@ -590,7 +592,9 @@ uptr internal_getppid() { +@@ -590,7 +591,9 @@ uptr internal_getppid() { } uptr internal_getdents(fd_t fd, struct linux_dirent *dirp, unsigned int count) { -#if SANITIZER_USES_CANONICAL_LINUX_SYSCALLS +#if SANITIZER_FREEBSD + return internal_syscall(SYSCALL(getdirentries), fd, (uptr)dirp, count, NULL); +#elif SANITIZER_USES_CANONICAL_LINUX_SYSCALLS return internal_syscall(SYSCALL(getdents64), fd, (uptr)dirp, count); #else return internal_syscall(SYSCALL(getdents), fd, (uptr)dirp, count);