This revision was automatically updated to reflect the committed changes. Closed by commit rGaf4f40c376f5: [LLDB] NativeThreadLinux invalidate register cache on stop (authored by omjavaid). Herald added a project: LLDB.
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D84501/new/ https://reviews.llvm.org/D84501 Files: lldb/source/Plugins/Process/Linux/NativeThreadLinux.cpp Index: lldb/source/Plugins/Process/Linux/NativeThreadLinux.cpp =================================================================== --- lldb/source/Plugins/Process/Linux/NativeThreadLinux.cpp +++ lldb/source/Plugins/Process/Linux/NativeThreadLinux.cpp @@ -241,9 +241,6 @@ if (signo != LLDB_INVALID_SIGNAL_NUMBER) data = signo; - // Before thread resumes, clear any cached register data structures - GetRegisterContext().InvalidateAllRegisters(); - return NativeProcessLinux::PtraceWrapper(PTRACE_CONT, GetID(), nullptr, reinterpret_cast<void *>(data)); } @@ -265,9 +262,6 @@ if (signo != LLDB_INVALID_SIGNAL_NUMBER) data = signo; - // Before thread resumes, clear any cached register data structures - GetRegisterContext().InvalidateAllRegisters(); - // If hardware single-stepping is not supported, we just do a continue. The // breakpoint on the next instruction has been setup in // NativeProcessLinux::Resume. @@ -325,6 +319,9 @@ if (m_state == StateType::eStateStepping) m_step_workaround.reset(); + // On every stop, clear any cached register data structures + GetRegisterContext().InvalidateAllRegisters(); + const StateType new_state = StateType::eStateStopped; MaybeLogStateChange(new_state); m_state = new_state;
Index: lldb/source/Plugins/Process/Linux/NativeThreadLinux.cpp =================================================================== --- lldb/source/Plugins/Process/Linux/NativeThreadLinux.cpp +++ lldb/source/Plugins/Process/Linux/NativeThreadLinux.cpp @@ -241,9 +241,6 @@ if (signo != LLDB_INVALID_SIGNAL_NUMBER) data = signo; - // Before thread resumes, clear any cached register data structures - GetRegisterContext().InvalidateAllRegisters(); - return NativeProcessLinux::PtraceWrapper(PTRACE_CONT, GetID(), nullptr, reinterpret_cast<void *>(data)); } @@ -265,9 +262,6 @@ if (signo != LLDB_INVALID_SIGNAL_NUMBER) data = signo; - // Before thread resumes, clear any cached register data structures - GetRegisterContext().InvalidateAllRegisters(); - // If hardware single-stepping is not supported, we just do a continue. The // breakpoint on the next instruction has been setup in // NativeProcessLinux::Resume. @@ -325,6 +319,9 @@ if (m_state == StateType::eStateStepping) m_step_workaround.reset(); + // On every stop, clear any cached register data structures + GetRegisterContext().InvalidateAllRegisters(); + const StateType new_state = StateType::eStateStopped; MaybeLogStateChange(new_state); m_state = new_state;
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits