| 1 | // Licensed to the .NET Foundation under one or more agreements. |
| 2 | // The .NET Foundation licenses this file to you under the MIT license. |
| 3 | // See the LICENSE file in the project root for more information. |
| 4 | //***************************************************************************** |
| 5 | // stdafx.h |
| 6 | // |
| 7 | |
| 8 | // |
| 9 | // Common include file for utility code. |
| 10 | //***************************************************************************** |
| 11 | #include <stdio.h> |
| 12 | #include <windows.h> |
| 13 | #include <winnt.h> |
| 14 | |
| 15 | #include <dbgtargetcontext.h> |
| 16 | |
| 17 | #define RIGHT_SIDE_COMPILE |
| 18 | |
| 19 | //----------------------------------------------------------------------------- |
| 20 | // Contracts for RS threading. |
| 21 | // We only do this for debug builds and not for inproc |
| 22 | //----------------------------------------------------------------------------- |
| 23 | #if defined(_DEBUG) |
| 24 | #define RSCONTRACTS |
| 25 | #endif |
| 26 | |
| 27 | |
| 28 | // In case of FEATURE_DBGIPC_TRANSPORT_DI we use pipe for debugger debugee communication |
| 29 | // and event redirection is not needed. (won't work anyway) |
| 30 | #ifndef FEATURE_DBGIPC_TRANSPORT_DI |
| 31 | // Currently, we only can redirect exception events. Since real interop-debugging |
| 32 | // neeeds all events, redirection can't work in real-interop. |
| 33 | // However, whether we're interop-debugging is determined at runtime, so we always |
| 34 | // enable at compile time and then we need a runtime check later. |
| 35 | #define ENABLE_EVENT_REDIRECTION_PIPELINE |
| 36 | #endif |
| 37 | |
| 38 | #include "ex.h" |
| 39 | |
| 40 | #include "sigparser.h" |
| 41 | #include "corpub.h" |
| 42 | #include "rspriv.h" |
| 43 | |
| 44 | // This is included to deal with GCC limitations around templates. |
| 45 | // For GCC, if a compilation unit refers to a templated class (like Ptr<T>), GCC requires the compilation |
| 46 | // unit to have T's definitions for anything that Ptr may call. |
| 47 | // RsPriv.h has a RSExtSmartPtr<ShimProcess>, which will call ShimProcess::AddRef, which means the same compilation unit |
| 48 | // must have the definition of ShimProcess::AddRef, and therefore the whole ShimProcess class. |
| 49 | // CL.exe does not have this problem. |
| 50 | // Practically, this means that anybody that includes rspriv.h must include shimpriv.h. |
| 51 | #include "shimpriv.h" |
| 52 | |
| 53 | #ifdef _DEBUG |
| 54 | #include "utilcode.h" |
| 55 | #endif |
| 56 | |
| 57 | #ifndef _TARGET_ARM_ |
| 58 | #define DbiGetThreadContext(hThread, lpContext) ::GetThreadContext(hThread, (CONTEXT*)(lpContext)) |
| 59 | #define DbiSetThreadContext(hThread, lpContext) ::SetThreadContext(hThread, (CONTEXT*)(lpContext)) |
| 60 | #else |
| 61 | BOOL DbiGetThreadContext(HANDLE hThread, DT_CONTEXT *lpContext); |
| 62 | BOOL DbiSetThreadContext(HANDLE hThread, const DT_CONTEXT *lpContext); |
| 63 | #endif |
| 64 | |