[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