You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
1.2 KiB
24 lines
1.2 KiB
2016-05-26 Martin Sebor <msebor@redhat.com> |
|
Jakub Jelinek <jakub@redhat.com> |
|
|
|
* asan/asan_rtl.cc (InitializeHighMemEnd): Backport part of upstream |
|
r221457 fix and typo fix from r206158. |
|
|
|
--- libsanitizer/asan/asan_rtl.cc.jj 2013-03-04 12:44:18.000000000 +0100 |
|
+++ libsanitizer/asan/asan_rtl.cc 2016-05-26 09:57:10.761973999 +0200 |
|
@@ -308,11 +308,13 @@ static void InitializeHighMemEnd() { |
|
# if defined(__powerpc64__) |
|
// FIXME: |
|
// On PowerPC64 we have two different address space layouts: 44- and 46-bit. |
|
- // We somehow need to figure our which one we are using now and choose |
|
+ // 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. |
|
- kHighMemEnd = (1ULL << 44) - 1; // 0x00000fffffffffffUL |
|
+ // This should (does) work for both PowerPC64 Endian modes. |
|
+ kHighMemEnd = |
|
+ (1ULL << (MostSignificantSetBitIndex(GET_CURRENT_FRAME()) + 1)) - 1; |
|
# else |
|
kHighMemEnd = (1ULL << 47) - 1; // 0x00007fffffffffffUL; |
|
# endif
|
|
|