diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_stoptheworld_win.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_stoptheworld_win.cpp index f114acea79c9c..95e8a9d69daa4 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_stoptheworld_win.cpp +++ b/compiler-rt/lib/sanitizer_common/sanitizer_stoptheworld_win.cpp @@ -49,6 +49,8 @@ struct SuspendedThreadsListWindows final : public SuspendedThreadsList { # define SP_REG Esp # elif SANITIZER_ARM | SANITIZER_ARM64 # define SP_REG Sp +# elif SANITIZER_MIPS +# define SP_REG IntSp # else # error Architecture not supported! # endif diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_unwind_win.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_unwind_win.cpp index 6fc18396ca63b..30ba812afc4b0 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_unwind_win.cpp +++ b/compiler-rt/lib/sanitizer_common/sanitizer_unwind_win.cpp @@ -75,6 +75,11 @@ void BufferedStackTrace::UnwindSlow(uptr pc, void *context, u32 max_depth) { stack_frame.AddrPC.Offset = ctx.Pc; stack_frame.AddrFrame.Offset = ctx.R11; stack_frame.AddrStack.Offset = ctx.Sp; +# elif SANITIZER_MIPS32 + int machine_type = IMAGE_FILE_MACHINE_R4000; + stack_frame.AddrPC.Offset = ctx.Fir; + stack_frame.AddrFrame.Offset = ctx.IntS8; + stack_frame.AddrStack.Offset = ctx.IntSp; # else int machine_type = IMAGE_FILE_MACHINE_I386; stack_frame.AddrPC.Offset = ctx.Eip; diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp index fd0f989ee392b..48ebe78c4031e 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp +++ b/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp @@ -1011,6 +1011,9 @@ void SignalContext::InitPcSpBp() { # if SANITIZER_ARM bp = (uptr)context_record->R11; sp = (uptr)context_record->Sp; +# elif SANITIZER_MIPS32 + bp = (uptr)context_record->IntS8; + sp = (uptr)context_record->IntSp; # else bp = (uptr)context_record->Ebp; sp = (uptr)context_record->Esp;