Rename CODE_OWNERS -> Maintainers (#114544)
[llvm-project.git] / lld / test / COFF / pdata-arm64ec.test
blob7f20c460dc109951753dc35748d6f38d94294b73
1 REQUIRES: aarch64, x86
2 RUN: split-file %s %t.dir && cd %t.dir
4 Test handlign of hybrid .pdata section on ARM64EC target.
6 RUN: llvm-mc -filetype=obj -triple=arm64-windows arm64-func-sym.s -o arm64-func-sym.obj
7 RUN: llvm-mc -filetype=obj -triple=arm64ec-windows arm64ec-func-sym.s -o arm64ec-func-sym.obj
8 RUN: llvm-mc -filetype=obj -triple=x86_64-windows x86_64-func-sym.s -o x86_64-func-sym.obj
9 RUN: llvm-mc -filetype=obj -triple=arm64ec-windows %p/Inputs/loadconfig-arm64ec.s -o loadconfig-arm64ec.obj
11 Only arm64ec code:
13 RUN: lld-link -out:test1.dll -machine:arm64ec arm64ec-func-sym.obj loadconfig-arm64ec.obj -dll -noentry
15 RUN: llvm-readobj --coff-load-config test1.dll | FileCheck -check-prefix=LOADCFG %s
16 LOADCFG:      ExtraRFETable: 0x4000
17 LOADCFG-NEXT: ExtraRFETableSize: 0x8
19 RUN: llvm-readobj --headers test1.dll | FileCheck -check-prefix=NODIR %s
20 NODIR: ExceptionTableSize: 0x0
22 RUN: llvm-objdump -s --section=.pdata test1.dll | FileCheck -check-prefix=DATA %s
23 DATA: 180004000 00100000 11000001
25 Only x86_64 code:
27 RUN: lld-link -out:test2.dll -machine:arm64ec x86_64-func-sym.obj loadconfig-arm64ec.obj -dll -noentry
29 RUN: llvm-readobj --coff-load-config test2.dll | FileCheck -check-prefix=NOLOADCFG %s
30 NOLOADCFG: ExtraRFETableSize: 0x0
32 RUN: llvm-readobj --headers test2.dll | FileCheck -check-prefix=DIR %s
33 DIR:      ExceptionTableRVA: 0x4000
34 DIR-NEXT: ExceptionTableSize: 0xC
36 RUN: llvm-objdump -s --section=.pdata test2.dll | FileCheck -check-prefix=DATA2 %s
37 DATA2: 180004000 00100000 0e100000
39 Mixed arm64ec and x86_64 code:
41 RUN: lld-link -out:test3.dll -machine:arm64ec arm64ec-func-sym.obj x86_64-func-sym.obj \
42 RUN:          loadconfig-arm64ec.obj -dll -noentry
44 RUN: llvm-readobj --coff-load-config test3.dll | FileCheck -check-prefix=LOADCFG2 %s
45 LOADCFG2:      ExtraRFETable: 0x5000
46 LOADCFG2-NEXT: ExtraRFETableSize: 0x8
48 RUN: llvm-readobj --headers test3.dll | FileCheck -check-prefix=DIR2 %s
49 DIR2:      ExceptionTableRVA: 0x5008
50 DIR2-NEXT: ExceptionTableSize: 0xC
52 RUN: llvm-objdump -s --section=.pdata test3.dll | FileCheck -check-prefix=DATA3 %s
53 DATA3: 180005000 00100000 11000001 00200000 0e200000
55 Mixed arm64x code:
57 RUN: lld-link -out:test4.dll -machine:arm64x arm64-func-sym.obj arm64ec-func-sym.obj \
58 RUN:          x86_64-func-sym.obj loadconfig-arm64ec.obj -dll -noentry
60 RUN: llvm-readobj --headers test4.dll | FileCheck -check-prefix=DIR3 %s
61 DIR3:      ExceptionTableRVA: 0x6000
62 DIR3-NEXT: ExceptionTableSize: 0x10
64 RUN: llvm-objdump -s --section=.pdata test4.dll | FileCheck -check-prefix=DATA4 %s
65 DATA4: 180006000 00100000 11000001 00200000 11000001  ......... ......
66 DATA4: 180006010 00300000 0e300000
68 Order of inputs doesn't matter, the data is sorted by type and RVA:
70 RUN: lld-link -out:test5.dll -machine:arm64ec x86_64-func-sym.obj arm64ec-func-sym.obj \
71 RUN:          loadconfig-arm64ec.obj -dll -noentry
72 RUN: llvm-readobj --coff-load-config test5.dll | FileCheck -check-prefix=LOADCFG2 %s
73 RUN: llvm-readobj --headers test5.dll | FileCheck -check-prefix=DIR2 %s
74 RUN: llvm-objdump -s --section=.pdata test5.dll | FileCheck -check-prefix=DATA3 %s
76 RUN: lld-link -out:test6.dll -machine:arm64x arm64ec-func-sym.obj x86_64-func-sym.obj \
77 RUN:          arm64-func-sym.obj loadconfig-arm64ec.obj -dll -noentry
78 RUN: llvm-readobj --headers test6.dll | FileCheck -check-prefix=DIR3 %s
79 RUN: llvm-objdump -s --section=.pdata test6.dll | FileCheck -check-prefix=DATA4 %s
81 RUN: lld-link -out:test7.dll -machine:arm64x x86_64-func-sym.obj arm64ec-func-sym.obj \
82 RUN:          arm64-func-sym.obj loadconfig-arm64ec.obj -dll -noentry
83 RUN: llvm-readobj --headers test7.dll | FileCheck -check-prefix=DIR3 %s
84 RUN: llvm-objdump -s --section=.pdata test7.dll | FileCheck -check-prefix=DATA4 %s
86 #--- arm64-func-sym.s
87     .text
88     .globl arm64_func_sym
89     .p2align 2, 0x0
90 arm64_func_sym:
91     .seh_proc arm64_func_sym
92     sub sp, sp, #32
93     .seh_stackalloc 32
94     .seh_endprologue
95     mov w0, #2
96     .seh_startepilogue
97     add sp, sp, #32
98     .seh_stackalloc 32
99     .seh_endepilogue
100     ret
101     .seh_endproc
103 #--- arm64ec-func-sym.s
104     .text
105     .globl arm64ec_func_sym
106     .p2align 2, 0x0
107 arm64ec_func_sym:
108     .seh_proc arm64ec_func_sym
109     sub sp, sp, #32
110     .seh_stackalloc 32
111     .seh_endprologue
112     mov w0, #3
113     .seh_startepilogue
114     add sp, sp, #32
115     .seh_stackalloc 32
116     .seh_endepilogue
117     ret
118     .seh_endproc
120 #--- x86_64-func-sym.s
121     .text
122     .globl x86_64_func_sym
123     .p2align 2, 0x0
124 x86_64_func_sym:
125     .seh_proc x86_64_func_sym
126     subq    $40, %rsp
127     .seh_stackalloc 40
128     .seh_endprologue
129     movl $4, %eax
130     addq $40, %rsp
131     retq
132     .seh_endproc