forked from OSchip/llvm-project
Make 32-bit member offset in Archive::Symbol::getMember 64-bit
When accessing a member for a symbol with an offset greater than 2^32 - 1 the current Archive::Symbol::getMember implementation will overflow and cause unexpected behavior. This change simply fixes that. In particular if you call "llvm-nm --print-armap" on an archive that has this behavior you'll get an error. Differential Revision: https://reviews.llvm.org/D39379 llvm-svn: 316801
This commit is contained in:
parent
4ab13cda81
commit
de370414e3
|
@ -801,7 +801,7 @@ Expected<Archive::Child> Archive::Symbol::getMember() const {
|
|||
Offsets += sizeof(uint64_t);
|
||||
else
|
||||
Offsets += sizeof(uint32_t);
|
||||
uint32_t Offset = 0;
|
||||
uint64_t Offset = 0;
|
||||
if (Parent->kind() == K_GNU) {
|
||||
Offset = read32be(Offsets + SymbolIndex * 4);
|
||||
} else if (Parent->kind() == K_GNU64) {
|
||||
|
|
Loading…
Reference in New Issue