blob: 4fa5c06e11d2e76e92c91c7dae5c43f3e20b98b2 [file] [log] [blame]
Joel Jonesa5752e12018-06-06 13:56:511# REQUIRES: x86
Peter Collingbourne107f5502018-05-12 02:12:402# RUN: llvm-mc %s -triple x86_64-windows-msvc -filetype=obj -o %t.obj
3# RUN: lld-link %t.obj -dll -noentry -out:%t.dll -merge:.xdata=.xdata
Fangrui Songb1599062019-05-01 05:49:014# RUN: llvm-readobj --sections --coff-exports %t.dll | FileCheck %s
Peter Collingbourne107f5502018-05-12 02:12:405
6# CHECK: Name: .pdata
7# CHECK-NEXT: VirtualSize: 0x18
8# CHECK: Name: .xdata
9# CHECK-NEXT: VirtualSize: 0x10
10
11# CHECK: Name: xdata1
12# CHECK-NEXT: RVA: 0x1010
13# CHECK: Name: xdata1a
14# CHECK-NEXT: RVA: 0x1010
15# CHECK: Name: xdata1b
16# CHECK-NEXT: RVA: 0x1030
17
18 .text
19callee:
20 ret
21
22 .def xdata1;
23 .scl 2;
24 .type 32;
25 .endef
26 .section .text,"xr",one_only,xdata1
27 .globl xdata1 # -- Begin function xdata1
28 .p2align 4, 0x90
29xdata1: # @xdata1
30.seh_proc xdata1
31# BB#0: # %entry
32 subq $40, %rsp
33 .seh_stackalloc 40
34 .seh_endprologue
35 callq callee
36 nop
37 addq $40, %rsp
38 jmp callee # TAILCALL
39 .seh_handlerdata
40 .section .text,"xr",one_only,xdata1
41 .seh_endproc
42 # -- End function
43
44# xdata1a is identical to xdata1, so it should be ICFd, and so should its pdata.
45# It also has associative debug and CFG sections which should be ignored by ICF.
46 .def xdata1a;
47 .scl 2;
48 .type 32;
49 .endef
50 .section .text,"xr",one_only,xdata1a
51 .globl xdata1a # -- Begin function xdata1a
52 .p2align 4, 0x90
53xdata1a: # @xdata1a
54.seh_proc xdata1a
55# BB#0: # %entry
56 subq $40, %rsp
57 .seh_stackalloc 40
58 .seh_endprologue
59 callq callee
60 nop
61 addq $40, %rsp
62 jmp callee # TAILCALL
63 .seh_handlerdata
64 .section .text,"xr",one_only,xdata1a
65 .seh_endproc
66
67 .section .debug$S,"r",associative,xdata1a
68 .section .gfids$y,"r",associative,xdata1a
69 .section .gljmp$y,"r",associative,xdata1a
70
71# xdata1b's text is identical to xdata1, but its xdata specifies a different
72# stack size, so it cannot be ICFd with xdata1.
73 .def xdata1b;
74 .scl 2;
75 .type 32;
76 .endef
77 .section .text,"xr",one_only,xdata1b
78 .globl xdata1b # -- Begin function xdata1b
79 .p2align 4, 0x90
80xdata1b: # @xdata1b
81.seh_proc xdata1b
82# BB#0: # %entry
83 subq $40, %rsp
84 .seh_stackalloc 48
85 .seh_endprologue
86 callq callee
87 nop
88 addq $40, %rsp
89 jmp callee # TAILCALL
90 .seh_handlerdata
91 .section .text,"xr",one_only,xdata1b
92 .seh_endproc
93 # -- End function
94
95 .section .drectve,"yn"
96 .ascii " -export:xdata1"
97 .ascii " -export:xdata1a"
98 .ascii " -export:xdata1b"