There were several issues with the previous implementation. 1) There were no tests. 2) We didn't support creating PDBSymbolTypePointer records for builtin types since those aren't described by LF_POINTER records. 3) We didn't support a wide enough variety of builtin types even ignoring pointers. This patch fixes all of these issues. In order to add tests, it's helpful to be able to ignore the symbol index id hierarchy because it makes the golden output from the DIA version not match our output, so I've extended the dumper to disable dumping of id fields. llvm-svn: 342493
62 lines
2.2 KiB
C++
62 lines
2.2 KiB
C++
//===- NativeCompilandSymbol.cpp - Native impl for compilands ---*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/DebugInfo/PDB/Native/NativeCompilandSymbol.h"
|
|
#include "llvm/DebugInfo/PDB/Native/NativeSession.h"
|
|
|
|
#include "llvm/ADT/STLExtras.h"
|
|
|
|
namespace llvm {
|
|
namespace pdb {
|
|
|
|
NativeCompilandSymbol::NativeCompilandSymbol(NativeSession &Session,
|
|
SymIndexId SymbolId,
|
|
DbiModuleDescriptor MI)
|
|
: NativeRawSymbol(Session, PDB_SymType::Compiland, SymbolId), Module(MI) {}
|
|
|
|
PDB_SymType NativeCompilandSymbol::getSymTag() const {
|
|
return PDB_SymType::Compiland;
|
|
}
|
|
|
|
void NativeCompilandSymbol::dump(raw_ostream &OS, int Indent,
|
|
PdbSymbolIdField ShowIdFields,
|
|
PdbSymbolIdField RecurseIdFields) const {
|
|
NativeRawSymbol::dump(OS, Indent, ShowIdFields, RecurseIdFields);
|
|
|
|
dumpSymbolIdField(OS, "lexicalParentId", 0, Indent, Session,
|
|
PdbSymbolIdField::LexicalParent, ShowIdFields,
|
|
RecurseIdFields);
|
|
dumpSymbolField(OS, "libraryName", getLibraryName(), Indent);
|
|
dumpSymbolField(OS, "name", getName(), Indent);
|
|
dumpSymbolField(OS, "editAndContinueEnabled", isEditAndContinueEnabled(),
|
|
Indent);
|
|
}
|
|
|
|
bool NativeCompilandSymbol::isEditAndContinueEnabled() const {
|
|
return Module.hasECInfo();
|
|
}
|
|
|
|
SymIndexId NativeCompilandSymbol::getLexicalParentId() const { return 0; }
|
|
|
|
// The usage of getObjFileName for getLibraryName and getModuleName for getName
|
|
// may seem backwards, but it is consistent with DIA, which is what this API
|
|
// was modeled after. We may rename these methods later to try to eliminate
|
|
// this potential confusion.
|
|
|
|
std::string NativeCompilandSymbol::getLibraryName() const {
|
|
return Module.getObjFileName();
|
|
}
|
|
|
|
std::string NativeCompilandSymbol::getName() const {
|
|
return Module.getModuleName();
|
|
}
|
|
|
|
} // namespace pdb
|
|
} // namespace llvm
|