1//===-- sanitizer_interface_internal.h --------------------------*- C++ -*-===// 2// 3// This file is distributed under the University of Illinois Open Source 4// License. See LICENSE.TXT for details. 5// 6//===----------------------------------------------------------------------===// 7// 8// This file is shared between run-time libraries of sanitizers. 9// 10// This header declares the sanitizer runtime interface functions. 11// The runtime library has to define these functions so the instrumented program 12// could call them. 13// 14// See also include/sanitizer/common_interface_defs.h 15//===----------------------------------------------------------------------===// 16#ifndef SANITIZER_INTERFACE_INTERNAL_H 17#define SANITIZER_INTERFACE_INTERNAL_H 18 19#include "sanitizer_internal_defs.h" 20 21extern "C" { 22 // Tell the tools to write their reports to "path.<pid>" instead of stderr. 23 // The special values are "stdout" and "stderr". 24 SANITIZER_INTERFACE_ATTRIBUTE 25 void __sanitizer_set_report_path(const char *path); 26 // Tell the tools to write their reports to the provided file descriptor 27 // (casted to void *). 28 SANITIZER_INTERFACE_ATTRIBUTE 29 void __sanitizer_set_report_fd(void *fd); 30 31 typedef struct { 32 int coverage_sandboxed; 33 __sanitizer::sptr coverage_fd; 34 unsigned int coverage_max_block_size; 35 } __sanitizer_sandbox_arguments; 36 37 // Notify the tools that the sandbox is going to be turned on. 38 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void 39 __sanitizer_sandbox_on_notify(__sanitizer_sandbox_arguments *args); 40 41 // This function is called by the tool when it has just finished reporting 42 // an error. 'error_summary' is a one-line string that summarizes 43 // the error message. This function can be overridden by the client. 44 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 45 void __sanitizer_report_error_summary(const char *error_summary); 46 47 SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_cov_dump(); 48 SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_dump_coverage( 49 const __sanitizer::uptr *pcs, const __sanitizer::uptr len); 50 SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_dump_trace_pc_guard_coverage(); 51 52 SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_cov(__sanitizer::u32 *guard); 53 54 // Returns 1 on the first call, then returns 0 thereafter. Called by the tool 55 // to ensure only one report is printed when multiple errors occur 56 // simultaneously. 57 SANITIZER_INTERFACE_ATTRIBUTE int __sanitizer_acquire_crash_state(); 58 59 SANITIZER_INTERFACE_ATTRIBUTE 60 void __sanitizer_annotate_contiguous_container(const void *beg, 61 const void *end, 62 const void *old_mid, 63 const void *new_mid); 64 SANITIZER_INTERFACE_ATTRIBUTE 65 int __sanitizer_verify_contiguous_container(const void *beg, const void *mid, 66 const void *end); 67 SANITIZER_INTERFACE_ATTRIBUTE 68 const void *__sanitizer_contiguous_container_find_bad_address( 69 const void *beg, const void *mid, const void *end); 70 71 SANITIZER_INTERFACE_ATTRIBUTE 72 int __sanitizer_get_module_and_offset_for_pc( 73 __sanitizer::uptr pc, char *module_path, 74 __sanitizer::uptr module_path_len, __sanitizer::uptr *pc_offset); 75 76 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 77 void __sanitizer_cov_trace_cmp(); 78 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 79 void __sanitizer_cov_trace_cmp1(); 80 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 81 void __sanitizer_cov_trace_cmp2(); 82 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 83 void __sanitizer_cov_trace_cmp4(); 84 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 85 void __sanitizer_cov_trace_cmp8(); 86 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 87 void __sanitizer_cov_trace_const_cmp1(); 88 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 89 void __sanitizer_cov_trace_const_cmp2(); 90 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 91 void __sanitizer_cov_trace_const_cmp4(); 92 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 93 void __sanitizer_cov_trace_const_cmp8(); 94 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 95 void __sanitizer_cov_trace_switch(); 96 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 97 void __sanitizer_cov_trace_div4(); 98 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 99 void __sanitizer_cov_trace_div8(); 100 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 101 void __sanitizer_cov_trace_gep(); 102 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 103 void __sanitizer_cov_trace_pc_indir(); 104 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 105 void __sanitizer_cov_trace_pc_guard(__sanitizer::u32*); 106 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 107 void __sanitizer_cov_trace_pc_guard_init(__sanitizer::u32*, 108 __sanitizer::u32*); 109 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 110 void __sanitizer_cov_8bit_counters_init(); 111 SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 112 void __sanitizer_cov_pcs_init(); 113} // extern "C" 114 115#endif // SANITIZER_INTERFACE_INTERNAL_H 116