Go to the documentation of this file.
23 #define __STDC_LIMIT_MACROS
24 #define __STDC_FORMAT_MACROS
31 #include <unordered_map>
34 #include "absl/strings/string_view.h"
35 #include "absl/strings/strip.h"
39 #include "bloaty.pb.h"
50 struct DisassemblyInfo;
92 virtual std::unique_ptr<InputFile>
OpenFile(
228 std::vector<std::pair<DualMap*, const NameMunger*>>
outputs_;
253 typedef std::map<absl::string_view, std::pair<uint64_t, uint64_t>>
SymbolTable;
268 virtual void ProcessFile(
const std::vector<RangeSink*>& sinks)
const = 0;
350 if (
a.sortkey !=
b.sortkey) {
351 return a.sortkey >
b.sortkey;
354 return a.name <
b.name;
416 std::vector<std::string> parent_labels,
417 std::ostream*
out,
bool tabs)
const;
419 std::vector<std::string> parent_labels,
420 std::ostream*
out,
bool tabs)
const;
void AddFileRangeForFileRange(const char *analyzer, absl::string_view from_file_range, absl::string_view file_range)
void AddFileRange(const char *analyzer, absl::string_view name, uint64_t fileoff, uint64_t filesize)
google::protobuf::Arena * arena_
std::vector< std::pair< std::unique_ptr< ReImpl >, std::string > > regexes_
const DualMap * translator_
std::vector< std::string > source_names_
NameMunger & operator=(const NameMunger &)=delete
const grpc_generator::File * file
std::string Munge(absl::string_view name) const
const DualMap & MapAtIndex(size_t index) const
void PrettyPrint(const OutputOptions &options, std::ostream *out) const
static constexpr uint64_t kUnknownSize
const std::vector< std::string > & source_names() const
std::string DisassembleFunction(const DisassemblyInfo &info)
bool BloatyMain(const Options &options, const InputFileFactory &file_factory, RollupOutput *output, std::string *error)
cs_arch
Architecture type.
RollupOutput & operator=(const RollupOutput &)=delete
absl::string_view GetDisassembly()
void AddVMRange(const char *analyzer, uint64_t vmaddr, uint64_t vmsize, const std::string &name)
bool IsVerboseForFileRange(uint64_t fileoff, uint64_t filesize)
void AddFileRange(const char *analyzer, absl::string_view name, absl::string_view file_range)
RangeSink & operator=(const RangeSink &)=delete
grpc_core::ScopedArenaPtr arena
std::unique_ptr< InputFile > file_data_
absl::string_view TranslateVMToFile(uint64_t address)
DataSource data_source() const
virtual void ProcessFile(const std::vector< RangeSink * > &sinks) const =0
virtual std::string GetBuildId() const =0
std::string ItaniumDemangle(string_view symbol, DataSource source)
void AddFileRangeForVMAddr(const char *analyzer, uint64_t label_from_vmaddr, absl::string_view file_range)
const InputFile & file_data() const
void PrintToCSV(std::ostream *out, bool tabs) const
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
static constexpr uint64_t kUnknownSize
std::vector< std::pair< DualMap *, const NameMunger * > > outputs_
constexpr size_type size() const noexcept
std::unique_ptr< ObjectFile > TryOpenPEFile(std::unique_ptr< InputFile > &file)
RangeSink(const InputFile *file, const Options &options, DataSource data_source, const DualMap *translator, google::protobuf::Arena *arena)
bool ParseOptions(bool skip_unknown, int *argc, char **argv[], Options *options, OutputOptions *output_options, std::string *error)
const ObjectFile * debug_file_
unsigned __int64 uint64_t
OutputFormat output_format
std::vector< RollupRow > sorted_children
void PrintTreeToCSV(const RollupRow &row, std::vector< std::string > parent_labels, std::ostream *out, bool tabs) const
void SetDisassembly(absl::string_view disassembly)
void ReadEhFrameHdr(absl::string_view contents, RangeSink *sink)
void AddDataSourceName(absl::string_view name)
const InputFile & input_file() const
std::unique_ptr< ObjectFile > TryOpenELFFile(std::unique_ptr< InputFile > &file)
void PrettyPrintTree(const RollupRow &row, size_t indent, const OutputOptions &options, std::ostream *out) const
std::unique_ptr< ObjectFile > TryOpenWebAssemblyFile(std::unique_ptr< InputFile > &file)
bool ContainsVerboseVMAddr(uint64_t vmaddr, uint64_t vmsize)
void AddVMRangeForVMAddr(const char *analyzer, uint64_t label_from_vmaddr, uint64_t addr, uint64_t size)
const ObjectFile & debug_file() const
absl::string_view ZlibDecompress(absl::string_view contents, uint64_t uncompressed_size)
const RollupRow & toplevel_row() const
RollupRow(const std::string &name_)
void AddRange(const char *analyzer, absl::string_view name, uint64_t vmaddr, uint64_t vmsize, absl::string_view file_range)
void DisassembleFindReferences(const DisassemblyInfo &info, RangeSink *sink)
void AddRegex(const std::string ®ex, const std::string &replacement)
bool FileContainsPointer(const void *ptr) const
bool IsVerboseForVMRange(uint64_t vmaddr, uint64_t vmsize)
std::unique_ptr< ObjectFile > TryOpenMachOFile(std::unique_ptr< InputFile > &file)
void ReadEhFrame(absl::string_view contents, RangeSink *sink)
std::map< absl::string_view, std::pair< uint64_t, uint64_t > > SymbolTable
void AddRange(const char *analyzer, absl::string_view name, uint64_t vmaddr, uint64_t vmsize, uint64_t fileoff, uint64_t filesize)
void Print(const OutputOptions &options, std::ostream *out)
ObjectFile(std::unique_ptr< InputFile > file_data)
void set_debug_file(const ObjectFile *file)
void AddVMRangeAllowAlias(const char *analyzer, uint64_t vmaddr, uint64_t size, const std::string &name)
static bool Compare(const RollupRow &a, const RollupRow &b)
void AddVMRangeIgnoreDuplicate(const char *analyzer, uint64_t vmaddr, uint64_t size, const std::string &name)
int64_t filtered_filesize
const Options & options() const
static bool IsSame(const std::string &a, const std::string &b)
constexpr const_pointer data() const noexcept
bool ContainsVerboseFileOffset(uint64_t fileoff, uint64_t filesize)
virtual bool GetDisassemblyInfo(absl::string_view symbol, DataSource symbol_source, DisassemblyInfo *info) const =0
void PrettyPrintRow(const RollupRow &row, size_t indent, const OutputOptions &options, std::ostream *out) const
void PrintRowToCSV(const RollupRow &row, std::vector< std::string > parent_labels, std::ostream *out, bool tabs) const
uint64_t TranslateFileToVM(const char *ptr)
void ReadDWARFInlines(const dwarf::File &file, RangeSink *sink, bool include_line)
void AddOutput(DualMap *map, const NameMunger *munger)
void ReadDWARFCompileUnits(const dwarf::File &file, const DualMap &map, RangeSink *sink)
grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:58:39