[libunwind] Fix Unwind-EHABI.cpp:getByte on big-endian targets

Summary:
The function getByte is dependent on endianness and the current
behavior is incorrect on big-endian targets.

This patch fixes the issue.

Reviewers: phosek, ostannard, dmgreen, christof, chill

Reviewed By: ostannard, chill

Subscribers: chill, christof, libcxx-commits

Tags: #libc

Differential Revision: https://reviews.llvm.org/D64402

llvm-svn: 365505
This commit is contained in:
Mikhail Maltsev 2019-07-09 15:29:06 +00:00
parent 57603cbde8
commit a448ed99df
1 changed files with 4 additions and 0 deletions

View File

@ -31,7 +31,11 @@ namespace {
// signinficant byte.
uint8_t getByte(const uint32_t* data, size_t offset) {
const uint8_t* byteData = reinterpret_cast<const uint8_t*>(data);
#ifdef __LITTLE_ENDIAN__
return byteData[(offset & ~(size_t)0x03) + (3 - (offset & (size_t)0x03))];
#else
return byteData[offset];
#endif
}
const char* getNextWord(const char* data, uint32_t* out) {