xref: /llvm-project/llvm/test/tools/llvm-cvtres/machine.test (revision cea5d2870f379e7f93ba9da01747a279e4225998)
1// Check that cvtres properly generates COFF for different machine types. The
2// only things that changes with machine type are the machine constant listed
3// in the COFF header, and the relocation types in the relocation tables.
4// The input was generated with the following command, using the original Windows
5// rc.exe:
6// > rc /fo test_resource.res /nologo test_resource.rc
7// The object files we are comparing against were generated with these commands
8// using the original Windows cvtres.exe.
9// > cvtres /machine:X86 /readonly /nologo /out:test_resource.obj.coff \
10// 	 test_resource.res
11// > cvtres /machine:X64 /readonly /nologo /out:test_resource.obj.coff.x64 \
12// 	 test_resource.res
13// > cvtres /machine:ARM /readonly /nologo /out:test_resource.obj.coff.x64 \
14// 	 test_resource.res
15
16RUN: llvm-cvtres /machine:X86 /out:%t %p/Inputs/test_resource.res
17RUN: llvm-readobj -h -r %t | FileCheck %s -check-prefix=X86
18
19RUN: llvm-cvtres /machine:X64 /out:%t %p/Inputs/test_resource.res
20RUN: llvm-readobj -h -r %t | FileCheck %s -check-prefix=X64
21
22RUN: llvm-cvtres /machine:ARM /out:%t %p/Inputs/test_resource.res
23RUN: llvm-readobj -h -r %t | FileCheck %s -check-prefix=ARM
24
25RUN: llvm-cvtres /machine:ARM64 /out:%t %p/Inputs/test_resource.res
26RUN: llvm-readobj -h -r %t | FileCheck %s -check-prefix=ARM64
27
28RUN: llvm-cvtres /machine:ARM64EC /out:%t %p/Inputs/test_resource.res
29RUN: llvm-readobj -h -r %t | FileCheck %s -check-prefix=ARM64EC
30
31RUN: llvm-cvtres /machine:ARM64X /out:%t %p/Inputs/test_resource.res
32RUN: llvm-readobj -h -r %t | FileCheck %s -check-prefix=ARM64X
33
34X86:         Machine: IMAGE_FILE_MACHINE_I386 (0x14C)
35X86-DAG:   Relocations [
36X86-DAG:                 .rsrc$01 {
37X86-NEXT:      0x1E8 IMAGE_REL_I386_DIR32NB $R000000
38X86-NEXT:      0x198 IMAGE_REL_I386_DIR32NB $R000001
39X86-NEXT:      0x1A8 IMAGE_REL_I386_DIR32NB $R000002
40X86-NEXT:      0x1C8 IMAGE_REL_I386_DIR32NB $R000003
41X86-NEXT:      0x1D8 IMAGE_REL_I386_DIR32NB $R000004
42X86-NEXT:      0x1F8 IMAGE_REL_I386_DIR32NB $R000005
43X86-NEXT:      0x1B8 IMAGE_REL_I386_DIR32NB $R000006
44X86-NEXT:      0x188 IMAGE_REL_I386_DIR32NB $R000007
45
46X64:         Machine: IMAGE_FILE_MACHINE_AMD64 (0x8664)
47X64-DAG:   Relocations [
48X64-DAG:                 .rsrc$01 {
49X64-NEXT:      0x1E8 IMAGE_REL_AMD64_ADDR32NB $R000000
50X64-NEXT:      0x198 IMAGE_REL_AMD64_ADDR32NB $R000001
51X64-NEXT:      0x1A8 IMAGE_REL_AMD64_ADDR32NB $R000002
52X64-NEXT:      0x1C8 IMAGE_REL_AMD64_ADDR32NB $R000003
53X64-NEXT:      0x1D8 IMAGE_REL_AMD64_ADDR32NB $R000004
54X64-NEXT:      0x1F8 IMAGE_REL_AMD64_ADDR32NB $R000005
55X64-NEXT:      0x1B8 IMAGE_REL_AMD64_ADDR32NB $R000006
56X64-NEXT:      0x188 IMAGE_REL_AMD64_ADDR32NB $R000007
57
58ARM:         Machine: IMAGE_FILE_MACHINE_ARMNT (0x1C4)
59ARM-DAG:   Relocations [
60ARM-DAG:                 .rsrc$01 {
61ARM-NEXT:      0x1E8 IMAGE_REL_ARM_ADDR32NB $R000000
62ARM-NEXT:      0x198 IMAGE_REL_ARM_ADDR32NB $R000001
63ARM-NEXT:      0x1A8 IMAGE_REL_ARM_ADDR32NB $R000002
64ARM-NEXT:      0x1C8 IMAGE_REL_ARM_ADDR32NB $R000003
65ARM-NEXT:      0x1D8 IMAGE_REL_ARM_ADDR32NB $R000004
66ARM-NEXT:      0x1F8 IMAGE_REL_ARM_ADDR32NB $R000005
67ARM-NEXT:      0x1B8 IMAGE_REL_ARM_ADDR32NB $R000006
68ARM-NEXT:      0x188 IMAGE_REL_ARM_ADDR32NB $R000007
69
70ARM64:       Machine: IMAGE_FILE_MACHINE_ARM64 (0xAA64)
71ARM64-DAG: Relocations [
72ARM64-DAG:               .rsrc$01 {
73ARM64-NEXT:    0x1E8 IMAGE_REL_ARM64_ADDR32NB $R000000
74ARM64-NEXT:    0x198 IMAGE_REL_ARM64_ADDR32NB $R000001
75ARM64-NEXT:    0x1A8 IMAGE_REL_ARM64_ADDR32NB $R000002
76ARM64-NEXT:    0x1C8 IMAGE_REL_ARM64_ADDR32NB $R000003
77ARM64-NEXT:    0x1D8 IMAGE_REL_ARM64_ADDR32NB $R000004
78ARM64-NEXT:    0x1F8 IMAGE_REL_ARM64_ADDR32NB $R000005
79ARM64-NEXT:    0x1B8 IMAGE_REL_ARM64_ADDR32NB $R000006
80ARM64-NEXT:    0x188 IMAGE_REL_ARM64_ADDR32NB $R000007
81
82ARM64EC:       Machine: IMAGE_FILE_MACHINE_ARM64EC (0xA641)
83ARM64EC-DAG: Relocations [
84ARM64EC-DAG:               .rsrc$01 {
85ARM64EC-NEXT:    0x1E8 IMAGE_REL_ARM64_ADDR32NB $R000000
86ARM64EC-NEXT:    0x198 IMAGE_REL_ARM64_ADDR32NB $R000001
87ARM64EC-NEXT:    0x1A8 IMAGE_REL_ARM64_ADDR32NB $R000002
88ARM64EC-NEXT:    0x1C8 IMAGE_REL_ARM64_ADDR32NB $R000003
89ARM64EC-NEXT:    0x1D8 IMAGE_REL_ARM64_ADDR32NB $R000004
90ARM64EC-NEXT:    0x1F8 IMAGE_REL_ARM64_ADDR32NB $R000005
91ARM64EC-NEXT:    0x1B8 IMAGE_REL_ARM64_ADDR32NB $R000006
92ARM64EC-NEXT:    0x188 IMAGE_REL_ARM64_ADDR32NB $R000007
93
94ARM64X:       Machine: IMAGE_FILE_MACHINE_ARM64X (0xA64E)
95ARM64X-DAG: Relocations [
96ARM64X-DAG:               .rsrc$01 {
97ARM64X-NEXT:    0x1E8 IMAGE_REL_ARM64_ADDR32NB $R000000
98ARM64X-NEXT:    0x198 IMAGE_REL_ARM64_ADDR32NB $R000001
99ARM64X-NEXT:    0x1A8 IMAGE_REL_ARM64_ADDR32NB $R000002
100ARM64X-NEXT:    0x1C8 IMAGE_REL_ARM64_ADDR32NB $R000003
101ARM64X-NEXT:    0x1D8 IMAGE_REL_ARM64_ADDR32NB $R000004
102ARM64X-NEXT:    0x1F8 IMAGE_REL_ARM64_ADDR32NB $R000005
103ARM64X-NEXT:    0x1B8 IMAGE_REL_ARM64_ADDR32NB $R000006
104ARM64X-NEXT:    0x188 IMAGE_REL_ARM64_ADDR32NB $R000007
105