Home | History | Annotate | Line # | Download | only in llvm-dwarfdump
      1 //===-- llvm-dwarfdump - Debug info dumping utility -------------*- 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 #ifndef LLVM_TOOLS_LLVM_DWARFDUMP_LLVM_DWARFDUMP_H
     10 #define LLVM_TOOLS_LLVM_DWARFDUMP_LLVM_DWARFDUMP_H
     11 
     12 #include "llvm/ADT/MapVector.h"
     13 #include "llvm/ADT/StringMap.h"
     14 #include "llvm/ADT/Twine.h"
     15 #include "llvm/DebugInfo/DWARF/DWARFContext.h"
     16 #include "llvm/Object/ObjectFile.h"
     17 #include "llvm/Support/raw_ostream.h"
     18 
     19 namespace llvm {
     20 namespace dwarfdump {
     21 
     22 /// Holds cumulative section sizes for an object file.
     23 struct SectionSizes {
     24   /// Map of .debug section names and their sizes across all such-named
     25   /// sections.
     26   MapVector<std::string, uint64_t, StringMap<uint64_t>> DebugSectionSizes;
     27   /// Total number of bytes of all sections.
     28   uint64_t TotalObjectSize = 0;
     29   /// Total number of bytes of all debug sections.
     30   uint64_t TotalDebugSectionsSize = 0;
     31 };
     32 
     33 /// Calculate the section sizes.
     34 void calculateSectionSizes(const object::ObjectFile &Obj, SectionSizes &Sizes,
     35                            const Twine &Filename);
     36 
     37 bool collectStatsForObjectFile(object::ObjectFile &Obj, DWARFContext &DICtx,
     38                                const Twine &Filename, raw_ostream &OS);
     39 bool collectObjectSectionSizes(object::ObjectFile &Obj, DWARFContext &DICtx,
     40                                const Twine &Filename, raw_ostream &OS);
     41 
     42 } // namespace dwarfdump
     43 } // namespace llvm
     44 
     45 #endif
     46