1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
# REQUIRES: x86
# 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 --check-prefix=RDATA
# There shouldn't be much xdata, because all three .pdata entries (12 bytes
# each) should use the same .xdata unwind info.
# XDATA: Name: .rdata
# XDATA-NEXT: VirtualSize: 0x6F
# 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: 0x78
# RDATA: Name: .pdata
# RDATA-NEXT: VirtualSize: 0x24
.text
callee:
ret
.def xdata1;
.scl 2;
.type 32;
.endef
.section .text,"xr",one_only,xdata1
.globl xdata1 # -- Begin function xdata1
.p2align 4, 0x90
xdata1: # @xdata1
.seh_proc xdata1
# BB#0: # %entry
subq $40, %rsp
.seh_stackalloc 40
.seh_endprologue
callq callee
nop
addq $40, %rsp
jmp callee # TAILCALL
.seh_handlerdata
.section .text,"xr",one_only,xdata1
.seh_endproc
# -- End function
.def xdata2;
.scl 2;
.type 32;
.endef
.section .text,"xr",one_only,xdata2
.globl xdata2 # -- Begin function xdata2
.p2align 4, 0x90
xdata2: # @xdata2
.seh_proc xdata2
# BB#0: # %entry
subq $40, %rsp
.seh_stackalloc 40
.seh_endprologue
callq callee
callq callee
nop
addq $40, %rsp
jmp callee # TAILCALL
.seh_handlerdata
.section .text,"xr",one_only,xdata2
.seh_endproc
# -- End function
.def xdata3;
.scl 2;
.type 32;
.endef
.section .text,"xr",one_only,xdata3
.globl xdata3 # -- Begin function xdata3
.p2align 4, 0x90
xdata3: # @xdata3
.seh_proc xdata3
# BB#0: # %entry
subq $40, %rsp
.seh_stackalloc 40
.seh_endprologue
callq callee
callq callee
callq callee
nop
addq $40, %rsp
jmp callee # TAILCALL
.seh_handlerdata
.section .text,"xr",one_only,xdata3
.seh_endproc
# -- End function
.section .drectve,"yn"
.ascii " -export:xdata1"
.ascii " -export:xdata2"
.ascii " -export:xdata3"
|