Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/external/gpl3/gcc/dist/libsanitizer/sanitizer_common Quick h...
details: https://anonhg.NetBSD.org/src/rev/3291138cffd5
branches: trunk
changeset: 832995:3291138cffd5
user: martin <martin%NetBSD.org@localhost>
date: Mon Jun 04 13:12:54 2018 +0000
description:
Quick hack to fix 32bit big endian platforms: the return value from
__syscall() needs to be shifted into the lower 32bits to form a proper
pointer. Temporarily steal __SYSCALL_TO_UINTPTR_T from the syscall/__syscall
test program, Kamil is working on a proper solution.
diffstat:
external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc | 12 ++++++++-
1 files changed, 10 insertions(+), 2 deletions(-)
diffs (22 lines):
diff -r 062dccc74d2b -r 3291138cffd5 external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc
--- a/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc Mon Jun 04 09:57:19 2018 +0000
+++ b/external/gpl3/gcc/dist/libsanitizer/sanitizer_common/sanitizer_linux.cc Mon Jun 04 13:12:54 2018 +0000
@@ -113,8 +113,16 @@
uptr internal_mmap(void *addr, uptr length, int prot, int flags, int fd,
OFF_T offset) {
#if SANITIZER_NETBSD
- return internal_syscall64(SYSCALL(mmap), addr, length, prot, flags, fd,
- (long)0, offset);
+
+#if !defined(_LP64) && BYTE_ORDER == _BIG_ENDIAN
+#define __SYSCALL_TO_UINTPTR_T(V) ((uintptr_t)((V)>>32))
+#else
+#define __SYSCALL_TO_UINTPTR_T(V) ((uintptr_t)(V))
+#endif
+
+ return __SYSCALL_TO_UINTPTR_T(
+ internal_syscall64(SYSCALL(mmap), addr, length, prot, flags, fd,
+ (long)0, offset));
#elif SANITIZER_FREEBSD || SANITIZER_LINUX_USES_64BIT_SYSCALLS
return internal_syscall(SYSCALL(mmap), (uptr)addr, length, prot, flags, fd,
offset, 0);
Home |
Main Index |
Thread Index |
Old Index