diff options
author | Kevin Enderby <enderby@apple.com> | 2012-10-18 21:49:18 +0000 |
---|---|---|
committer | Kevin Enderby <enderby@apple.com> | 2012-10-18 21:49:18 +0000 |
commit | b23926d3959f9c5f95bf75da5f394c0b4f0de87d (patch) | |
tree | 4f8338c65e11e1093fecb4acd12690622ea1ad39 | |
parent | 451dffaf64a0e53dc05be9b2b9449441efb25394 (diff) | |
download | bcm5719-llvm-b23926d3959f9c5f95bf75da5f394c0b4f0de87d.tar.gz bcm5719-llvm-b23926d3959f9c5f95bf75da5f394c0b4f0de87d.zip |
Fix a bug where a 32-bit address with the high bit does not get symbolicated
because the value is incorrectly being signed extended when passed to
SymbolLookUp().
llvm-svn: 166234
-rw-r--r-- | llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp b/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp index bf0dabb4a0f..d2b1cc37f21 100644 --- a/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp +++ b/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp @@ -525,8 +525,9 @@ static bool tryAddingSymbolicOperand(uint64_t Address, int32_t Value, else ReferenceType = LLVMDisassembler_ReferenceType_InOut_None; const char *ReferenceName; - const char *Name = SymbolLookUp(DisInfo, Value, &ReferenceType, Address, - &ReferenceName); + uint64_t SymbolValue = 0x00000000ffffffffULL & Value; + const char *Name = SymbolLookUp(DisInfo, SymbolValue, &ReferenceType, + Address, &ReferenceName); if (Name) { SymbolicOp.AddSymbol.Name = Name; SymbolicOp.AddSymbol.Present = true; |