diff options
author | Rui Ueyama <ruiu@google.com> | 2016-10-31 21:09:21 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2016-10-31 21:09:21 +0000 |
commit | 20df4ecf4f5a07ec4a16d9435174d3ef2bf9c729 (patch) | |
tree | 54ee795a78191fe2fe9f408b34d1561ae2e83351 | |
parent | a21df23fd81fa208a69e2b4215f42c18809eaed8 (diff) | |
download | bcm5719-llvm-20df4ecf4f5a07ec4a16d9435174d3ef2bf9c729.tar.gz bcm5719-llvm-20df4ecf4f5a07ec4a16d9435174d3ef2bf9c729.zip |
Re-commit r285607: Emit Section Map stream."
Removed some test fields that overspecified test conditions.
llvm-svn: 285638
-rw-r--r-- | lld/COFF/PDB.cpp | 9 | ||||
-rw-r--r-- | lld/test/COFF/pdb.test | 51 |
2 files changed, 57 insertions, 3 deletions
diff --git a/lld/COFF/PDB.cpp b/lld/COFF/PDB.cpp index 53f50f30095..283b75a9c20 100644 --- a/lld/COFF/PDB.cpp +++ b/lld/COFF/PDB.cpp @@ -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)); diff --git a/lld/test/COFF/pdb.test b/lld/test/COFF/pdb.test index 59005d2fdf3..be9267c629b 100644 --- a/lld/test/COFF/pdb.test +++ b/lld/test/COFF/pdb.test @@ -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 ] @@ -43,7 +44,51 @@ # 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: |