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().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166234 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Kevin Enderby 2012-10-18 21:49:18 +00:00
parent 6220fb16c1
commit 88d12663ab

View File

@ -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;