## Check llvm-readobj and llvm-readelf can dump files of the different ELF types. # RUN: yaml2obj %s -DTYPE=ET_NONE -o %t1 # RUN: llvm-readobj -h %t1 | FileCheck %s --match-full-lines --check-prefix LLVM-NONE # RUN: llvm-readelf -h %t1 | FileCheck %s --match-full-lines --check-prefix GNU-NONE # LLVM-NONE: ElfHeader { # LLVM-NONE: Type: None (0x0) # GNU-NONE: ELF Header: # GNU-NONE: Type: NONE (none) --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: [[TYPE]] # RUN: yaml2obj %s -DTYPE=ET_REL -o %t2 # RUN: llvm-readobj -h %t2 | FileCheck %s --match-full-lines --check-prefix LLVM-REL # RUN: llvm-readelf -h %t2 | FileCheck %s --match-full-lines --check-prefix GNU-REL # LLVM-REL: ElfHeader { # LLVM-REL: Type: Relocatable (0x1) # GNU-REL: ELF Header: # GNU-REL: Type: REL (Relocatable file) # RUN: yaml2obj %s -DTYPE=ET_EXEC -o %t3 # RUN: llvm-readobj -h %t3 | FileCheck %s --match-full-lines --check-prefix LLVM-EXEC # RUN: llvm-readelf -h %t3 | FileCheck %s --match-full-lines --check-prefix GNU-EXEC # LLVM-EXEC: ElfHeader { # LLVM-EXEC: Type: Executable (0x2) # GNU-EXEC: ELF Header: # GNU-EXEC: Type: EXEC (Executable file) # RUN: yaml2obj %s -DTYPE=ET_DYN -o %t4 # RUN: llvm-readobj -h %t4 | FileCheck %s --match-full-lines --check-prefix LLVM-DYN # RUN: llvm-readelf -h %t4 | FileCheck %s --match-full-lines --check-prefix GNU-DYN # LLVM-DYN: ElfHeader { # LLVM-DYN: Type: SharedObject (0x3) # GNU-DYN: ELF Header: # GNU-DYN: Type: DYN (Shared object file) # RUN: yaml2obj %s -DTYPE=ET_CORE -o %t5 # RUN: llvm-readobj -h %t5 | FileCheck %s --match-full-lines --check-prefix LLVM-CORE # RUN: llvm-readelf -h %t5 | FileCheck %s --match-full-lines --check-prefix GNU-CORE # LLVM-CORE: ElfHeader { # LLVM-CORE: Type: Core (0x4) # GNU-CORE: ELF Header: # GNU-CORE: Type: CORE (Core file) ## Test what we dump for an arbitrary unknown ELF type. # RUN: yaml2obj %s -DTYPE=0xFDFF -o %t.unknown # RUN: llvm-readobj -h %t.unknown | FileCheck %s --match-full-lines --check-prefix LLVM-UNNKNOWN # RUN: llvm-readelf -h %t.unknown | FileCheck %s --match-full-lines --check-prefix GNU-UNNKNOWN # LLVM-UNNKNOWN: ElfHeader { # LLVM-UNNKNOWN: Type: Unknown (0xFDFF) # GNU-UNNKNOWN: ELF Header: # GNU-UNNKNOWN: Type: <unknown>: fdff # RUN: yaml2obj %s -DTYPE=0xfe00 -o %t6 # RUN: llvm-readobj -h %t6 | FileCheck %s --match-full-lines --check-prefix LLVM-LOOS # RUN: llvm-readelf -h %t6 | FileCheck %s --match-full-lines --check-prefix GNU-LOOS # LLVM-LOOS: ElfHeader { # LLVM-LOOS: Type: OS Specific (0xFE00) # GNU-LOOS: ELF Header: # GNU-LOOS: Type: OS Specific: (fe00) # RUN: yaml2obj %s -DTYPE=0xfeff -o %t7 # RUN: llvm-readobj -h %t7 | FileCheck %s --match-full-lines --check-prefix LLVM-HIOS # RUN: llvm-readelf -h %t7 | FileCheck %s --match-full-lines --check-prefix GNU-HIOS # LLVM-HIOS: ElfHeader { # LLVM-HIOS: Type: OS Specific (0xFEFF) # GNU-HIOS: ELF Header: # GNU-HIOS: Type: OS Specific: (feff) # RUN: yaml2obj %s -DTYPE=0xff00 -o %t8 # RUN: llvm-readobj -h %t8 | FileCheck %s --match-full-lines --check-prefix LLVM-LOPROC # RUN: llvm-readelf -h %t8 | FileCheck %s --match-full-lines --check-prefix GNU-LOPROC # LLVM-LOPROC: ElfHeader { # LLVM-LOPROC: Type: Processor Specific (0xFF00) # GNU-LOPROC: ELF Header: # GNU-LOPROC: Type: Processor Specific: (ff00) # RUN: yaml2obj %s -DTYPE=0xffff -o %t9 # RUN: llvm-readobj -h %t9 | FileCheck %s --match-full-lines --check-prefix LLVM-HIPROC # RUN: llvm-readelf -h %t9 | FileCheck %s --match-full-lines --check-prefix GNU-HIPROC # LLVM-HIPROC: ElfHeader { # LLVM-HIPROC: Type: Processor Specific (0xFFFF) # GNU-HIPROC: ELF Header: # GNU-HIPROC: Type: Processor Specific: (ffff)