[Tizen] Implement detecting of sanitized libraries
[platform/upstream/coreclr.git] / src / unwinder / unwinder.h
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 // 
6
7 #ifndef __unwinder_h__
8 #define __unwinder_h__
9
10
11 //---------------------------------------------------------------------------------------
12 //
13 // OOPStackUnwinder is the abstract base class for unwinding stack frames.  Each of the two 64-bit platforms 
14 // has its own derived class.  Although the name of this class and its derived classes have changed, they
15 // are actually borrowed from dbghelp.dll.  (StackWalk64() is built on top of these classes.)  We have ripped
16 // out everything we don't need such as symbol lookup and various state, and keep just enough code to support 
17 // VirtualUnwind().  The managed debugging infrastructure can't call RtlVirtualUnwind() because it doesn't 
18 // work from out-of-processr
19 //
20 // Notes:
21 //    To see what we have changed in the borrowed source, you can diff the original version and our version.
22 //    For example, on X64, you can diff clr\src\Debug\daccess\amd64\dbs_stack_x64.cpp (the original) and 
23 //    clr\src\Debug\daccess\amd64\unwinder_amd64.cpp.
24 //
25
26 class OOPStackUnwinder
27 {
28 protected:
29
30     // Given a control PC, return the base of the module it is in.  For jitted managed code, this is the 
31     // start of the code heap.
32     static HRESULT GetModuleBase(      DWORD64  address,
33                                  __out PDWORD64 pdwBase);
34
35     // Given a control PC, return the function entry of the functoin it is in.
36     static HRESULT GetFunctionEntry(                       DWORD64 address,
37                                     __out_ecount(cbBuffer) PVOID   pBuffer,
38                                                            DWORD   cbBuffer);
39 };
40
41 #endif // __unwinder_h__