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