1 : // Copyright 2012 Google Inc. All Rights Reserved.
2 : //
3 : // Licensed under the Apache License, Version 2.0 (the "License");
4 : // you may not use this file except in compliance with the License.
5 : // You may obtain a copy of the License at
6 : //
7 : // http://www.apache.org/licenses/LICENSE-2.0
8 : //
9 : // Unless required by applicable law or agreed to in writing, software
10 : // distributed under the License is distributed on an "AS IS" BASIS,
11 : // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 : // See the License for the specific language governing permissions and
13 : // limitations under the License.
14 : //
15 : // Implement the ASAN RTL functions.
16 : #ifndef SYZYGY_AGENT_ASAN_ASAN_RTL_IMPL_H_
17 : #define SYZYGY_AGENT_ASAN_ASAN_RTL_IMPL_H_
18 :
19 : #include <windows.h>
20 :
21 : // Exposes the Asan Rtl functions.
22 m : extern "C" {
23 :
24 m : HANDLE WINAPI asan_HeapCreate(DWORD options,
25 m : SIZE_T initial_size,
26 m : SIZE_T maximum_size);
27 :
28 m : BOOL WINAPI asan_HeapDestroy(HANDLE heap);
29 :
30 m : LPVOID WINAPI asan_HeapAlloc(HANDLE heap,
31 m : DWORD flags,
32 m : SIZE_T bytes);
33 :
34 m : LPVOID WINAPI asan_HeapReAlloc(HANDLE heap,
35 m : DWORD flags,
36 m : LPVOID mem,
37 m : SIZE_T bytes);
38 :
39 m : BOOL WINAPI asan_HeapFree(HANDLE heap,
40 m : DWORD flags,
41 m : LPVOID mem);
42 :
43 m : SIZE_T WINAPI asan_HeapSize(HANDLE heap,
44 m : DWORD flags,
45 m : LPCVOID mem);
46 :
47 m : BOOL WINAPI asan_HeapValidate(HANDLE heap,
48 m : DWORD flags,
49 m : LPCVOID mem);
50 :
51 m : SIZE_T WINAPI asan_HeapCompact(HANDLE heap,
52 m : DWORD flags);
53 :
54 m : BOOL WINAPI asan_HeapLock(HANDLE heap);
55 :
56 m : BOOL WINAPI asan_HeapUnlock(HANDLE heap);
57 :
58 m : BOOL WINAPI asan_HeapWalk(HANDLE heap,
59 m : LPPROCESS_HEAP_ENTRY entry);
60 :
61 m : BOOL WINAPI asan_HeapSetInformation(
62 m : HANDLE heap, HEAP_INFORMATION_CLASS info_class,
63 m : PVOID info, SIZE_T info_length);
64 :
65 m : BOOL WINAPI asan_HeapQueryInformation(
66 m : HANDLE heap, HEAP_INFORMATION_CLASS info_class,
67 m : PVOID info, SIZE_T info_length, PSIZE_T return_length);
68 :
69 m : void WINAPI asan_SetCallBack(void (*callback)(CONTEXT*));
70 :
71 m : } // extern "C"
72 :
73 m : namespace agent {
74 m : namespace asan {
75 :
76 m : class AsanRuntime;
77 :
78 : // Initialize the Asan runtime library global variables.
79 : // @param runtime The Asan runtime manager.
80 m : void SetUpRtl(AsanRuntime* runtime);
81 :
82 : // Tear down the runtime library.
83 m : void TearDownRtl();
84 :
85 m : } // namespace asan
86 m : } // namespace agent
87 :
88 : #endif // SYZYGY_AGENT_ASAN_ASAN_RTL_IMPL_H_
|