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