diff options
author | Mike McLaughlin <mikem@microsoft.com> | 2018-02-26 15:19:00 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-26 15:19:00 -0800 |
commit | 759f0c84fcffa058e5d2ed9ba8a13e47fd28ee5c (patch) | |
tree | b5b29228718c1145154fd7b60e8f674b522e7f80 /src/vm/eedbginterfaceimpl.h | |
parent | 3cb7c002e1325a7614961fd10e9a9f989528370f (diff) | |
download | coreclr-759f0c84fcffa058e5d2ed9ba8a13e47fd28ee5c.tar.gz coreclr-759f0c84fcffa058e5d2ed9ba8a13e47fd28ee5c.tar.bz2 coreclr-759f0c84fcffa058e5d2ed9ba8a13e47fd28ee5c.zip |
Fixed mixed mode attach/JIT debugging. (#16552)
Fixed mixed mode attach/JIT debugging.
The mixed mode debugging attach uses TLS slot to communicate between debugger break-in thread and the right side. Unfortunately, the __thread static variables cannot be used on debugger breakin
thread because of it does not have storage allocated for them.
The fix is to switch the storage for debugger word to classic TlsAlloc allocated slot that works
fine on debugger break-in thread.
There was also problem (that is also in 2.0) where the WINNT_OFFSETOF__TEB__ThreadLocalStoragePointer was using the define for 64/32 bit and ended up always the 32 bit Windows value. This caused the right side GetEEThreadValue, GetEETlsDataBlock unmanaged thread functions to always fail.
Diffstat (limited to 'src/vm/eedbginterfaceimpl.h')
-rw-r--r-- | src/vm/eedbginterfaceimpl.h | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/vm/eedbginterfaceimpl.h b/src/vm/eedbginterfaceimpl.h index 7172e9ae44..293b11d663 100644 --- a/src/vm/eedbginterfaceimpl.h +++ b/src/vm/eedbginterfaceimpl.h @@ -60,8 +60,6 @@ public: Thread* GetThread(void); - void SetEEThreadPtr(VOID* newPtr); - StackWalkAction StackWalkFramesEx(Thread* pThread, PREGDISPLAY pRD, PSTACKWALKFRAMESCALLBACK pCallback, @@ -115,10 +113,11 @@ public: T_CONTEXT *GetThreadFilterContext(Thread *thread); - VOID *GetThreadDebuggerWord(Thread *thread); +#ifdef FEATURE_INTEROP_DEBUGGING + VOID *GetThreadDebuggerWord(); - void SetThreadDebuggerWord(Thread *thread, - VOID *dw); + VOID SetThreadDebuggerWord(VOID *dw); +#endif BOOL IsManagedNativeCode(const BYTE *address); @@ -278,7 +277,6 @@ public: SIZE_T *pEEThreadStateNCOffset, SIZE_T *pEEThreadPGCDisabledOffset, DWORD *pEEThreadPGCDisabledValue, - SIZE_T *pEEThreadDebuggerWordOffset, SIZE_T *pEEThreadFrameOffset, SIZE_T *pEEThreadMaxNeededSize, DWORD *pEEThreadSteppingStateMask, |