[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:
		
							parent
							
								
									57603cbde8
								
							
						
					
					
						commit
						a448ed99df
					
				| 
						 | 
					@ -31,7 +31,11 @@ namespace {
 | 
				
			||||||
// signinficant byte.
 | 
					// signinficant byte.
 | 
				
			||||||
uint8_t getByte(const uint32_t* data, size_t offset) {
 | 
					uint8_t getByte(const uint32_t* data, size_t offset) {
 | 
				
			||||||
  const uint8_t* byteData = reinterpret_cast<const uint8_t*>(data);
 | 
					  const uint8_t* byteData = reinterpret_cast<const uint8_t*>(data);
 | 
				
			||||||
 | 
					#ifdef __LITTLE_ENDIAN__
 | 
				
			||||||
  return byteData[(offset & ~(size_t)0x03) + (3 - (offset & (size_t)0x03))];
 | 
					  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) {
 | 
					const char* getNextWord(const char* data, uint32_t* out) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue