1351282Sdim//===-- flags.h -------------------------------------------------*- C++ -*-===//
2351282Sdim//
3351282Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4351282Sdim// See https://llvm.org/LICENSE.txt for license information.
5351282Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6351282Sdim//
7351282Sdim//===----------------------------------------------------------------------===//
8351282Sdim
9351282Sdim#ifndef SCUDO_FLAGS_H_
10351282Sdim#define SCUDO_FLAGS_H_
11351282Sdim
12351282Sdim#include "internal_defs.h"
13351282Sdim
14351282Sdimnamespace scudo {
15351282Sdim
16351282Sdimstruct Flags {
17351282Sdim#define SCUDO_FLAG(Type, Name, DefaultValue, Description) Type Name;
18351282Sdim#include "flags.inc"
19351282Sdim#undef SCUDO_FLAG
20360784Sdim
21360784Sdim#ifdef GWP_ASAN_HOOKS
22360784Sdim#define GWP_ASAN_OPTION(Type, Name, DefaultValue, Description)                 \
23360784Sdim  Type GWP_ASAN_##Name;
24360784Sdim#include "gwp_asan/options.inc"
25360784Sdim#undef GWP_ASAN_OPTION
26360784Sdim#endif // GWP_ASAN_HOOKS
27360784Sdim
28351282Sdim  void setDefaults();
29351282Sdim};
30351282Sdim
31351282SdimFlags *getFlags();
32351282Sdimvoid initFlags();
33351282Sdimclass FlagParser;
34351282Sdimvoid registerFlags(FlagParser *Parser, Flags *F);
35351282Sdim
36351282Sdim} // namespace scudo
37351282Sdim
38351282Sdim#endif // SCUDO_FLAGS_H_
39