forked from OSchip/llvm-project
[LLDB] Avoid using InitializeContext for zero-initializing a CONTEXT. NFC.
InitializeContext is useful for allocating a (potentially variable size) CONTEXT struct in an unaligned byte buffer. In this case, we already have a fixed size CONTEXT we want to initialize, and we only used this as a very roundabout way of zero initializing it. Instead just memset the CONTEXT we have, and set the ContextFlags field manually. This matches how it is done in NativeRegisterContextWindows_*.cpp. This also makes LLDB run successfully in Wine (for a trivial tested case at least), as Wine hasn't implemented the InitializeContext function. Differential Revision: https://reviews.llvm.org/D70742
This commit is contained in:
parent
3a280422b6
commit
344bdeb797
|
@ -154,15 +154,8 @@ bool RegisterContextWindows::CacheAllRegisterValues() {
|
|||
return true;
|
||||
|
||||
TargetThreadWindows &wthread = static_cast<TargetThreadWindows &>(m_thread);
|
||||
uint8_t buffer[2048];
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
PCONTEXT tmpContext = NULL;
|
||||
DWORD contextLength = (DWORD)sizeof(buffer);
|
||||
if (!::InitializeContext(buffer, kWinContextFlags, &tmpContext,
|
||||
&contextLength)) {
|
||||
return false;
|
||||
}
|
||||
memcpy(&m_context, tmpContext, sizeof(m_context));
|
||||
memset(&m_context, 0, sizeof(m_context));
|
||||
m_context.ContextFlags = kWinContextFlags;
|
||||
if (::SuspendThread(
|
||||
wthread.GetHostThread().GetNativeThread().GetSystemHandle()) ==
|
||||
(DWORD)-1) {
|
||||
|
|
Loading…
Reference in New Issue