brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.5 KiB · 387a4d8 Raw
164 lines · c
1//===-- sanitizer_interface_internal.h --------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file is shared between run-time libraries of sanitizers.10//11// This header declares the sanitizer runtime interface functions.12// The runtime library has to define these functions so the instrumented program13// could call them.14//15// See also include/sanitizer/common_interface_defs.h16//===----------------------------------------------------------------------===//17#ifndef SANITIZER_INTERFACE_INTERNAL_H18#define SANITIZER_INTERFACE_INTERNAL_H19 20#include "sanitizer_internal_defs.h"21 22extern "C" {23// Tell the tools to write their reports to "path.<pid>" instead of stderr.24// The special values are "stdout" and "stderr".25SANITIZER_INTERFACE_ATTRIBUTE26void __sanitizer_set_report_path(const char *path);27// Tell the tools to write their reports to the provided file descriptor28// (casted to void *).29SANITIZER_INTERFACE_ATTRIBUTE30void __sanitizer_set_report_fd(void *fd);31// Get the current full report file path, if a path was specified by32// an earlier call to __sanitizer_set_report_path. Returns null otherwise.33SANITIZER_INTERFACE_ATTRIBUTE34const char *__sanitizer_get_report_path();35 36typedef struct {37  int coverage_sandboxed;38  __sanitizer::sptr coverage_fd;39  unsigned int coverage_max_block_size;40} __sanitizer_sandbox_arguments;41 42// Notify the tools that the sandbox is going to be turned on.43SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void44__sanitizer_sandbox_on_notify(__sanitizer_sandbox_arguments *args);45 46// This function is called by the tool when it has just finished reporting47// an error. 'error_summary' is a one-line string that summarizes48// the error message. This function can be overridden by the client.49SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void50__sanitizer_report_error_summary(const char *error_summary);51 52// Returns size of dynamically allocated block. This function can be overridden53// by the client.54SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE __sanitizer::uptr55__sanitizer_get_dtls_size(const void *tls_begin);56 57SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_cov_dump();58SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_dump_coverage(59    const __sanitizer::uptr *pcs, const __sanitizer::uptr len);60SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_dump_trace_pc_guard_coverage();61 62SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_cov(__sanitizer::u32 *guard);63 64// Returns 1 on the first call, then returns 0 thereafter.  Called by the tool65// to ensure only one report is printed when multiple errors occur66// simultaneously.67SANITIZER_INTERFACE_ATTRIBUTE int __sanitizer_acquire_crash_state();68 69SANITIZER_INTERFACE_ATTRIBUTE70void __sanitizer_annotate_contiguous_container(const void *beg, const void *end,71                                               const void *old_mid,72                                               const void *new_mid);73SANITIZER_INTERFACE_ATTRIBUTE74void __sanitizer_annotate_double_ended_contiguous_container(75    const void *storage_beg, const void *storage_end,76    const void *old_container_beg, const void *old_container_end,77    const void *new_container_beg, const void *new_container_end);78SANITIZER_INTERFACE_ATTRIBUTE79void __sanitizer_copy_contiguous_container_annotations(const void *src_begin,80                                                       const void *src_end,81                                                       const void *dst_begin,82                                                       const void *dst_end);83SANITIZER_INTERFACE_ATTRIBUTE84int __sanitizer_verify_contiguous_container(const void *beg, const void *mid,85                                            const void *end);86SANITIZER_INTERFACE_ATTRIBUTE87int __sanitizer_verify_double_ended_contiguous_container(88    const void *storage_beg, const void *container_beg,89    const void *container_end, const void *storage_end);90SANITIZER_INTERFACE_ATTRIBUTE91const void *__sanitizer_contiguous_container_find_bad_address(const void *beg,92                                                              const void *mid,93                                                              const void *end);94SANITIZER_INTERFACE_ATTRIBUTE95const void *__sanitizer_double_ended_contiguous_container_find_bad_address(96    const void *storage_beg, const void *container_beg,97    const void *container_end, const void *storage_end);98 99SANITIZER_INTERFACE_ATTRIBUTE100int __sanitizer_get_module_and_offset_for_pc(void *pc, char *module_path,101                                             __sanitizer::uptr module_path_len,102                                             void **pc_offset);103SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void104__sanitizer_cov_trace_cmp();105SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void106__sanitizer_cov_trace_cmp1();107SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void108__sanitizer_cov_trace_cmp2();109SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void110__sanitizer_cov_trace_cmp4();111SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void112__sanitizer_cov_trace_cmp8();113SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void114__sanitizer_cov_trace_const_cmp1();115SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void116__sanitizer_cov_trace_const_cmp2();117SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void118__sanitizer_cov_trace_const_cmp4();119SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void120__sanitizer_cov_trace_const_cmp8();121SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void122__sanitizer_cov_trace_switch();123SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void124__sanitizer_cov_trace_div4();125SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void126__sanitizer_cov_trace_div8();127SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void128__sanitizer_cov_trace_gep();129SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void130__sanitizer_cov_trace_pc_indir();131SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void132__sanitizer_cov_load1();133SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void134__sanitizer_cov_load2();135SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void136__sanitizer_cov_load4();137SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void138__sanitizer_cov_load8();139SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void140__sanitizer_cov_load16();141SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void142__sanitizer_cov_store1();143SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void144__sanitizer_cov_store2();145SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void146__sanitizer_cov_store4();147SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void148__sanitizer_cov_store8();149SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void150__sanitizer_cov_store16();151SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void152__sanitizer_cov_trace_pc_guard(__sanitizer::u32 *);153SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void154__sanitizer_cov_trace_pc_guard_init(__sanitizer::u32 *, __sanitizer::u32 *);155SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void156__sanitizer_cov_8bit_counters_init(char *, char *);157SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void158__sanitizer_cov_bool_flag_init();159SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void160__sanitizer_cov_pcs_init(const __sanitizer::uptr *, const __sanitizer::uptr *);161}  // extern "C"162 163#endif  // SANITIZER_INTERFACE_INTERNAL_H164