From 9aa4ab6f9beeccfd7abf0da24d87626bbbb79abc Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Tue, 11 Oct 2016 01:01:40 +0000 Subject: [PATCH] Revert "Add section header stream to PDB." because it depends on r283823. The change this patch depends on was reverted. llvm-svn: 283837 --- lld/COFF/Driver.cpp | 5 ++++- lld/COFF/PDB.cpp | 6 +----- lld/COFF/PDB.h | 3 +-- lld/COFF/Writer.cpp | 10 +-------- lld/COFF/Writer.h | 4 +++- lld/test/COFF/pdb.test | 55 +++++++++----------------------------------------- 6 files changed, 19 insertions(+), 64 deletions(-) diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp index dd797b4..4c7c4d8 100644 --- a/lld/COFF/Driver.cpp +++ b/lld/COFF/Driver.cpp @@ -11,6 +11,7 @@ #include "Config.h" #include "Error.h" #include "InputFiles.h" +#include "PDB.h" #include "SymbolTable.h" #include "Symbols.h" #include "Writer.h" @@ -373,8 +374,10 @@ void LinkerDriver::link(llvm::ArrayRef ArgsArr) { } // Create a dummy PDB file to satisfy build sytem rules. - if (auto *Arg = Args.getLastArg(OPT_pdb)) + if (auto *Arg = Args.getLastArg(OPT_pdb)) { Config->PDBPath = Arg->getValue(); + createPDB(Config->PDBPath); + } // Handle /noentry if (Args.hasArg(OPT_noentry)) { diff --git a/lld/COFF/PDB.cpp b/lld/COFF/PDB.cpp index 53f50f3..bbc8296 100644 --- a/lld/COFF/PDB.cpp +++ b/lld/COFF/PDB.cpp @@ -30,7 +30,7 @@ using namespace llvm::support::endian; static ExitOnError ExitOnErr; -void coff::createPDB(StringRef Path, ArrayRef SectionTable) { +void coff::createPDB(StringRef Path) { BumpPtrAllocator Alloc; pdb::PDBFileBuilder Builder(Alloc); ExitOnErr(Builder.initialize(4096)); // 4096 is blocksize @@ -63,10 +63,6 @@ void coff::createPDB(StringRef Path, ArrayRef SectionTable) { auto &IpiBuilder = Builder.getIpiBuilder(); IpiBuilder.setVersionHeader(pdb::PdbTpiV80); - // Add COFF section header stream. - ExitOnErr( - DbiBuilder.addDbgStream(pdb::DbgHeaderType::SectionHdr, SectionTable)); - // Write to a file. ExitOnErr(Builder.commit(Path)); } diff --git a/lld/COFF/PDB.h b/lld/COFF/PDB.h index 3b084b8..97f6935 100644 --- a/lld/COFF/PDB.h +++ b/lld/COFF/PDB.h @@ -10,12 +10,11 @@ #ifndef LLD_COFF_PDB_H #define LLD_COFF_PDB_H -#include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringRef.h" namespace lld { namespace coff { -void createPDB(llvm::StringRef Path, llvm::ArrayRef SectionTable); +void createPDB(llvm::StringRef Path); } } diff --git a/lld/COFF/Writer.cpp b/lld/COFF/Writer.cpp index 8fb532e..2b02041 100644 --- a/lld/COFF/Writer.cpp +++ b/lld/COFF/Writer.cpp @@ -7,14 +7,13 @@ // //===----------------------------------------------------------------------===// -#include "Writer.h" #include "Config.h" #include "DLL.h" #include "Error.h" #include "InputFiles.h" -#include "PDB.h" #include "SymbolTable.h" #include "Symbols.h" +#include "Writer.h" #include "lld/Core/Parallel.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/STLExtras.h" @@ -148,7 +147,6 @@ private: std::unique_ptr DebugDirectory; std::vector> DebugRecords; CVDebugRecordChunk *BuildId = nullptr; - ArrayRef SectionTable; uint64_t FileSize; uint32_t PointerToSymbolTable = 0; @@ -303,10 +301,6 @@ void Writer::run() { writeSections(); sortExceptionTable(); writeBuildId(); - - if (!Config->PDBPath.empty()) - createPDB(Config->PDBPath, SectionTable); - if (auto EC = Buffer->commit()) fatal(EC, "failed to write the output file"); } @@ -725,8 +719,6 @@ template void Writer::writeHeader() { Sec->writeHeaderTo(Buf); Buf += sizeof(coff_section); } - SectionTable = ArrayRef( - Buf - OutputSections.size() * sizeof(coff_section), Buf); if (OutputSymtab.empty()) return; diff --git a/lld/COFF/Writer.h b/lld/COFF/Writer.h index 0d26090..0473315 100644 --- a/lld/COFF/Writer.h +++ b/lld/COFF/Writer.h @@ -14,7 +14,9 @@ namespace lld { namespace coff { -class SymbolTable; + +class Chunk; +class OutputSection; void writeResult(SymbolTable *T); diff --git a/lld/test/COFF/pdb.test b/lld/test/COFF/pdb.test index e932686..1bbac22 100644 --- a/lld/test/COFF/pdb.test +++ b/lld/test/COFF/pdb.test @@ -3,28 +3,25 @@ # RUN: llvm-pdbdump pdb2yaml -stream-metadata -stream-directory -pdb-stream \ # RUN: -dbi-stream -ipi-stream %t.pdb | FileCheck %s -# RUN: llvm-pdbdump raw -section-headers %t.pdb | FileCheck -check-prefix RAW %s - # CHECK: MSF: # CHECK-NEXT: SuperBlock: # CHECK-NEXT: BlockSize: 4096 # CHECK-NEXT: FreeBlockMap: -# CHECK-NEXT: NumBlocks: 10 -# CHECK-NEXT: NumDirectoryBytes: 48 +# CHECK-NEXT: NumBlocks: 9 +# CHECK-NEXT: NumDirectoryBytes: 40 # CHECK-NEXT: Unknown1: 0 # CHECK-NEXT: BlockMapAddr: 3 # CHECK-NEXT: NumDirectoryBlocks: 1 -# CHECK-NEXT: DirectoryBlocks: [ 9 ] -# CHECK-NEXT: NumStreams: 6 -# CHECK-NEXT: FileSize: 40960 -# CHECK-NEXT: StreamSizes: [ 0, 48, 56, 90, 56, 80 ] +# CHECK-NEXT: DirectoryBlocks: [ 8 ] +# CHECK-NEXT: NumStreams: 5 +# CHECK-NEXT: FileSize: 36864 +# CHECK-NEXT: StreamSizes: [ 0, 48, 56, 68, 56 ] # CHECK-NEXT: StreamMap: -# CHECK-NEXT: - Stream: [ ] +# CHECK-NEXT: - Stream: [ ] +# CHECK-NEXT: - Stream: [ 4 ] +# CHECK-NEXT: - Stream: [ 6 ] # CHECK-NEXT: - Stream: [ 5 ] # CHECK-NEXT: - Stream: [ 7 ] -# CHECK-NEXT: - Stream: [ 6 ] -# CHECK-NEXT: - Stream: [ 8 ] -# CHECK-NEXT: - Stream: [ 4 ] # CHECK-NEXT: PdbStream: # CHECK-NEXT: Age: 1 # CHECK-NEXT: Guid: '{00000000-0000-0000-0000-000000000000}' @@ -43,40 +40,6 @@ # CHECK-NEXT: Version: VC80 # CHECK-NEXT: Records: -# RAW: Section Headers [ -# RAW-NEXT: { -# RAW-NEXT: Name: .text -# RAW-NEXT: Virtual Size: 3 -# RAW-NEXT: Virtual Address: 4096 -# RAW-NEXT: Size of Raw Data: 512 -# RAW-NEXT: File Pointer to Raw Data: 512 -# RAW-NEXT: File Pointer to Relocations: 0 -# RAW-NEXT: File Pointer to Linenumbers: 0 -# RAW-NEXT: Number of Relocations: 0 -# RAW-NEXT: Number of Linenumbers: 0 -# RAW-NEXT: Characteristics [ (0x60000020) -# RAW-NEXT: IMAGE_SCN_CNT_CODE (0x20) -# RAW-NEXT: IMAGE_SCN_MEM_EXECUTE (0x20000000) -# RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000) -# RAW-NEXT: ] -# RAW-NEXT: } -# RAW-NEXT: { -# RAW-NEXT: Name: .rdata -# RAW-NEXT: Virtual Size: 107 -# RAW-NEXT: Virtual Address: 8192 -# RAW-NEXT: Size of Raw Data: 512 -# RAW-NEXT: File Pointer to Raw Data: 1024 -# RAW-NEXT: File Pointer to Relocations: 0 -# RAW-NEXT: File Pointer to Linenumbers: 0 -# RAW-NEXT: Number of Relocations: 0 -# RAW-NEXT: Number of Linenumbers: 0 -# RAW-NEXT: Characteristics [ (0x40000040) -# RAW-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40) -# RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000) -# RAW-NEXT: ] -# RAW-NEXT: } -# RAW-NEXT: ] - --- !COFF header: Machine: IMAGE_FILE_MACHINE_I386 -- 2.7.4