xref: /freebsd/contrib/llvm-project/llvm/tools/llvm-dwarfutil/Options.h (revision 7ef62cebc2f965b0f640263e179276928885e33d)
1 //===- Options.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-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLVM_TOOLS_LLVM_DWARFUTIL_OPTIONS_H
10 #define LLVM_TOOLS_LLVM_DWARFUTIL_OPTIONS_H
11 
12 #include "llvm/ADT/SmallString.h"
13 #include "llvm/ADT/StringRef.h"
14 
15 namespace llvm {
16 namespace dwarfutil {
17 
18 /// The kind of tombstone value.
19 enum class TombstoneKind {
20   BFD,       /// 0/[1:1]. Bfd default.
21   MaxPC,     /// -1/-2. Assumed to match with
22              /// http://www.dwarfstd.org/ShowIssue.php?issue=200609.1.
23   Universal, /// both: BFD + MaxPC
24   Exec,      /// match with address range of executable sections.
25 };
26 
27 /// The kind of accelerator table.
28 enum class DwarfUtilAccelKind : uint8_t {
29   None,
30   DWARF // DWARFv5: .debug_names
31 };
32 
33 struct Options {
34   std::string InputFileName;
35   std::string OutputFileName;
36   bool DoGarbageCollection = false;
37   bool DoODRDeduplication = false;
38   bool BuildSeparateDebugFile = false;
39   TombstoneKind Tombstone = TombstoneKind::Universal;
40   bool Verbose = false;
41   int NumThreads = 0;
42   bool Verify = false;
43   DwarfUtilAccelKind AccelTableKind = DwarfUtilAccelKind::None;
44 
45   std::string getSeparateDebugFileName() const {
46     return OutputFileName + ".debug";
47   }
48 };
49 
50 } // namespace dwarfutil
51 } // namespace llvm
52 
53 #endif // LLVM_TOOLS_LLVM_DWARFUTIL_OPTIONS_H
54