[PATCH] [lld][PECOFF] Add DISCARDABLE characteristic to .reloc section
Ron Ofir
ron.ofir at gmail.com
Fri Sep 6 06:40:42 PDT 2013
Hi rui314,
This patch sets the IMAGE_SCN_MEM_DISCARDABLE characteristic to the base relocations section in order to match MS PECOFF specification.
http://llvm-reviews.chandlerc.com/D1617
Files:
lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
test/pecoff/base-reloc.test
Index: lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
===================================================================
--- lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
+++ lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
@@ -702,7 +714,8 @@
// 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.
Index: test/pecoff/base-reloc.test
===================================================================
--- test/pecoff/base-reloc.test
+++ test/pecoff/base-reloc.test
@@ -20,7 +20,7 @@
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 @@
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: ]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D1617.1.patch
Type: text/x-patch
Size: 2077 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130906/2f9966b5/attachment.bin>
More information about the llvm-commits
mailing list