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