2
0
Brian Fiete 5 жил өмнө
parent
commit
5b25039ff4

+ 4 - 0
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 }")

+ 3 - 2
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;