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