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