[lld] r330484 - COFF: Merge .xdata into .rdata by default.

Peter Collingbourne via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 20 14:32:37 PDT 2018


Author: pcc
Date: Fri Apr 20 14:32:37 2018
New Revision: 330484

URL: http://llvm.org/viewvc/llvm-project?rev=330484&view=rev
Log:
COFF: Merge .xdata into .rdata by default.

Differential Revision: https://reviews.llvm.org/D45804

Modified:
    lld/trunk/COFF/Driver.cpp
    lld/trunk/test/COFF/icf-xdata.s
    lld/trunk/test/COFF/pdb.test
    lld/trunk/test/COFF/unwind.test

Modified: lld/trunk/COFF/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Driver.cpp?rev=330484&r1=330483&r2=330484&view=diff
==============================================================================
--- lld/trunk/COFF/Driver.cpp (original)
+++ lld/trunk/COFF/Driver.cpp Fri Apr 20 14:32:37 2018
@@ -1109,6 +1109,7 @@ void LinkerDriver::link(ArrayRef<const c
   parseMerge(".idata=.rdata");
   parseMerge(".didat=.rdata");
   parseMerge(".edata=.rdata");
+  parseMerge(".xdata=.rdata");
   parseMerge(".bss=.data");
 
   // Handle /section

Modified: lld/trunk/test/COFF/icf-xdata.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/icf-xdata.s?rev=330484&r1=330483&r2=330484&view=diff
==============================================================================
--- lld/trunk/test/COFF/icf-xdata.s (original)
+++ lld/trunk/test/COFF/icf-xdata.s Fri Apr 20 14:32:37 2018
@@ -1,13 +1,25 @@
 # RUN: llvm-mc %s -triple x86_64-windows-msvc -filetype=obj -o %t.obj
+# RUN: lld-link %t.obj -dll -noentry -out:%t.dll -merge:.xdata=.xdata 2>&1 \
+# RUN:     | FileCheck %s --check-prefix=WARN
+# RUN: llvm-readobj -sections %t.dll | FileCheck %s --check-prefix=XDATA
 # RUN: lld-link %t.obj -dll -noentry -out:%t.dll
-# RUN: llvm-readobj -sections %t.dll | FileCheck %s
+# RUN: llvm-readobj -sections %t.dll | FileCheck %s --check-prefix=RDATA
 
 # There shouldn't be much xdata, because all three .pdata entries (12 bytes
 # each) should use the same .xdata unwind info.
-# CHECK:         Name: .pdata
-# CHECK-NEXT:    VirtualSize: 0x24
-# CHECK:         Name: .xdata
-# CHECK-NEXT:    VirtualSize: 0x8
+# XDATA:         Name: .rdata
+# XDATA-NEXT:    VirtualSize: 0x73
+# XDATA:         Name: .pdata
+# XDATA-NEXT:    VirtualSize: 0x24
+# XDATA:         Name: .xdata
+# XDATA-NEXT:    VirtualSize: 0x8
+#
+# WARN: warning: .xdata=.rdata: already merged into .xdata
+#
+# RDATA:         Name: .rdata
+# RDATA-NEXT:    VirtualSize: 0x7C
+# RDATA:         Name: .pdata
+# RDATA-NEXT:    VirtualSize: 0x24
 
 	.text
 callee:

Modified: lld/trunk/test/COFF/pdb.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/pdb.test?rev=330484&r1=330483&r2=330484&view=diff
==============================================================================
--- lld/trunk/test/COFF/pdb.test (original)
+++ lld/trunk/test/COFF/pdb.test Fri Apr 20 14:32:37 2018
@@ -245,19 +245,6 @@ RAW-NEXT:         0 number of line numbe
 RAW-NEXT:  40000040 flags
 RAW-NEXT:           IMAGE_SCN_CNT_INITIALIZED_DATA
 RAW-NEXT:           IMAGE_SCN_MEM_READ
-RAW:        SECTION HEADER #4
-RAW-NEXT:    .xdata name
-RAW-NEXT:         8 virtual size
-RAW-NEXT:      4000 virtual address
-RAW-NEXT:       200 size of raw data
-RAW-NEXT:       A00 file pointer to raw data
-RAW-NEXT:         0 file pointer to relocation table
-RAW-NEXT:         0 file pointer to line numbers
-RAW-NEXT:         0 number of relocations
-RAW-NEXT:         0 number of line numbers
-RAW-NEXT:  40000040 flags
-RAW-NEXT:           IMAGE_SCN_CNT_INITIALIZED_DATA
-RAW-NEXT:           IMAGE_SCN_MEM_READ
 RAW:                        Original Section Headers
 RAW-NEXT: ============================================================
 RAW-NEXT:   PDB does not contain the requested image section header type
@@ -274,9 +261,9 @@ RAW-NEXT:   SC[.rdata]  | mod = 2, 0002:
 RAW-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ
 RAW-NEXT:   SC[.rdata]  | mod = 2, 0002:0028, size = {{[0-9]+}}, data crc = 0, reloc crc = 0
 RAW-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ
-RAW-NEXT:   SC[.pdata]  | mod = 0, 0003:0000, size = 12, data crc = 361370162, reloc crc = 0
+RAW-NEXT:   SC[.rdata]  | mod = 0, 0002:0148, size = {{[0-9]+}}, data crc = 264583633, reloc crc = 0
 RAW-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_ALIGN_4BYTES | IMAGE_SCN_MEM_READ
-RAW-NEXT:   SC[.xdata]  | mod = 0, 0004:0000, size = {{[0-9]+}}, data crc = 264583633, reloc crc = 0
+RAW-NEXT:   SC[.pdata]  | mod = 0, 0003:0000, size = 12, data crc = 361370162, reloc crc = 0
 RAW-NEXT:                 IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_ALIGN_4BYTES | IMAGE_SCN_MEM_READ
 RAW-NOT: SC[
 RAW:                             Section Map
@@ -292,8 +279,5 @@ RAW-NEXT:   Section 0002 | ovl = 0, grou
 RAW-NEXT:                  class = 65535, offset = 0, size =
 RAW-NEXT:                  flags = read | 32 bit addr | selector
 RAW-NEXT:   Section 0003 | ovl = 0, group = 0, frame = 4, name = 65535
-RAW-NEXT:                  class = 65535, offset = 0, size =
-RAW-NEXT:                  flags = read | 32 bit addr | selector
-RAW-NEXT:   Section 0004 | ovl = 0, group = 0, frame = 5, name = 65535
 RAW-NEXT:                  class = 65535, offset = 0, size = 4294967295
 RAW-NEXT:                  flags = 32 bit addr | absolute addr

Modified: lld/trunk/test/COFF/unwind.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/unwind.test?rev=330484&r1=330483&r2=330484&view=diff
==============================================================================
--- lld/trunk/test/COFF/unwind.test (original)
+++ lld/trunk/test/COFF/unwind.test Fri Apr 20 14:32:37 2018
@@ -15,13 +15,13 @@
 # HEADER-MERGE: ExceptionTableRVA: 0x2004
 # HEADER-MERGE-NEXT: ExceptionTableSize: 0x30
 # HEADER-MERGE: Name: .rdata
-# HEADER-MERGE-NEXT: VirtualSize: 0x34
+# HEADER-MERGE-NEXT: VirtualSize: 0x78
 # HEADER-MERGE-NEXT: VirtualAddress: 0x2000
 #
 # UNWIND: Function Table:
 # UNWIND:   Start Address: 0x1000
 # UNWIND:   End Address: 0x101b
-# UNWIND:   Unwind Info Address: 0x4000
+# UNWIND:   Unwind Info Address: 0x2004
 # UNWIND:     Version: 1
 # UNWIND:     Flags: 1 UNW_ExceptionHandler
 # UNWIND:     Size of prolog: 18
@@ -38,7 +38,7 @@
 # UNWIND: Function Table:
 # UNWIND:   Start Address: 0x1012
 # UNWIND:   End Address: 0x1012
-# UNWIND:   Unwind Info Address: 0x401c
+# UNWIND:   Unwind Info Address: 0x2020
 # UNWIND:     Version: 1
 # UNWIND:     Flags: 4 UNW_ChainInfo
 # UNWIND:     Size of prolog: 0
@@ -47,7 +47,7 @@
 # UNWIND: Function Table:
 # UNWIND:   Start Address: 0x101b
 # UNWIND:   End Address: 0x101c
-# UNWIND:   Unwind Info Address: 0x402c
+# UNWIND:   Unwind Info Address: 0x2030
 # UNWIND:     Version: 1
 # UNWIND:     Flags: 0
 # UNWIND:     Size of prolog: 0
@@ -56,7 +56,7 @@
 # UNWIND: Function Table:
 # UNWIND:   Start Address: 0x101c
 # UNWIND:   End Address: 0x1039
-# UNWIND:   Unwind Info Address: 0x4034
+# UNWIND:   Unwind Info Address: 0x2038
 # UNWIND:     Version: 1
 # UNWIND:     Flags: 0
 # UNWIND:     Size of prolog: 14




More information about the llvm-commits mailing list