mirror of git://gcc.gnu.org/git/gcc.git
re PR other/85161 (Test case failures in libbacktrace on powerpc64 BE starting with r253456)
PR other/85161 * elf.c (elf_zlib_fetch): Fix up predefined macro names in test for big endian, only use 32-bit loads if endianity macros are predefined and indicate big or little endian. From-SVN: r259096
This commit is contained in:
parent
600583ab73
commit
c5c4b2ae6e
|
|
@ -1,3 +1,10 @@
|
||||||
|
2018-04-04 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR other/85161
|
||||||
|
* elf.c (elf_zlib_fetch): Fix up predefined macro names in test for
|
||||||
|
big endian, only use 32-bit loads if endianity macros are predefined
|
||||||
|
and indicate big or little endian.
|
||||||
|
|
||||||
2018-02-14 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
|
2018-02-14 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
|
||||||
|
|
||||||
PR target/84148
|
PR target/84148
|
||||||
|
|
|
||||||
|
|
@ -1086,12 +1086,19 @@ elf_zlib_fetch (const unsigned char **ppin, const unsigned char *pinend,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) \
|
||||||
|
&& defined(__ORDER_BIG_ENDIAN__) \
|
||||||
|
&& (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ \
|
||||||
|
|| __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
|
||||||
/* We've ensured that PIN is aligned. */
|
/* We've ensured that PIN is aligned. */
|
||||||
next = *(const uint32_t *)pin;
|
next = *(const uint32_t *)pin;
|
||||||
|
|
||||||
#if __BYTE_ORDER == __ORDER_BIG_ENDIAN
|
#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
||||||
next = __builtin_bswap32 (next);
|
next = __builtin_bswap32 (next);
|
||||||
#endif
|
#endif
|
||||||
|
#else
|
||||||
|
next = pin[0] | (pin[1] << 8) | (pin[2] << 16) | (pin[3] << 24);
|
||||||
|
#endif
|
||||||
|
|
||||||
val |= (uint64_t)next << bits;
|
val |= (uint64_t)next << bits;
|
||||||
bits += 32;
|
bits += 32;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue