xref: /freebsd-src/contrib/llvm-project/llvm/tools/llvm-dwarfutil/Options.h (revision 7a6dacaca14b62ca4b74406814becb87a3fefac0)
1fcaf7f86SDimitry Andric //===- Options.h ------------------------------------------------*- C++ -*-===//
2fcaf7f86SDimitry Andric //
3fcaf7f86SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4fcaf7f86SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5fcaf7f86SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6fcaf7f86SDimitry Andric //
7fcaf7f86SDimitry Andric //===----------------------------------------------------------------------===//
8fcaf7f86SDimitry Andric 
9fcaf7f86SDimitry Andric #ifndef LLVM_TOOLS_LLVM_DWARFUTIL_OPTIONS_H
10fcaf7f86SDimitry Andric #define LLVM_TOOLS_LLVM_DWARFUTIL_OPTIONS_H
11fcaf7f86SDimitry Andric 
125f757f3fSDimitry Andric #include <cstdint>
135f757f3fSDimitry Andric #include <string>
14fcaf7f86SDimitry Andric 
15fcaf7f86SDimitry Andric namespace llvm {
16fcaf7f86SDimitry Andric namespace dwarfutil {
17fcaf7f86SDimitry Andric 
18fcaf7f86SDimitry Andric /// The kind of tombstone value.
19fcaf7f86SDimitry Andric enum class TombstoneKind {
20fcaf7f86SDimitry Andric   BFD,       /// 0/[1:1]. Bfd default.
21fcaf7f86SDimitry Andric   MaxPC,     /// -1/-2. Assumed to match with
22fcaf7f86SDimitry Andric              /// http://www.dwarfstd.org/ShowIssue.php?issue=200609.1.
23fcaf7f86SDimitry Andric   Universal, /// both: BFD + MaxPC
24fcaf7f86SDimitry Andric   Exec,      /// match with address range of executable sections.
25fcaf7f86SDimitry Andric };
26fcaf7f86SDimitry Andric 
27bdd1243dSDimitry Andric /// The kind of accelerator table.
28bdd1243dSDimitry Andric enum class DwarfUtilAccelKind : uint8_t {
29bdd1243dSDimitry Andric   None,
30bdd1243dSDimitry Andric   DWARF // DWARFv5: .debug_names
31bdd1243dSDimitry Andric };
32bdd1243dSDimitry Andric 
33fcaf7f86SDimitry Andric struct Options {
34fcaf7f86SDimitry Andric   std::string InputFileName;
35fcaf7f86SDimitry Andric   std::string OutputFileName;
36fcaf7f86SDimitry Andric   bool DoGarbageCollection = false;
37fcaf7f86SDimitry Andric   bool DoODRDeduplication = false;
38fcaf7f86SDimitry Andric   bool BuildSeparateDebugFile = false;
39fcaf7f86SDimitry Andric   TombstoneKind Tombstone = TombstoneKind::Universal;
40fcaf7f86SDimitry Andric   bool Verbose = false;
41fcaf7f86SDimitry Andric   int NumThreads = 0;
42fcaf7f86SDimitry Andric   bool Verify = false;
43*7a6dacacSDimitry Andric   bool UseDWARFLinkerParallel = false;
44bdd1243dSDimitry Andric   DwarfUtilAccelKind AccelTableKind = DwarfUtilAccelKind::None;
45fcaf7f86SDimitry Andric 
getSeparateDebugFileNameOptions46fcaf7f86SDimitry Andric   std::string getSeparateDebugFileName() const {
47fcaf7f86SDimitry Andric     return OutputFileName + ".debug";
48fcaf7f86SDimitry Andric   }
49fcaf7f86SDimitry Andric };
50fcaf7f86SDimitry Andric 
51fcaf7f86SDimitry Andric } // namespace dwarfutil
52fcaf7f86SDimitry Andric } // namespace llvm
53fcaf7f86SDimitry Andric 
54fcaf7f86SDimitry Andric #endif // LLVM_TOOLS_LLVM_DWARFUTIL_OPTIONS_H
55