[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