xref: /llvm-project/llvm/tools/llvm-debuginfo-analyzer/Options.h (revision c28a977b87defd2f37fd0808d7ba6173133744ce)
1*c28a977bSCarlos Alberto Enciso //===-- Options.h -----------------------------------------------*- C++ -*-===//
2*c28a977bSCarlos Alberto Enciso //
3*c28a977bSCarlos Alberto Enciso // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*c28a977bSCarlos Alberto Enciso // See https://llvm.org/LICENSE.txt for license information.
5*c28a977bSCarlos Alberto Enciso // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*c28a977bSCarlos Alberto Enciso //
7*c28a977bSCarlos Alberto Enciso //===----------------------------------------------------------------------===//
8*c28a977bSCarlos Alberto Enciso //
9*c28a977bSCarlos Alberto Enciso // This file defines command line options used by llvm-debuginfo-analyzer.
10*c28a977bSCarlos Alberto Enciso //
11*c28a977bSCarlos Alberto Enciso //===----------------------------------------------------------------------===//
12*c28a977bSCarlos Alberto Enciso 
13*c28a977bSCarlos Alberto Enciso #ifndef OPTIONS_H
14*c28a977bSCarlos Alberto Enciso #define OPTIONS_H
15*c28a977bSCarlos Alberto Enciso 
16*c28a977bSCarlos Alberto Enciso #include "llvm/DebugInfo/LogicalView/Core/LVLine.h"
17*c28a977bSCarlos Alberto Enciso #include "llvm/DebugInfo/LogicalView/Core/LVOptions.h"
18*c28a977bSCarlos Alberto Enciso #include "llvm/DebugInfo/LogicalView/Core/LVScope.h"
19*c28a977bSCarlos Alberto Enciso #include "llvm/DebugInfo/LogicalView/Core/LVSymbol.h"
20*c28a977bSCarlos Alberto Enciso #include "llvm/DebugInfo/LogicalView/Core/LVType.h"
21*c28a977bSCarlos Alberto Enciso #include "llvm/Support/CommandLine.h"
22*c28a977bSCarlos Alberto Enciso 
23*c28a977bSCarlos Alberto Enciso namespace llvm {
24*c28a977bSCarlos Alberto Enciso namespace logicalview {
25*c28a977bSCarlos Alberto Enciso namespace cmdline {
26*c28a977bSCarlos Alberto Enciso 
27*c28a977bSCarlos Alberto Enciso class OffsetParser final : public llvm::cl::parser<unsigned long long> {
28*c28a977bSCarlos Alberto Enciso public:
29*c28a977bSCarlos Alberto Enciso   OffsetParser(llvm::cl::Option &O);
30*c28a977bSCarlos Alberto Enciso   ~OffsetParser() override;
31*c28a977bSCarlos Alberto Enciso 
32*c28a977bSCarlos Alberto Enciso   // Parse an argument representing an offset. Return true on error.
33*c28a977bSCarlos Alberto Enciso   // If the prefix is 0, the base is octal, if the prefix is 0x or 0X, the
34*c28a977bSCarlos Alberto Enciso   // base is hexadecimal, otherwise the base is decimal.
35*c28a977bSCarlos Alberto Enciso   bool parse(llvm::cl::Option &O, StringRef ArgName, StringRef ArgValue,
36*c28a977bSCarlos Alberto Enciso              unsigned long long &Val);
37*c28a977bSCarlos Alberto Enciso };
38*c28a977bSCarlos Alberto Enciso 
39*c28a977bSCarlos Alberto Enciso typedef llvm::cl::list<unsigned long long, bool, OffsetParser> OffsetOptionList;
40*c28a977bSCarlos Alberto Enciso 
41*c28a977bSCarlos Alberto Enciso extern llvm::cl::OptionCategory AttributeCategory;
42*c28a977bSCarlos Alberto Enciso extern llvm::cl::OptionCategory CompareCategory;
43*c28a977bSCarlos Alberto Enciso extern llvm::cl::OptionCategory OutputCategory;
44*c28a977bSCarlos Alberto Enciso extern llvm::cl::OptionCategory PrintCategory;
45*c28a977bSCarlos Alberto Enciso extern llvm::cl::OptionCategory ReportCategory;
46*c28a977bSCarlos Alberto Enciso extern llvm::cl::OptionCategory SelectCategory;
47*c28a977bSCarlos Alberto Enciso extern llvm::cl::OptionCategory WarningCategory;
48*c28a977bSCarlos Alberto Enciso extern llvm::cl::OptionCategory InternalCategory;
49*c28a977bSCarlos Alberto Enciso 
50*c28a977bSCarlos Alberto Enciso extern llvm::cl::list<std::string> InputFilenames;
51*c28a977bSCarlos Alberto Enciso extern llvm::cl::opt<std::string> OutputFilename;
52*c28a977bSCarlos Alberto Enciso 
53*c28a977bSCarlos Alberto Enciso extern llvm::cl::list<std::string> SelectPatterns;
54*c28a977bSCarlos Alberto Enciso 
55*c28a977bSCarlos Alberto Enciso extern llvm::cl::list<LVElementKind> SelectElements;
56*c28a977bSCarlos Alberto Enciso extern llvm::cl::list<LVLineKind> SelectLines;
57*c28a977bSCarlos Alberto Enciso extern llvm::cl::list<LVScopeKind> SelectScopes;
58*c28a977bSCarlos Alberto Enciso extern llvm::cl::list<LVSymbolKind> SelectSymbols;
59*c28a977bSCarlos Alberto Enciso extern llvm::cl::list<LVTypeKind> SelectTypes;
60*c28a977bSCarlos Alberto Enciso extern OffsetOptionList SelectOffsets;
61*c28a977bSCarlos Alberto Enciso 
62*c28a977bSCarlos Alberto Enciso extern llvm::cl::list<LVAttributeKind> AttributeOptions;
63*c28a977bSCarlos Alberto Enciso extern llvm::cl::list<LVOutputKind> OutputOptions;
64*c28a977bSCarlos Alberto Enciso extern llvm::cl::list<LVPrintKind> PrintOptions;
65*c28a977bSCarlos Alberto Enciso extern llvm::cl::list<LVWarningKind> WarningOptions;
66*c28a977bSCarlos Alberto Enciso extern llvm::cl::list<LVInternalKind> InternalOptions;
67*c28a977bSCarlos Alberto Enciso 
68*c28a977bSCarlos Alberto Enciso extern llvm::cl::list<LVCompareKind> CompareElements;
69*c28a977bSCarlos Alberto Enciso extern llvm::cl::list<LVReportKind> ReportOptions;
70*c28a977bSCarlos Alberto Enciso 
71*c28a977bSCarlos Alberto Enciso extern LVOptions ReaderOptions;
72*c28a977bSCarlos Alberto Enciso 
73*c28a977bSCarlos Alberto Enciso // Perform any additional post parse command line actions. Propagate the
74*c28a977bSCarlos Alberto Enciso // values captured by the command line parser, into the generic reader.
75*c28a977bSCarlos Alberto Enciso void propagateOptions();
76*c28a977bSCarlos Alberto Enciso 
77*c28a977bSCarlos Alberto Enciso } // namespace cmdline
78*c28a977bSCarlos Alberto Enciso } // namespace logicalview
79*c28a977bSCarlos Alberto Enciso } // namespace llvm
80*c28a977bSCarlos Alberto Enciso 
81*c28a977bSCarlos Alberto Enciso #endif // OPTIONS_H
82