[lld] r190798 - [PECOFF] Add DISCARDABLE characteristic to .reloc section

Rui Ueyama ruiu at google.com
Mon Sep 16 10:35:13 PDT 2013


Author: ruiu
Date: Mon Sep 16 12:35:13 2013
New Revision: 190798

URL: http://llvm.org/viewvc/llvm-project?rev=190798&view=rev
Log:
[PECOFF] Add DISCARDABLE characteristic to .reloc section

This patch sets the IMAGE_SCN_MEM_DISCARDABLE characteristic to the base
relocations section in order to match MS PECOFF specification.

Patch by Ron Ofir.

Modified:
    lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
    lld/trunk/test/pecoff/base-reloc.test

Modified: lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp?rev=190798&r1=190797&r2=190798&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp (original)
+++ lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp Mon Sep 16 12:35:13 2013
@@ -707,7 +707,8 @@ private:
   // When loaded into memory, reloc section should be readable and writable.
   static const uint32_t characteristics =
       llvm::COFF::IMAGE_SCN_MEM_READ |
-      llvm::COFF::IMAGE_SCN_CNT_INITIALIZED_DATA;
+      llvm::COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
+      llvm::COFF::IMAGE_SCN_MEM_DISCARDABLE;
 
   // Returns a list of RVAs that needs to be relocated if the binary is loaded
   // at an address different from its preferred one.

Modified: lld/trunk/test/pecoff/base-reloc.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/base-reloc.test?rev=190798&r1=190797&r2=190798&view=diff
==============================================================================
--- lld/trunk/test/pecoff/base-reloc.test (original)
+++ lld/trunk/test/pecoff/base-reloc.test Mon Sep 16 12:35:13 2013
@@ -20,7 +20,7 @@ BASEREL-SECTION-NEXT:  3000 00100000 0c0
 NOBASEREL-SECTION-NOT: Contents of section .reloc:
 
 # RUN: lld -flavor link /out:%t1 /subsystem:console /force /opt:noref \
-# RUN:   -- %t.obj && llvm-readobj -file-headers %t1 \
+# RUN:   -- %t.obj && llvm-readobj -file-headers -sections %t1 \
 # RUN:   | FileCheck %s --check-prefix=BASEREL-HEADER
 #
 # RUN: lld -flavor link /out:%t1 /subsystem:console /force /opt:noref /fixed \
@@ -30,3 +30,18 @@ NOBASEREL-SECTION-NOT: Contents of secti
 BASEREL-HEADER-NOT: IMAGE_FILE_RELOCS_STRIPPED
 
 NOBASEREL-HEADER: IMAGE_FILE_RELOCS_STRIPPED
+
+BASEREL-HEADER:     Name: .reloc (2E 72 65 6C 6F 63 00 00)
+BASEREL-HEADER-NEXT:     VirtualSize: 0xC
+BASEREL-HEADER-NEXT:     VirtualAddress: 0x3000
+BASEREL-HEADER-NEXT:     RawDataSize: 512
+BASEREL-HEADER-NEXT:     PointerToRawData: 0x600
+BASEREL-HEADER-NEXT:     PointerToRelocations: 0x0
+BASEREL-HEADER-NEXT:     PointerToLineNumbers: 0x0
+BASEREL-HEADER-NEXT:     RelocationCount: 0
+BASEREL-HEADER-NEXT:     LineNumberCount: 0
+BASEREL-HEADER-NEXT:     Characteristics [ (0x42000040)
+BASEREL-HEADER-NEXT:       IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
+BASEREL-HEADER-NEXT:       IMAGE_SCN_MEM_DISCARDABLE (0x2000000)
+BASEREL-HEADER-NEXT:       IMAGE_SCN_MEM_READ (0x40000000)
+BASEREL-HEADER-NEXT:     ]





More information about the llvm-commits mailing list