llvm-project

Форк
0
/
PrettyExternalSymbolDumper.cpp 
42 строки · 1.4 Кб
1
//===- PrettyExternalSymbolDumper.cpp -------------------------- *- 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
#include "PrettyExternalSymbolDumper.h"
10

11
#include "llvm/DebugInfo/PDB/ConcreteSymbolEnumerator.h"
12
#include "llvm/DebugInfo/PDB/Native/LinePrinter.h"
13
#include "llvm/DebugInfo/PDB/PDBSymbolExe.h"
14
#include "llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h"
15
#include "llvm/Support/Format.h"
16

17
using namespace llvm;
18
using namespace llvm::pdb;
19

20
ExternalSymbolDumper::ExternalSymbolDumper(LinePrinter &P)
21
    : PDBSymDumper(true), Printer(P) {}
22

23
void ExternalSymbolDumper::start(const PDBSymbolExe &Symbol) {
24
  if (auto Vars = Symbol.findAllChildren<PDBSymbolPublicSymbol>()) {
25
    while (auto Var = Vars->getNext())
26
      Var->dump(*this);
27
  }
28
}
29

30
void ExternalSymbolDumper::dump(const PDBSymbolPublicSymbol &Symbol) {
31
  std::string LinkageName = Symbol.getName();
32
  if (Printer.IsSymbolExcluded(LinkageName))
33
    return;
34

35
  Printer.NewLine();
36
  uint64_t Addr = Symbol.getVirtualAddress();
37

38
  Printer << "public [";
39
  WithColor(Printer, PDB_ColorItem::Address).get() << format_hex(Addr, 10);
40
  Printer << "] ";
41
  WithColor(Printer, PDB_ColorItem::Identifier).get() << LinkageName;
42
}
43

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.