Re-commit r285607: Emit Section Map stream."
authorRui Ueyama <ruiu@google.com>
Mon, 31 Oct 2016 21:09:21 +0000 (21:09 +0000)
committerRui Ueyama <ruiu@google.com>
Mon, 31 Oct 2016 21:09:21 +0000 (21:09 +0000)
Removed some test fields that overspecified test conditions.

llvm-svn: 285638

lld/COFF/PDB.cpp
lld/test/COFF/pdb.test

index 53f50f3..283b75a 100644 (file)
@@ -19,6 +19,7 @@
 #include "llvm/DebugInfo/PDB/Raw/PDBFileBuilder.h"
 #include "llvm/DebugInfo/PDB/Raw/TpiStream.h"
 #include "llvm/DebugInfo/PDB/Raw/TpiStreamBuilder.h"
+#include "llvm/Object/COFF.h"
 #include "llvm/Support/Endian.h"
 #include "llvm/Support/FileOutputBuffer.h"
 #include <memory>
@@ -63,6 +64,14 @@ void coff::createPDB(StringRef Path, ArrayRef<uint8_t> SectionTable) {
   auto &IpiBuilder = Builder.getIpiBuilder();
   IpiBuilder.setVersionHeader(pdb::PdbTpiV80);
 
+  // Add Section Map stream.
+  ArrayRef<object::coff_section> Sections = {
+      (object::coff_section *)SectionTable.data(),
+      SectionTable.size() / sizeof(object::coff_section)};
+  std::vector<pdb::SecMapEntry> SectionMap =
+      pdb::DbiStreamBuilder::createSectionMap(Sections);
+  DbiBuilder.setSectionMap(SectionMap);
+
   // Add COFF section header stream.
   ExitOnErr(
       DbiBuilder.addDbgStream(pdb::DbgHeaderType::SectionHdr, SectionTable));
index 59005d2..be9267c 100644 (file)
@@ -3,7 +3,8 @@
 # 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
+# RUN: llvm-pdbdump raw -section-map -section-headers %t.pdb | \
+# RUN:   FileCheck -check-prefix RAW %s
 
 # CHECK:      MSF:
 # CHECK-NEXT:   SuperBlock:
@@ -17,7 +18,7 @@
 # CHECK-NEXT:     DirectoryBlocks: [ 9 ]
 # CHECK-NEXT:     NumStreams:      6
 # CHECK-NEXT:     FileSize:        40960
-# CHECK-NEXT:   StreamSizes:     [ 0, 48, 56, 90, 56, 80 ]
+# CHECK-NEXT:   StreamSizes:     [ 0, 48, 56, 154, 56, 80 ]
 # CHECK-NEXT:   StreamMap:
 # CHECK-NEXT:     - Stream:          [  ]
 # CHECK-NEXT:     - Stream:          [ 5 ]
 # CHECK-NEXT:     Version:         VC80
 # CHECK-NEXT:     Records:
 
-# RAW:      Section Headers [
+# RAW:       Section Map [
+# RAW-NEXT:    Entry {
+# RAW-NEXT:      Flags [ (0x10D)
+# RAW-NEXT:      AddressIs32Bit (0x8)
+# RAW-NEXT:       Execute (0x4)
+# RAW-NEXT:       IsSelector (0x100)
+# RAW-NEXT:       Read (0x1)
+# RAW-NEXT:     ]
+# RAW-NEXT:     Ovl: 0
+# RAW-NEXT:     Group: 0
+# RAW-NEXT:     Frame: 1
+# RAW-NEXT:     SecName: 65535
+# RAW-NEXT:     ClassName: 65535
+# RAW-NEXT:     Offset: 0
+# RAW-NEXT:     SecByteLength:
+# RAW-NEXT:   }
+# RAW-NEXT:   Entry {
+# RAW-NEXT:     Flags [ (0x109)
+# RAW-NEXT:       AddressIs32Bit (0x8)
+# RAW-NEXT:       IsSelector (0x100)
+# RAW-NEXT:       Read (0x1)
+# RAW-NEXT:     ]
+# RAW-NEXT:     Ovl: 0
+# RAW-NEXT:     Group: 0
+# RAW-NEXT:     Frame: 2
+# RAW-NEXT:     SecName: 65535
+# RAW-NEXT:     ClassName: 65535
+# RAW-NEXT:     Offset: 0
+# RAW-NEXT:     SecByteLength:
+# RAW-NEXT:   }
+# RAW-NEXT:   Entry {
+# RAW-NEXT:     Flags [ (0x208)
+# RAW-NEXT:       AddressIs32Bit (0x8)
+# RAW-NEXT:       IsAbsoluteAddress (0x200)
+# RAW-NEXT:     ]
+# RAW-NEXT:     Ovl: 0
+# RAW-NEXT:     Group: 0
+# RAW-NEXT:     Frame: 3
+# RAW-NEXT:     SecName: 65535
+# RAW-NEXT:     ClassName: 65535
+# RAW-NEXT:     Offset: 0
+# RAW-NEXT:     SecByteLength: 4294967295
+# RAW-NEXT:   }
+# RAW-NEXT: ]
+# RAW-NEXT: Section Headers [
 # RAW-NEXT:   {
 # RAW-NEXT:     Name: .text
 # RAW-NEXT:     Virtual Size: