diff --git a/IDE/Tests/Test1/scripts/Data01.txt b/IDE/Tests/Test1/scripts/Data01.txt index f4c9e851..adea55a3 100644 --- a/IDE/Tests/Test1/scripts/Data01.txt +++ b/IDE/Tests/Test1/scripts/Data01.txt @@ -6,4 +6,8 @@ RunWithCompiling() AssertEvalEquals("sizeof(Derived)", "13") AssertEvalEquals("strideof(Derived)", "16") AssertEvalEquals("alignof(Derived)", "8") + +# The following fails on Win32 due to LLVM debug info bugs +if (platform != "Win64") Stop() + AssertEvalEquals("iVal", "{ 123 }") \ No newline at end of file diff --git a/IDEHelper/COFF.cpp b/IDEHelper/COFF.cpp index ae2c4799..682199df 100644 --- a/IDEHelper/COFF.cpp +++ b/IDEHelper/COFF.cpp @@ -6123,8 +6123,9 @@ addr_target COFF::EvaluateLocation(DbgSubprogram* dwSubprogram, const uint8* loc result = stackFrame->mRegisters.mIntRegsArray[X86Reg_EBP] + defRangeFPRel.offFramePointer; } else - //result = stackFrame->mRegisters.mIntRegsArray[X86Reg_EBP] + defRangeFPRel.offFramePointer - 4; - result = ((stackFrame->mRegisters.mIntRegsArray[X86Reg_ESP] + dwSubprogram->mFrameBaseLen) & ~7) + defRangeFPRel.offFramePointer; + result = stackFrame->mRegisters.mIntRegsArray[X86Reg_ESP] + dwSubprogram->mFrameBaseLen + defRangeFPRel.offFramePointer; + //result = stackFrame->mRegisters.mIntRegsArray[X86Reg_EBP] + defRangeFPRel.offFramePointer; + //result = ((stackFrame->mRegisters.mIntRegsArray[X86Reg_ESP] + dwSubprogram->mFrameBaseLen) & ~7) + defRangeFPRel.offFramePointer; } else if (dwSubprogram->mLocalBaseReg == DbgSubprogram::LocalBaseRegKind_EBX) result = stackFrame->mRegisters.mIntRegsArray[X86Reg_EBX] + defRangeFPRel.offFramePointer;