Properly sign extend sdata2/4 in unwinder. Patch by Patrick Wildt

llvm-svn: 206122
This commit is contained in:
Nick Kledzik 2014-04-12 23:22:52 +00:00
parent 74ebf58742
commit 0f64d66304
1 changed files with 4 additions and 2 deletions

View File

@ -196,12 +196,14 @@ inline LocalAddressSpace::pint_t LocalAddressSpace::getEncodedP(pint_t &addr,
result = (pint_t)getSLEB128(addr, end);
break;
case DW_EH_PE_sdata2:
result = (uint16_t)get16(addr);
// Sign extend from signed 16-bit value.
result = (int16_t)get16(addr);
p += 2;
addr = (pint_t) p;
break;
case DW_EH_PE_sdata4:
result = (uint32_t)get32(addr);
// Sign extend from signed 32-bit value.
result = (int32_t)get32(addr);
p += 4;
addr = (pint_t) p;
break;