Author: miyuki Date: Tue Jul 9 08:29:06 2019 New Revision: 365505 URL: http://llvm.org/viewvc/llvm-project?rev=365505&view=rev Log: [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 Modified: libunwind/trunk/src/Unwind-EHABI.cpp Modified: libunwind/trunk/src/Unwind-EHABI.cpp URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/Unwind-EHABI.cpp?rev=365505&r1=365504&r2=365505&view=diff ============================================================================== --- libunwind/trunk/src/Unwind-EHABI.cpp (original) +++ libunwind/trunk/src/Unwind-EHABI.cpp Tue Jul 9 08:29:06 2019 @@ -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) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits