1 : // Copyright 2014 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 : // Defines the Asan CRT interceptors.
16 : #ifndef SYZYGY_AGENT_ASAN_CRT_INTERCEPTORS_H_
17 : #define SYZYGY_AGENT_ASAN_CRT_INTERCEPTORS_H_
18 :
19 m : namespace agent {
20 m : namespace asan {
21 :
22 m : class Shadow;
23 :
24 : // Configures the shadow memory to be used by the CRT interceptors.
25 : // @param shadow The shadow memory to use. May be null, effectively
26 : // disabling the interceptors.
27 : // @returns the previously configured shadow memory.
28 m : Shadow* SetCrtInterceptorShadow(Shadow* shadow);
29 :
30 m : } // namespace asan
31 m : } // namespace agent
32 :
33 : // Exposes the CRT interceptors.
34 m : extern "C" {
35 :
36 m : void* __cdecl asan_memcpy(unsigned char* destination,
37 m : const unsigned char* source,
38 m : size_t num);
39 :
40 m : void* __cdecl asan_memmove(unsigned char* destination,
41 m : const unsigned char* source,
42 m : size_t num);
43 :
44 m : void* __cdecl asan_memset(unsigned char* ptr, int value, size_t num);
45 :
46 m : const void* __cdecl asan_memchr(const unsigned char* ptr,
47 m : int value,
48 m : size_t num);
49 :
50 m : size_t __cdecl asan_strcspn(const char* str1, const char* str2);
51 :
52 m : size_t __cdecl asan_strlen(const char* str);
53 :
54 m : const char* __cdecl asan_strrchr(const char* str, int character);
55 :
56 m : const wchar_t* asan_wcsrchr(const wchar_t* str, wchar_t character);
57 :
58 m : const wchar_t* asan_wcschr(const wchar_t* str, wchar_t character);
59 :
60 m : int __cdecl asan_strcmp(const char* str1, const char* str2);
61 :
62 m : const char* __cdecl asan_strpbrk(const char* str1, const char* str2);
63 :
64 m : const char* __cdecl asan_strstr(const char* str1, const char* str2);
65 :
66 m : const wchar_t* asan_wcsstr(const wchar_t* str, const wchar_t* keys);
67 :
68 m : size_t __cdecl asan_strspn(const char* str1, const char* str2);
69 :
70 m : char* __cdecl asan_strncpy(char* destination, const char* source, size_t num);
71 :
72 m : char* __cdecl asan_strncat(char* destination, const char* source, size_t num);
73 :
74 m : } // extern "C"
75 :
76 : #endif // SYZYGY_AGENT_ASAN_CRT_INTERCEPTORS_H_
|