From 3c0328e01127a573c7b1ec81f926f81191e3e93d Mon Sep 17 00:00:00 2001 From: Adrian McCarthy Date: Thu, 23 Mar 2017 17:18:50 +0000 Subject: [PATCH] Somehow this still breaks because of ANSI color codes in test output on Linux. Reverting until I can figure out the root cause. Revert "Re-land: Make NativeExeSymbol a concrete subclass of NativeRawSymbol [PDB]" This reverts commit f461a70cc376f0f91c8b4917be79479cc86330a5. llvm-svn: 298626 --- .../llvm/DebugInfo/PDB/Native/NativeExeSymbol.h | 39 ----------- .../llvm/DebugInfo/PDB/Native/NativeRawSymbol.h | 2 +- llvm/lib/DebugInfo/PDB/CMakeLists.txt | 1 - llvm/lib/DebugInfo/PDB/Native/NativeExeSymbol.cpp | 79 ---------------------- llvm/lib/DebugInfo/PDB/Native/NativeRawSymbol.cpp | 33 ++++++++- llvm/lib/DebugInfo/PDB/Native/NativeSession.cpp | 4 +- .../DebugInfo/PDB/Native/pdb-native-summary.test | 11 --- 7 files changed, 35 insertions(+), 134 deletions(-) delete mode 100644 llvm/include/llvm/DebugInfo/PDB/Native/NativeExeSymbol.h delete mode 100644 llvm/lib/DebugInfo/PDB/Native/NativeExeSymbol.cpp delete mode 100644 llvm/test/DebugInfo/PDB/Native/pdb-native-summary.test diff --git a/llvm/include/llvm/DebugInfo/PDB/Native/NativeExeSymbol.h b/llvm/include/llvm/DebugInfo/PDB/Native/NativeExeSymbol.h deleted file mode 100644 index 9516810..0000000 --- a/llvm/include/llvm/DebugInfo/PDB/Native/NativeExeSymbol.h +++ /dev/null @@ -1,39 +0,0 @@ -//===- NativeExeSymbol.h - native impl for PDBSymbolExe ---------*- 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_NATIVEEXESYMBOL_H -#define LLVM_DEBUGINFO_PDB_NATIVE_NATIVEEXESYMBOL_H - -#include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h" -#include "llvm/DebugInfo/PDB/Native/NativeSession.h" - -namespace llvm { -namespace pdb { - -class NativeExeSymbol : public NativeRawSymbol { -public: - NativeExeSymbol(NativeSession &Session); - - std::unique_ptr - findChildren(PDB_SymType Type) const override; - - uint32_t getAge() const override; - std::string getSymbolsFileName() const override; - PDB_UniqueId getGuid() const override; - bool hasCTypes() const override; - bool hasPrivateSymbols() const override; - -private: - PDBFile &File; -}; - -} // namespace pdb -} // namespace llvm - -#endif diff --git a/llvm/include/llvm/DebugInfo/PDB/Native/NativeRawSymbol.h b/llvm/include/llvm/DebugInfo/PDB/Native/NativeRawSymbol.h index 655bed9..e658206 100644 --- a/llvm/include/llvm/DebugInfo/PDB/Native/NativeRawSymbol.h +++ b/llvm/include/llvm/DebugInfo/PDB/Native/NativeRawSymbol.h @@ -197,7 +197,7 @@ public: bool wasInlined() const override; std::string getUnused() const override; -protected: +private: NativeSession &Session; }; diff --git a/llvm/lib/DebugInfo/PDB/CMakeLists.txt b/llvm/lib/DebugInfo/PDB/CMakeLists.txt index 1295d2a..448b6a3 100644 --- a/llvm/lib/DebugInfo/PDB/CMakeLists.txt +++ b/llvm/lib/DebugInfo/PDB/CMakeLists.txt @@ -42,7 +42,6 @@ add_pdb_impl_folder(Native Native/ModStream.cpp Native/NativeCompilandSymbol.cpp Native/NativeEnumModules.cpp - Native/NativeExeSymbol.cpp Native/NativeRawSymbol.cpp Native/NamedStreamMap.cpp Native/NativeSession.cpp diff --git a/llvm/lib/DebugInfo/PDB/Native/NativeExeSymbol.cpp b/llvm/lib/DebugInfo/PDB/Native/NativeExeSymbol.cpp deleted file mode 100644 index ec2a4b8..0000000 --- a/llvm/lib/DebugInfo/PDB/Native/NativeExeSymbol.cpp +++ /dev/null @@ -1,79 +0,0 @@ -//===- NativeExeSymbol.cpp - native impl for PDBSymbolExe -------*- 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/NativeExeSymbol.h" - -#include "llvm/DebugInfo/PDB/Native/DbiStream.h" -#include "llvm/DebugInfo/PDB/Native/InfoStream.h" -#include "llvm/DebugInfo/PDB/Native/NativeEnumModules.h" -#include "llvm/DebugInfo/PDB/Native/PDBFile.h" - -namespace llvm { -namespace pdb { - -NativeExeSymbol::NativeExeSymbol(NativeSession &Session) - : NativeRawSymbol(Session), File(Session.getPDBFile()) {} - -std::unique_ptr -NativeExeSymbol::findChildren(PDB_SymType Type) const { - switch (Type) { - case PDB_SymType::Compiland: { - auto Dbi = File.getPDBDbiStream(); - if (Dbi) { - const auto Modules = Dbi->modules(); - return std::unique_ptr( - new NativeEnumModules(Session, Modules)); - } - consumeError(Dbi.takeError()); - break; - } - default: - break; - } - return nullptr; -} - -uint32_t NativeExeSymbol::getAge() const { - auto IS = File.getPDBInfoStream(); - if (IS) - return IS->getAge(); - consumeError(IS.takeError()); - return 0; -} - -std::string NativeExeSymbol::getSymbolsFileName() const { - return File.getFilePath(); -} - -PDB_UniqueId NativeExeSymbol::getGuid() const { - auto IS = File.getPDBInfoStream(); - if (IS) - return IS->getGuid(); - consumeError(IS.takeError()); - return PDB_UniqueId{{0}}; -} - -bool NativeExeSymbol::hasCTypes() const { - auto Dbi = File.getPDBDbiStream(); - if (Dbi) - return Dbi->hasCTypes(); - consumeError(Dbi.takeError()); - return false; -} - -bool NativeExeSymbol::hasPrivateSymbols() const { - auto Dbi = File.getPDBDbiStream(); - if (Dbi) - return !Dbi->isStripped(); - consumeError(Dbi.takeError()); - return false; -} - -} // namespace pdb -} // namespace llvm diff --git a/llvm/lib/DebugInfo/PDB/Native/NativeRawSymbol.cpp b/llvm/lib/DebugInfo/PDB/Native/NativeRawSymbol.cpp index 4841ded..3974ddc 100644 --- a/llvm/lib/DebugInfo/PDB/Native/NativeRawSymbol.cpp +++ b/llvm/lib/DebugInfo/PDB/Native/NativeRawSymbol.cpp @@ -11,7 +11,11 @@ #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/STLExtras.h" #include "llvm/DebugInfo/PDB/IPDBEnumChildren.h" +#include "llvm/DebugInfo/PDB/Native/DbiStream.h" +#include "llvm/DebugInfo/PDB/Native/InfoStream.h" +#include "llvm/DebugInfo/PDB/Native/NativeEnumModules.h" #include "llvm/DebugInfo/PDB/Native/NativeSession.h" +#include "llvm/DebugInfo/PDB/Native/PDBFile.h" #include "llvm/DebugInfo/PDB/PDBExtras.h" #include "llvm/Support/ConvertUTF.h" #include "llvm/Support/raw_ostream.h" @@ -26,6 +30,21 @@ void NativeRawSymbol::dump(raw_ostream &OS, int Indent) const {} std::unique_ptr NativeRawSymbol::findChildren(PDB_SymType Type) const { + switch (Type) { + case PDB_SymType::Compiland: { + auto &File = Session.getPDBFile(); + auto Dbi = File.getPDBDbiStream(); + if (Dbi) { + const auto Modules = Dbi->modules(); + return std::unique_ptr( + new NativeEnumModules(Session, Modules)); + } + consumeError(Dbi.takeError()); + break; + } + default: + break; + } return nullptr; } @@ -63,6 +82,11 @@ uint32_t NativeRawSymbol::getAddressSection() const { } uint32_t NativeRawSymbol::getAge() const { + auto &File = Session.getPDBFile(); + auto IS = File.getPDBInfoStream(); + if (IS) + return IS->getAge(); + consumeError(IS.takeError()); return 0; } @@ -248,7 +272,9 @@ uint32_t NativeRawSymbol::getSubTypeId() const { return 0; } -std::string NativeRawSymbol::getSymbolsFileName() const { return ""; } +std::string NativeRawSymbol::getSymbolsFileName() const { + return Session.getPDBFile().getFilePath(); +} uint32_t NativeRawSymbol::getSymIndexId() const { return 0; @@ -327,6 +353,11 @@ PDB_SymType NativeRawSymbol::getSymTag() const { } PDB_UniqueId NativeRawSymbol::getGuid() const { + auto &File = Session.getPDBFile(); + auto IS = File.getPDBInfoStream(); + if (IS) + return IS->getGuid(); + consumeError(IS.takeError()); return PDB_UniqueId{{0}}; } diff --git a/llvm/lib/DebugInfo/PDB/Native/NativeSession.cpp b/llvm/lib/DebugInfo/PDB/Native/NativeSession.cpp index 3a83a32..d49e61f 100644 --- a/llvm/lib/DebugInfo/PDB/Native/NativeSession.cpp +++ b/llvm/lib/DebugInfo/PDB/Native/NativeSession.cpp @@ -13,7 +13,7 @@ #include "llvm/DebugInfo/PDB/GenericError.h" #include "llvm/DebugInfo/PDB/IPDBEnumChildren.h" #include "llvm/DebugInfo/PDB/IPDBSourceFile.h" -#include "llvm/DebugInfo/PDB/Native/NativeExeSymbol.h" +#include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h" #include "llvm/DebugInfo/PDB/Native/PDBFile.h" #include "llvm/DebugInfo/PDB/Native/RawError.h" #include "llvm/DebugInfo/PDB/PDBSymbolCompiland.h" @@ -71,7 +71,7 @@ uint64_t NativeSession::getLoadAddress() const { return 0; } void NativeSession::setLoadAddress(uint64_t Address) {} std::unique_ptr NativeSession::getGlobalScope() { - auto RawSymbol = llvm::make_unique(*this); + auto RawSymbol = llvm::make_unique(*this); auto PdbSymbol(PDBSymbol::create(*this, std::move(RawSymbol))); std::unique_ptr ExeSymbol( static_cast(PdbSymbol.release())); diff --git a/llvm/test/DebugInfo/PDB/Native/pdb-native-summary.test b/llvm/test/DebugInfo/PDB/Native/pdb-native-summary.test deleted file mode 100644 index bd32f19..0000000 --- a/llvm/test/DebugInfo/PDB/Native/pdb-native-summary.test +++ /dev/null @@ -1,11 +0,0 @@ -; Test that the native PDB reader gets the PDB summary correct. -; RUN: llvm-pdbdump pretty -native -color-output=false %p/../Inputs/empty.pdb \ -; RUN: | FileCheck -check-prefix=EMPTY %s - -; Reference output was generated with the DIA reader to ensure that the -; `-native` option produces identical output. - -; EMPTY: Size: 102400 bytes -; EMPTY: Guid: {0B355641-86A0-A249-896F-9988FAE52FF0} -; EMPTY: Age: 1 -; EMPTY: Attributes: HasPrivateSymbols -- 2.7.4