sanitizer_flags.h revision b6246066a271e3b01732d1b4381ef745152747d2
187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org//===-- sanitizer_flags.h ---------------------------------------*- C++ -*-===// 287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org// 387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org// The LLVM Compiler Infrastructure 487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org// 587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org// This file is distributed under the University of Illinois Open Source 687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org// License. See LICENSE.TXT for details. 787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org// 887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org//===----------------------------------------------------------------------===// 987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org// 1087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org// This file is a part of ThreadSanitizer/AddressSanitizer runtime. 1187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org// 1287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org//===----------------------------------------------------------------------===// 1387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org 1487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org#ifndef SANITIZER_FLAGS_H 1587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org#define SANITIZER_FLAGS_H 1687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org 1787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org#include "sanitizer_internal_defs.h" 1887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org 1987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgnamespace __sanitizer { 2087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org 2187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgvoid ParseFlag(const char *env, bool *flag, const char *name); 2287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgvoid ParseFlag(const char *env, int *flag, const char *name); 2387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgvoid ParseFlag(const char *env, const char **flag, const char *name); 2487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org 2587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgstruct CommonFlags { 2687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org // If set, use the online symbolizer from common sanitizer runtime. 2787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org bool symbolize; 2887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org // Path to external symbolizer. 2987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org const char *external_symbolizer_path; 3087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org // Strips this prefix from file paths in error reports. 3187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org const char *strip_path_prefix; 3287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org // Use fast (frame-pointer-based) unwinder on fatal errors (if available). 3387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org bool fast_unwind_on_fatal; 3487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org // Use fast (frame-pointer-based) unwinder on malloc/free (if available). 3587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org bool fast_unwind_on_malloc; 3687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org // Intercept and handle ioctl requests. 3787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org bool handle_ioctl; 3887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org // Max number of stack frames kept for each allocation/deallocation. 3987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org int malloc_context_size; 4087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org // Write logs to "log_path.pid" instead of stderr. 4187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org const char *log_path; 4287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org}; 4387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org 4487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgextern CommonFlags common_flags_dont_use_directly; 4587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org 4687997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orginline CommonFlags *common_flags() { 4787997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org return &common_flags_dont_use_directly; 4887997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org} 4987997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org 5087997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.orgvoid ParseCommonFlagsFromString(const char *str); 5187997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org 5287997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org} // namespace __sanitizer 5387997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org 5487997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org#endif // SANITIZER_FLAGS_H 5587997d490ae52aa962a985c95b3cddf7f8832641johannkoenig@chromium.org