re PR sanitizer/64435 (Bootstrap failure in libsanitizer on AArch64 with Linux kernel <= 3.15)
PR sanitizer/64435 * sanitizer_common/sanitizer_platform_limits_posix.h: Cherry pick upstream r226637. * sanitizer_common/sanitizer_platform_limits_posix.cc: Likewise. * sanitizer_common/sanitizer_posix.cc: Cherry pick upstream r226639. From-SVN: r219968
This commit is contained in:
parent
f1eac18240
commit
8b08ef255b
4 changed files with 17 additions and 4 deletions
|
@ -1,3 +1,11 @@
|
|||
2015-01-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR sanitizer/64435
|
||||
* sanitizer_common/sanitizer_platform_limits_posix.h: Cherry pick
|
||||
upstream r226637.
|
||||
* sanitizer_common/sanitizer_platform_limits_posix.cc: Likewise.
|
||||
* sanitizer_common/sanitizer_posix.cc: Cherry pick upstream r226639.
|
||||
|
||||
2015-01-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR sanitizer/64632
|
||||
|
|
|
@ -1059,7 +1059,13 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
|
|||
CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
|
||||
CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
|
||||
CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
|
||||
#ifndef __GLIBC_PREREQ
|
||||
#define __GLIBC_PREREQ(x, y) 0
|
||||
#endif
|
||||
#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21)
|
||||
/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */
|
||||
CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
|
||||
#endif
|
||||
|
||||
CHECK_TYPE_SIZE(shmid_ds);
|
||||
CHECK_SIZE_AND_OFFSET(shmid_ds, shm_perm);
|
||||
|
|
|
@ -167,7 +167,7 @@ namespace __sanitizer {
|
|||
unsigned __seq;
|
||||
u64 __unused1;
|
||||
u64 __unused2;
|
||||
#elif defined(__mips__)
|
||||
#elif defined(__mips__) || defined(__aarch64__)
|
||||
unsigned int mode;
|
||||
unsigned short __seq;
|
||||
unsigned short __pad1;
|
||||
|
|
|
@ -76,16 +76,15 @@ static uptr GetKernelAreaSize() {
|
|||
|
||||
uptr GetMaxVirtualAddress() {
|
||||
#if SANITIZER_WORDSIZE == 64
|
||||
# if defined(__powerpc64__)
|
||||
# if defined(__powerpc64__) || defined(__aarch64__)
|
||||
// On PowerPC64 we have two different address space layouts: 44- and 46-bit.
|
||||
// We somehow need to figure out which one we are using now and choose
|
||||
// one of 0x00000fffffffffffUL and 0x00003fffffffffffUL.
|
||||
// Note that with 'ulimit -s unlimited' the stack is moved away from the top
|
||||
// of the address space, so simply checking the stack address is not enough.
|
||||
// This should (does) work for both PowerPC64 Endian modes.
|
||||
// Similarly, aarch64 has multiple address space layouts: 39, 42 and 47-bit.
|
||||
return (1ULL << (MostSignificantSetBitIndex(GET_CURRENT_FRAME()) + 1)) - 1;
|
||||
# elif defined(__aarch64__)
|
||||
return (1ULL << 39) - 1;
|
||||
# elif defined(__mips64)
|
||||
return (1ULL << 40) - 1;
|
||||
# else
|
||||
|
|
Loading…
Add table
Reference in a new issue