Page MenuHomeFreeBSD

D10797.1793620934.diff
No OneTemporary

Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None

D10797.1793620934.diff

Index: devel/llvm40/Makefile
===================================================================
--- devel/llvm40/Makefile
+++ devel/llvm40/Makefile
@@ -339,6 +339,11 @@
post-extract-OPENMP-on:
${MV} ${WRKSRC_openmp} ${PATCH_WRKSRC}/tools/openmp
+post-patch-COMPILER_RT-on:
+.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1200031
+ cd ${WRKSRC_compiler_rt} && patch < ${PATCHDIR}/compiler-rt-patch-ino64
+.endif
+
post-patch:
${REINPLACE_CMD} -e 's|import lit|import lit${LLVM_SUFFIX}|' \
-e 's|from lit|from lit${LLVM_SUFFIX}|' \
Index: devel/llvm40/files/compiler-rt-patch-ino64
===================================================================
--- devel/llvm40/files/compiler-rt-patch-ino64
+++ devel/llvm40/files/compiler-rt-patch-ino64
@@ -0,0 +1,49 @@
+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) {
+
+ 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) {
+
+ 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() {
+ }
+
+ 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);
+diff --git lib/sanitizer_common/sanitizer_platform_limits_posix.h lib/sanitizer_common/sanitizer_platform_limits_posix.h
+index 5cbd78d3c1b..d7ce7b501f7 100644
+--- lib/sanitizer_common/sanitizer_platform_limits_posix.h
++++ lib/sanitizer_common/sanitizer_platform_limits_posix.h
+@@ -489,7 +489,8 @@ namespace __sanitizer {
+ };
+ #elif SANITIZER_FREEBSD
+ struct __sanitizer_dirent {
+- unsigned int d_fileno;
++ unsigned long long d_fileno;
++ unsigned long long d_off;
+ unsigned short d_reclen;
+ // more fields that we don't care about
+ };

File Metadata

Mime Type
text/plain
Expires
Mon, Nov 2, 12:02 PM (13 h, 38 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41324505
Default Alt Text
D10797.1793620934.diff (2 KB)

Event Timeline