asan_interceptors.h revision 88207ab15125e2f1e9b3d541b735b2b8aba9b6d9
1//===-- asan_interceptors.h -------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file is a part of AddressSanitizer, an address sanity checker. 11// 12// ASan-private header for asan_interceptors.cc 13//===----------------------------------------------------------------------===// 14#ifndef ASAN_INTERCEPTORS_H 15#define ASAN_INTERCEPTORS_H 16 17#include "asan_internal.h" 18#include "interception/interception.h" 19 20DECLARE_REAL(int, memcmp, const void *a1, const void *a2, uptr size); 21DECLARE_REAL(void*, memcpy, void *to, const void *from, uptr size); 22DECLARE_REAL(void*, memset, void *block, int c, uptr size); 23DECLARE_REAL(char*, strchr, const char *str, int c); 24DECLARE_REAL(uptr, strlen, const char *s); 25DECLARE_REAL(char*, strncpy, char *to, const char *from, uptr size); 26DECLARE_REAL(uptr, strnlen, const char *s, uptr maxlen); 27struct sigaction; 28DECLARE_REAL(int, sigaction, int signum, const struct sigaction *act, 29 struct sigaction *oldact); 30 31namespace __asan { 32 33// __asan::internal_X() is the implementation of X() for use in RTL. 34s64 internal_atoll(const char *nptr); 35uptr internal_strnlen(const char *s, uptr maxlen); 36char *internal_strstr(const char *haystack, const char *needle); 37char *internal_strncat(char *dst, const char *src, uptr n); 38// Works only for base=10 and doesn't set errno. 39s64 internal_simple_strtoll(const char *nptr, char **endptr, int base); 40 41void InitializeAsanInterceptors(); 42 43#if defined(__APPLE__) 44void InitializeMacInterceptors(); 45#endif // __APPLE__ 46 47} // namespace __asan 48 49#endif // ASAN_INTERCEPTORS_H 50