// Check that cvtres properly generates COFF for different machine types. The
// only things that changes with machine type are the machine constant listed
// in the COFF header, and the relocation types in the relocation tables.
// The input was generated with the following command, using the original Windows
// rc.exe:
// > rc /fo test_resource.res /nologo test_resource.rc
// The object files we are comparing against were generated with these commands
// using the original Windows cvtres.exe.
// > cvtres /machine:X86 /readonly /nologo /out:test_resource.obj.coff \ 
// 	 test_resource.res
// > cvtres /machine:X64 /readonly /nologo /out:test_resource.obj.coff.x64 \ 
// 	 test_resource.res
// > cvtres /machine:ARM /readonly /nologo /out:test_resource.obj.coff.x64 \ 
// 	 test_resource.res

RUN: llvm-cvtres /machine:X86 /out:%t %p/Inputs/test_resource.res
RUN: llvm-readobj -h -relocations %t | FileCheck %s -check-prefix=X86

RUN: llvm-cvtres /machine:X64 /out:%t %p/Inputs/test_resource.res
RUN: llvm-readobj -h -relocations %t | FileCheck %s -check-prefix=X64

RUN: llvm-cvtres /machine:ARM /out:%t %p/Inputs/test_resource.res
RUN: llvm-readobj -h -relocations %t | FileCheck %s -check-prefix=ARM

X86:         Machine: IMAGE_FILE_MACHINE_I386 (0x14C)
X86-DAG:   Relocations [
X86-DAG:                 .rsrc$01 {
X86-NEXT:      0x1E8 IMAGE_REL_I386_DIR32NB $R000000
X86-NEXT:      0x198 IMAGE_REL_I386_DIR32NB $R000018
X86-NEXT:      0x1A8 IMAGE_REL_I386_DIR32NB $R000340
X86-NEXT:      0x1C8 IMAGE_REL_I386_DIR32NB $R000668
X86-NEXT:      0x1D8 IMAGE_REL_I386_DIR32NB $R000698
X86-NEXT:      0x1F8 IMAGE_REL_I386_DIR32NB $R000708
X86-NEXT:      0x1B8 IMAGE_REL_I386_DIR32NB $R000720
X86-NEXT:      0x188 IMAGE_REL_I386_DIR32NB $R000750

X64:         Machine: IMAGE_FILE_MACHINE_AMD64 (0x8664)
X64-DAG:   Relocations [
X64-DAG:                 .rsrc$01 {
X64-NEXT:      0x1E8 IMAGE_REL_AMD64_ADDR32NB $R000000
X64-NEXT:      0x198 IMAGE_REL_AMD64_ADDR32NB $R000018
X64-NEXT:      0x1A8 IMAGE_REL_AMD64_ADDR32NB $R000340
X64-NEXT:      0x1C8 IMAGE_REL_AMD64_ADDR32NB $R000668
X64-NEXT:      0x1D8 IMAGE_REL_AMD64_ADDR32NB $R000698
X64-NEXT:      0x1F8 IMAGE_REL_AMD64_ADDR32NB $R000708
X64-NEXT:      0x1B8 IMAGE_REL_AMD64_ADDR32NB $R000720
X64-NEXT:      0x188 IMAGE_REL_AMD64_ADDR32NB $R000750

ARM:         Machine: IMAGE_FILE_MACHINE_ARMNT (0x1C4)
ARM-DAG:   Relocations [
ARM-DAG:                 .rsrc$01 {
ARM-NEXT:      0x1E8 IMAGE_REL_ARM_ADDR32NB $R000000
ARM-NEXT:      0x198 IMAGE_REL_ARM_ADDR32NB $R000018
ARM-NEXT:      0x1A8 IMAGE_REL_ARM_ADDR32NB $R000340
ARM-NEXT:      0x1C8 IMAGE_REL_ARM_ADDR32NB $R000668
ARM-NEXT:      0x1D8 IMAGE_REL_ARM_ADDR32NB $R000698
ARM-NEXT:      0x1F8 IMAGE_REL_ARM_ADDR32NB $R000708
ARM-NEXT:      0x1B8 IMAGE_REL_ARM_ADDR32NB $R000720
ARM-NEXT:      0x188 IMAGE_REL_ARM_ADDR32NB $R000750
