[PATCH] D49350: [LLD] [COFF] Don't produce base relocs for discardable sections
Martin Storsjö via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 18 21:30:29 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL337438: [COFF] Don't produce base relocs for discardable sections (authored by mstorsjo, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D49350?vs=155593&id=156208#toc
Repository:
rL LLVM
https://reviews.llvm.org/D49350
Files:
lld/trunk/COFF/Writer.cpp
lld/trunk/test/COFF/debug-reloc.s
Index: lld/trunk/test/COFF/debug-reloc.s
===================================================================
--- lld/trunk/test/COFF/debug-reloc.s
+++ lld/trunk/test/COFF/debug-reloc.s
@@ -0,0 +1,42 @@
+# REQUIRES: x86
+
+# RUN: llvm-mc -triple=x86_64-windows-gnu %s -filetype=obj -o %t.obj
+
+# 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
+
+# SECTIONS: Number: 3
+# SECTIONS-NEXT: Name: .data (2E 64 61 74 61 00 00 00)
+# SECTIONS-NEXT: VirtualSize: 0x8
+# SECTIONS-NEXT: VirtualAddress: 0x3000
+
+# RELOCS: BaseReloc [
+# RELOCS-NEXT: Entry {
+# RELOCS-NEXT: Type: DIR64
+# RELOCS-NEXT: Address: 0x3000
+# RELOCS-NEXT: }
+# RELOCS-NEXT: Entry {
+# RELOCS-NEXT: Type: ABSOLUTE
+# RELOCS-NEXT: Address: 0x3000
+# RELOCS-NEXT: }
+# RELOCS-NEXT: ]
+
+ .text
+ .def mainfunc;
+ .scl 2;
+ .type 32;
+ .endef
+ .globl mainfunc
+mainfunc:
+.Lfunc_begin0:
+ xorl %eax, %eax
+ retq
+
+ .data
+ .globl ptr
+ptr:
+ .quad mainfunc
+
+ .section .debug_info,"dr"
+ .quad .Lfunc_begin0
Index: lld/trunk/COFF/Writer.cpp
===================================================================
--- lld/trunk/COFF/Writer.cpp
+++ lld/trunk/COFF/Writer.cpp
@@ -1260,7 +1260,7 @@
return;
std::vector<Baserel> V;
for (OutputSection *Sec : OutputSections) {
- if (Sec == RelocSec)
+ if (Sec->Header.Characteristics & IMAGE_SCN_MEM_DISCARDABLE)
continue;
// Collect all locations for base relocations.
for (Chunk *C : Sec->getChunks())
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D49350.156208.patch
Type: text/x-patch
Size: 1693 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180719/7079b170/attachment.bin>
More information about the llvm-commits
mailing list