[PATCH] D49352: [LLD] [COFF] Write the debug directory and build id to a separate section for MinGW
Martin Storsjö via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 19 22:49:52 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL337526: [COFF] Write the debug directory and build id to a separate section for MinGW (authored by mstorsjo, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D49352?vs=155597&id=156429#toc
Repository:
rL LLVM
https://reviews.llvm.org/D49352
Files:
lld/trunk/COFF/Writer.cpp
lld/trunk/test/COFF/debug-reloc.s
Index: lld/trunk/COFF/Writer.cpp
===================================================================
--- lld/trunk/COFF/Writer.cpp
+++ lld/trunk/COFF/Writer.cpp
@@ -201,6 +201,7 @@
OutputSection *TextSec;
OutputSection *RdataSec;
+ OutputSection *BuildidSec;
OutputSection *DataSec;
OutputSection *PdataSec;
OutputSection *IdataSec;
@@ -420,6 +421,7 @@
TextSec = CreateSection(".text", CODE | R | X);
CreateSection(".bss", BSS | R | W);
RdataSec = CreateSection(".rdata", DATA | R);
+ BuildidSec = CreateSection(".buildid", DATA | R);
DataSec = CreateSection(".data", DATA | R | W);
PdataSec = CreateSection(".pdata", DATA | R);
IdataSec = CreateSection(".idata", DATA | R);
@@ -503,17 +505,19 @@
if (Config->Debug) {
DebugDirectory = make<DebugDirectoryChunk>(DebugRecords);
+ OutputSection *DebugInfoSec = Config->MinGW ? BuildidSec : RdataSec;
+
// Make a CVDebugRecordChunk even when /DEBUG:CV is not specified. We
// output a PDB no matter what, and this chunk provides the only means of
// allowing a debugger to match a PDB and an executable. So we need it even
// if we're ultimately not going to write CodeView data to the PDB.
auto *CVChunk = make<CVDebugRecordChunk>();
BuildId = CVChunk;
DebugRecords.push_back(CVChunk);
- RdataSec->addChunk(DebugDirectory);
+ DebugInfoSec->addChunk(DebugDirectory);
for (Chunk *C : DebugRecords)
- RdataSec->addChunk(C);
+ DebugInfoSec->addChunk(C);
}
// Create SEH table. x86-only.
Index: lld/trunk/test/COFF/debug-reloc.s
===================================================================
--- lld/trunk/test/COFF/debug-reloc.s
+++ lld/trunk/test/COFF/debug-reloc.s
@@ -5,7 +5,13 @@
# RUN: lld-link -lldmingw -debug:dwarf -out:%t.exe -entry:mainfunc -subsystem:console %t.obj
# RUN: llvm-readobj -sections %t.exe | FileCheck %s -check-prefix SECTIONS
# RUN: llvm-readobj -coff-basereloc %t.exe | FileCheck %s -check-prefix RELOCS
+# RUN: llvm-readobj -file-headers %t.exe | FileCheck %s -check-prefix HEADERS
+# RUN: llvm-readobj -coff-debug-directory %t.exe | FileCheck %s -check-prefix DEBUG
+# SECTIONS: Number: 2
+# SECTIONS-NEXT: Name: .buildid (2E 62 75 69 6C 64 69 64)
+# SECTIONS-NEXT: VirtualSize: 0x35
+# SECTIONS-NEXT: VirtualAddress: 0x2000
# SECTIONS: Number: 3
# SECTIONS-NEXT: Name: .data (2E 64 61 74 61 00 00 00)
# SECTIONS-NEXT: VirtualSize: 0x8
@@ -22,6 +28,16 @@
# RELOCS-NEXT: }
# RELOCS-NEXT: ]
+# HEADERS: DebugRVA: 0x2000
+# HEADERS: DebugSize: 0x1C
+
+# DEBUG: DebugDirectory [
+# DEBUG: DebugEntry {
+# DEBUG: Type: CodeView (0x2)
+# DEBUG: SizeOfData: 0x19
+# DEBUG: AddressOfRawData: 0x201C
+# DEBUG: PointerToRawData: 0x61C
+
.text
.def mainfunc;
.scl 2;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D49352.156429.patch
Type: text/x-patch
Size: 2829 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180720/a71fdd83/attachment.bin>
More information about the llvm-commits
mailing list