Index: llvm/test/tools/llvm-readobj/ELF/file-header-format.test =================================================================== --- /dev/null +++ llvm/test/tools/llvm-readobj/ELF/file-header-format.test @@ -0,0 +1,103 @@ +## Show all possible "Format" values printed by llvm-readobj. + +## The "Format" value printed depends on values stored in e_ident[EI_CLASS], +## e_ident[EI_DATA] and e_machine fields of an ELF file header. + +# RUN: yaml2obj %s -o %t.none64.o -DMACHINE=EM_NONE +# RUN: llvm-readobj --file-headers %t.none64.o | FileCheck %s -DFMT="elf64-unknown" + +# RUN: yaml2obj %s -o %t.none32.o -DMACHINE=EM_NONE -DCLASS=32 +# RUN: llvm-readobj --file-headers %t.none32.o | FileCheck %s -DFMT="elf32-unknown" + +# RUN: yaml2obj %s -o %t.i386-64.o -DMACHINE=EM_386 +# RUN: llvm-readobj --file-headers %t.i386-64.o | FileCheck %s -DFMT="elf64-i386" + +# RUN: yaml2obj %s -o %t.i386-32.o -DMACHINE=EM_386 -DCLASS=32 +# RUN: llvm-readobj --file-headers %t.i386-32.o | FileCheck %s -DFMT="elf32-i386" + +# RUN: yaml2obj %s -o %t.iamcu-64.o -DMACHINE=EM_IAMCU -DCLASS=32 +# RUN: llvm-readobj --file-headers %t.iamcu-64.o | FileCheck %s -DFMT="elf32-iamcu" + +# RUN: yaml2obj %s -o %t.x86_64.o -DMACHINE=EM_X86_64 +# RUN: llvm-readobj --file-headers %t.x86_64.o | FileCheck %s -DFMT="elf64-x86-64" + +# RUN: yaml2obj %s -o %t.x86_64_32.o -DMACHINE=EM_X86_64 -DCLASS=32 +# RUN: llvm-readobj --file-headers %t.x86_64_32.o | FileCheck %s -DFMT="elf32-x86-64" + +# RUN: yaml2obj %s -o %t.aarch64.le.o -DMACHINE=EM_AARCH64 +# RUN: llvm-readobj --file-headers %t.aarch64.le.o | FileCheck %s -DFMT="elf64-littleaarch64" + +# RUN: yaml2obj %s -o %t.aarch64.be.o -DMACHINE=EM_AARCH64 -DDATA=MSB +# RUN: llvm-readobj --file-headers %t.aarch64.be.o | FileCheck %s -DFMT="elf64-bigaarch64" + +# RUN: yaml2obj %s -o %t.ppc64.le.o -DMACHINE=EM_PPC64 +# RUN: llvm-readobj --file-headers %t.ppc64.le.o | FileCheck %s -DFMT="elf64-powerpcle" + +# RUN: yaml2obj %s -o %t.ppc64.be.o -DMACHINE=EM_PPC64 -DDATA=MSB +# RUN: llvm-readobj --file-headers %t.ppc64.be.o | FileCheck %s -DFMT="elf64-powerpc" + +# RUN: yaml2obj %s -o %t.risc64.o -DMACHINE=EM_RISCV +# RUN: llvm-readobj --file-headers %t.risc64.o | FileCheck %s -DFMT="elf64-littleriscv" + +# RUN: yaml2obj %s -o %t.risc32.o -DMACHINE=EM_RISCV -DCLASS=32 +# RUN: llvm-readobj --file-headers %t.risc32.o | FileCheck %s -DFMT="elf32-littleriscv" + +# RUN: yaml2obj %s -o %t.mips64.o -DMACHINE=EM_MIPS +# RUN: llvm-readobj --file-headers %t.mips64.o | FileCheck %s -DFMT="elf64-mips" + +# RUN: yaml2obj %s -o %t.mips32.o -DMACHINE=EM_MIPS -DCLASS=32 +# RUN: llvm-readobj --file-headers %t.mips32.o | FileCheck %s -DFMT="elf32-mips" + +# RUN: yaml2obj %s -o %t.amd64.o -DMACHINE=EM_AMDGPU +# RUN: llvm-readobj --file-headers %t.amd64.o | FileCheck %s -DFMT="elf64-amdgpu" + +# RUN: yaml2obj %s -o %t.amd32.o -DMACHINE=EM_AMDGPU -DCLASS=32 +# RUN: llvm-readobj --file-headers %t.amd32.o | FileCheck %s -DFMT="elf32-amdgpu" + +# RUN: yaml2obj %s -o %t.arm.le.o -DMACHINE=EM_ARM -DCLASS=32 +# RUN: llvm-readobj --file-headers %t.arm.le.o | FileCheck %s -DFMT="elf32-littlearm" + +# RUN: yaml2obj %s -o %t.arm.be.o -DMACHINE=EM_ARM -DCLASS=32 -DDATA=MSB +# RUN: llvm-readobj --file-headers %t.arm.be.o | FileCheck %s -DFMT="elf32-bigarm" + +# RUN: yaml2obj %s -o %t.s390.o -DMACHINE=EM_S390 +# RUN: llvm-readobj --file-headers %t.s390.o | FileCheck %s -DFMT="elf64-s390" + +# RUN: yaml2obj %s -o %t.sparcv9.o -DMACHINE=EM_SPARCV9 +# RUN: llvm-readobj --file-headers %t.sparcv9.o | FileCheck %s -DFMT="elf64-sparc" + +# RUN: yaml2obj %s -o %t.bpf.o -DMACHINE=EM_BPF +# RUN: llvm-readobj --file-headers %t.bpf.o | FileCheck %s -DFMT="elf64-bpf" + +# RUN: yaml2obj %s -o %t.ve.o -DMACHINE=EM_VE +# RUN: llvm-readobj --file-headers %t.ve.o | FileCheck %s -DFMT="elf64-ve" + +# RUN: yaml2obj %s -o %t.sparc.o -DMACHINE=EM_SPARC -DCLASS=32 +# RUN: llvm-readobj --file-headers %t.sparc.o | FileCheck %s -DFMT="elf32-sparc" + +# RUN: yaml2obj %s -o %t.sparc.o -DMACHINE=EM_SPARC32PLUS -DCLASS=32 +# RUN: llvm-readobj --file-headers %t.sparc.o | FileCheck %s -DFMT="elf32-sparc" + +# RUN: yaml2obj %s -o %t.avr.o -DMACHINE=EM_AVR -DCLASS=32 +# RUN: llvm-readobj --file-headers %t.avr.o | FileCheck %s -DFMT="elf32-avr" + +# RUN: yaml2obj %s -o %t.hexagon.o -DMACHINE=EM_HEXAGON -DCLASS=32 +# RUN: llvm-readobj --file-headers %t.hexagon.o | FileCheck %s -DFMT="elf32-hexagon" + +# RUN: yaml2obj %s -o %t.lanai.o -DMACHINE=EM_LANAI -DCLASS=32 +# RUN: llvm-readobj --file-headers %t.lanai.o | FileCheck %s -DFMT="elf32-lanai" + +# RUN: yaml2obj %s -o %t.msp430.o -DMACHINE=EM_MSP430 -DCLASS=32 +# RUN: llvm-readobj --file-headers %t.msp430.o | FileCheck %s -DFMT="elf32-msp430" + +# RUN: yaml2obj %s -o %t.powerpc.o -DMACHINE=EM_PPC -DCLASS=32 +# RUN: llvm-readobj --file-headers %t.powerpc.o | FileCheck %s -DFMT="elf32-powerpc" + +# CHECK: Format: [[FMT]] + +--- !ELF +FileHeader: + Class: ELFCLASS[[CLASS=64]] + Data: ELFDATA2[[DATA=LSB]] + Type: ET_REL + Machine: [[MACHINE]]