mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
[Support] Fix building for Windows on ARM
The commit in SVN r310001 that added support for this actually didn't use the right struct field for the frame pointer - for ARM, there is no register named Fp in the CONTEXT struct. On Windows, the R11 register is used as frame pointer. Differential Revision: https://reviews.llvm.org/D45590 llvm-svn: 329991
This commit is contained in:
parent
5f50d95003
commit
c50e50418b
@ -533,10 +533,14 @@ void llvm::sys::PrintStackTrace(raw_ostream &OS) {
|
||||
StackFrame.AddrPC.Offset = Context.Eip;
|
||||
StackFrame.AddrStack.Offset = Context.Esp;
|
||||
StackFrame.AddrFrame.Offset = Context.Ebp;
|
||||
#elif defined(_M_ARM64) || defined(_M_ARM)
|
||||
#elif defined(_M_ARM64)
|
||||
StackFrame.AddrPC.Offset = Context.Pc;
|
||||
StackFrame.AddrStack.Offset = Context.Sp;
|
||||
StackFrame.AddrFrame.Offset = Context.Fp;
|
||||
#elif defined(_M_ARM)
|
||||
StackFrame.AddrPC.Offset = Context.Pc;
|
||||
StackFrame.AddrStack.Offset = Context.Sp;
|
||||
StackFrame.AddrFrame.Offset = Context.R11;
|
||||
#endif
|
||||
StackFrame.AddrPC.Mode = AddrModeFlat;
|
||||
StackFrame.AddrStack.Mode = AddrModeFlat;
|
||||
@ -816,7 +820,11 @@ static LONG WINAPI LLVMUnhandledExceptionFilter(LPEXCEPTION_POINTERS ep) {
|
||||
StackFrame.AddrPC.Mode = AddrModeFlat;
|
||||
StackFrame.AddrStack.Offset = ep->ContextRecord->Sp;
|
||||
StackFrame.AddrStack.Mode = AddrModeFlat;
|
||||
#if defined(_M_ARM64)
|
||||
StackFrame.AddrFrame.Offset = ep->ContextRecord->Fp;
|
||||
#else
|
||||
StackFrame.AddrFrame.Offset = ep->ContextRecord->R11;
|
||||
#endif
|
||||
StackFrame.AddrFrame.Mode = AddrModeFlat;
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user