[PATCH] D59502: [DebugInfo][PDB] Don't write empty debug streams
Alexandre Ganea via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 18 12:13:37 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rLLD356395: [DebugInfo][PDB] Don't write empty debug streams (authored by aganea, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D59502?vs=191132&id=191141#toc
Repository:
rLLD LLVM Linker
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D59502/new/
https://reviews.llvm.org/D59502
Files:
COFF/PDB.cpp
test/COFF/pdb-global-gc.yaml
test/COFF/pdb-lib.s
test/COFF/pdb.test
Index: test/COFF/pdb-lib.s
===================================================================
--- test/COFF/pdb-lib.s
+++ test/COFF/pdb-lib.s
@@ -13,15 +13,15 @@
# CHECK-NEXT: ============================================================
# CHECK-NEXT: Mod 0000 | `{{.*pdb-lib.s.tmp[/\\]foo.obj}}`:
# CHECK-NEXT: Obj: `{{.*pdb-lib.s.tmp[/\\]foo.obj}}`:
-# CHECK-NEXT: debug stream: 10, # files: 0, has ec info: false
+# CHECK-NEXT: debug stream: 65535, # files: 0, has ec info: false
# CHECK-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
# CHECK-NEXT: Mod 0001 | `bar.obj`:
# CHECK-NEXT: Obj: `{{.*pdb-lib.s.tmp[/\\]bar.lib}}`:
-# CHECK-NEXT: debug stream: 11, # files: 0, has ec info: false
+# CHECK-NEXT: debug stream: 65535, # files: 0, has ec info: false
# CHECK-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
# CHECK-NEXT: Mod 0002 | `* Linker *`:
# CHECK-NEXT: Obj: ``:
-# CHECK-NEXT: debug stream: 12, # files: 0, has ec info: false
+# CHECK-NEXT: debug stream: 10, # files: 0, has ec info: false
# CHECK-NEXT: pdb file ni: 1 `{{.*foo.pdb}}`, src file ni: 0 ``
.def _main;
Index: test/COFF/pdb-global-gc.yaml
===================================================================
--- test/COFF/pdb-global-gc.yaml
+++ test/COFF/pdb-global-gc.yaml
@@ -23,6 +23,7 @@
# CHECK: ============================================================
# CHECK-NEXT: Mod 0000 | `{{.*}}pdb-global-gc.yaml.tmp.obj`:
# CHECK-NEXT: Mod 0001 | `{{.*}}pdb-global-gc.yaml.tmp2.obj`:
+# CHECK-NEXT: Error loading module stream 1. The specified stream could not be loaded. Module stream not present
# CHECK-NEXT: Mod 0002 | `* Linker *`:
--- !COFF
Index: test/COFF/pdb.test
===================================================================
--- test/COFF/pdb.test
+++ test/COFF/pdb.test
@@ -134,7 +134,7 @@
RAW-NEXT: debug stream: 12, # files: 1, has ec info: false
RAW-NEXT: pdb file ni: 0 ``, src file ni: 0 ``
RAW-NEXT: Mod 0002 | `* Linker *`:
-RAW-NEXT: SC[???] | mod = 2, 0000:0000, size = 0, data crc = 0, reloc crc = 0
+RAW-NEXT: SC[???] | mod = 65535, 65535:0000, size = -1, data crc = 0, reloc crc = 0
RAW-NEXT: none
RAW-NEXT: Obj: ``:
RAW-NEXT: debug stream: 13, # files: 0, has ec info: false
Index: COFF/PDB.cpp
===================================================================
--- COFF/PDB.cpp
+++ COFF/PDB.cpp
@@ -1088,13 +1088,13 @@
}
static pdb::SectionContrib createSectionContrib(const Chunk *C, uint32_t Modi) {
- OutputSection *OS = C->getOutputSection();
+ OutputSection *OS = C ? C->getOutputSection() : nullptr;
pdb::SectionContrib SC;
memset(&SC, 0, sizeof(SC));
- SC.ISect = OS->SectionIndex;
- SC.Off = C->getRVA() - OS->getRVA();
- SC.Size = C->getSize();
- if (auto *SecChunk = dyn_cast<SectionChunk>(C)) {
+ SC.ISect = OS ? OS->SectionIndex : llvm::pdb::kInvalidStreamIndex;
+ SC.Off = C && OS ? C->getRVA() - OS->getRVA() : 0;
+ SC.Size = C ? C->getSize() : -1;
+ if (auto *SecChunk = dyn_cast_or_null<SectionChunk>(C)) {
SC.Characteristics = SecChunk->Header->Characteristics;
SC.Imod = SecChunk->File->ModuleDBI->getModuleIndex();
ArrayRef<uint8_t> Contents = SecChunk->getContents();
@@ -1104,7 +1104,7 @@
CRC.update(CharContents);
SC.DataCrc = CRC.getCRC();
} else {
- SC.Characteristics = OS->Header.Characteristics;
+ SC.Characteristics = OS ? OS->Header.Characteristics : 0;
// FIXME: When we start creating DBI for import libraries, use those here.
SC.Imod = Modi;
}
@@ -1589,6 +1589,13 @@
}
}
+ // The * Linker * first section contrib is only used along with /INCREMENTAL,
+ // to provide trampolines thunks for incremental function patching. Set this
+ // as "unused" because LLD doesn't support /INCREMENTAL link.
+ pdb::SectionContrib SC =
+ createSectionContrib(nullptr, llvm::pdb::kInvalidStreamIndex);
+ LinkerModule.setFirstSectionContrib(SC);
+
// Add Section Map stream.
ArrayRef<object::coff_section> Sections = {
(const object::coff_section *)SectionTable.data(),
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D59502.191141.patch
Type: text/x-patch
Size: 4306 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190318/3ae6482f/attachment.bin>
More information about the llvm-commits
mailing list