mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-04-13 04:52:50 +00:00

This adds support for dumping a summary of module symbols and CodeView debug chunks. This option prints a table for each module of all of the symbols that occurred in the module and the number of times it occurred and total byte size. Then at the end it prints the totals for the entire file. Additionally, this patch adds the -jmc (just my code) option, which suppresses modules which are from external libraries or linker imports, so that you can focus only on the object files and libraries that originate from your own source code. llvm-svn: 311338
84 lines
2.4 KiB
C++
84 lines
2.4 KiB
C++
//===- ModuleDebugStream.h - PDB Module Info Stream Access ------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_DEBUGINFO_PDB_NATIVE_MODULEDEBUGSTREAM_H
|
|
#define LLVM_DEBUGINFO_PDB_NATIVE_MODULEDEBUGSTREAM_H
|
|
|
|
#include "llvm/ADT/iterator_range.h"
|
|
#include "llvm/DebugInfo/CodeView/DebugChecksumsSubsection.h"
|
|
#include "llvm/DebugInfo/CodeView/DebugSubsectionRecord.h"
|
|
#include "llvm/DebugInfo/CodeView/SymbolRecord.h"
|
|
#include "llvm/DebugInfo/MSF/MappedBlockStream.h"
|
|
#include "llvm/Support/BinaryStreamRef.h"
|
|
#include "llvm/Support/Error.h"
|
|
#include <cstdint>
|
|
#include <memory>
|
|
|
|
namespace llvm {
|
|
namespace pdb {
|
|
|
|
class DbiModuleDescriptor;
|
|
|
|
class ModuleDebugStreamRef {
|
|
using DebugSubsectionIterator = codeview::DebugSubsectionArray::Iterator;
|
|
|
|
public:
|
|
ModuleDebugStreamRef(const DbiModuleDescriptor &Module,
|
|
std::unique_ptr<msf::MappedBlockStream> Stream);
|
|
ModuleDebugStreamRef(ModuleDebugStreamRef &&Other) = default;
|
|
ModuleDebugStreamRef(const ModuleDebugStreamRef &Other) = default;
|
|
~ModuleDebugStreamRef();
|
|
|
|
Error reload();
|
|
|
|
uint32_t signature() const { return Signature; }
|
|
|
|
iterator_range<codeview::CVSymbolArray::Iterator>
|
|
symbols(bool *HadError) const;
|
|
|
|
const codeview::CVSymbolArray &getSymbolArray() const { return SymbolArray; }
|
|
|
|
BinarySubstreamRef getSymbolsSubstream() const;
|
|
BinarySubstreamRef getC11LinesSubstream() const;
|
|
BinarySubstreamRef getC13LinesSubstream() const;
|
|
BinarySubstreamRef getGlobalRefsSubstream() const;
|
|
|
|
ModuleDebugStreamRef &operator=(ModuleDebugStreamRef &&Other) = default;
|
|
|
|
iterator_range<DebugSubsectionIterator> subsections() const;
|
|
|
|
bool hasDebugSubsections() const;
|
|
|
|
Error commit();
|
|
|
|
Expected<codeview::DebugChecksumsSubsectionRef>
|
|
findChecksumsSubsection() const;
|
|
|
|
private:
|
|
const DbiModuleDescriptor &Mod;
|
|
|
|
uint32_t Signature;
|
|
|
|
std::shared_ptr<msf::MappedBlockStream> Stream;
|
|
|
|
codeview::CVSymbolArray SymbolArray;
|
|
|
|
BinarySubstreamRef SymbolsSubstream;
|
|
BinarySubstreamRef C11LinesSubstream;
|
|
BinarySubstreamRef C13LinesSubstream;
|
|
BinarySubstreamRef GlobalRefsSubstream;
|
|
|
|
codeview::DebugSubsectionArray Subsections;
|
|
};
|
|
|
|
} // end namespace pdb
|
|
} // end namespace llvm
|
|
|
|
#endif // LLVM_DEBUGINFO_PDB_NATIVE_MODULEDEBUGSTREAM_H
|