1## Check llvm-readobj and llvm-readelf can dump files of the different ELF types. 2 3# RUN: yaml2obj %s -DTYPE=ET_NONE -o %t1 4# RUN: llvm-readobj -h %t1 | FileCheck %s --match-full-lines --check-prefix LLVM-NONE 5# RUN: llvm-readelf -h %t1 | FileCheck %s --match-full-lines --check-prefix GNU-NONE 6 7# LLVM-NONE: ElfHeader { 8# LLVM-NONE: Type: None (0x0) 9 10# GNU-NONE: ELF Header: 11# GNU-NONE: Type: NONE (none) 12 13--- !ELF 14FileHeader: 15 Class: ELFCLASS64 16 Data: ELFDATA2LSB 17 Type: [[TYPE]] 18 19# RUN: yaml2obj %s -DTYPE=ET_REL -o %t2 20# RUN: llvm-readobj -h %t2 | FileCheck %s --match-full-lines --check-prefix LLVM-REL 21# RUN: llvm-readelf -h %t2 | FileCheck %s --match-full-lines --check-prefix GNU-REL 22 23# LLVM-REL: ElfHeader { 24# LLVM-REL: Type: Relocatable (0x1) 25 26# GNU-REL: ELF Header: 27# GNU-REL: Type: REL (Relocatable file) 28 29# RUN: yaml2obj %s -DTYPE=ET_EXEC -o %t3 30# RUN: llvm-readobj -h %t3 | FileCheck %s --match-full-lines --check-prefix LLVM-EXEC 31# RUN: llvm-readelf -h %t3 | FileCheck %s --match-full-lines --check-prefix GNU-EXEC 32 33# LLVM-EXEC: ElfHeader { 34# LLVM-EXEC: Type: Executable (0x2) 35 36# GNU-EXEC: ELF Header: 37# GNU-EXEC: Type: EXEC (Executable file) 38 39# RUN: yaml2obj %s -DTYPE=ET_DYN -o %t4 40# RUN: llvm-readobj -h %t4 | FileCheck %s --match-full-lines --check-prefix LLVM-DYN 41# RUN: llvm-readelf -h %t4 | FileCheck %s --match-full-lines --check-prefix GNU-DYN 42 43# LLVM-DYN: ElfHeader { 44# LLVM-DYN: Type: SharedObject (0x3) 45 46# GNU-DYN: ELF Header: 47# GNU-DYN: Type: DYN (Shared object file) 48 49# RUN: yaml2obj %s -DTYPE=ET_CORE -o %t5 50# RUN: llvm-readobj -h %t5 | FileCheck %s --match-full-lines --check-prefix LLVM-CORE 51# RUN: llvm-readelf -h %t5 | FileCheck %s --match-full-lines --check-prefix GNU-CORE 52 53# LLVM-CORE: ElfHeader { 54# LLVM-CORE: Type: Core (0x4) 55 56# GNU-CORE: ELF Header: 57# GNU-CORE: Type: CORE (Core file) 58 59## Test what we dump for an arbitrary unknown ELF type. 60# RUN: yaml2obj %s -DTYPE=0xFDFF -o %t.unknown 61# RUN: llvm-readobj -h %t.unknown | FileCheck %s --match-full-lines --check-prefix LLVM-UNNKNOWN 62# RUN: llvm-readelf -h %t.unknown | FileCheck %s --match-full-lines --check-prefix GNU-UNNKNOWN 63 64# LLVM-UNNKNOWN: ElfHeader { 65# LLVM-UNNKNOWN: Type: Unknown (0xFDFF) 66 67# GNU-UNNKNOWN: ELF Header: 68# GNU-UNNKNOWN: Type: <unknown>: fdff 69 70# RUN: yaml2obj %s -DTYPE=0xfe00 -o %t6 71# RUN: llvm-readobj -h %t6 | FileCheck %s --match-full-lines --check-prefix LLVM-LOOS 72# RUN: llvm-readelf -h %t6 | FileCheck %s --match-full-lines --check-prefix GNU-LOOS 73 74# LLVM-LOOS: ElfHeader { 75# LLVM-LOOS: Type: OS Specific (0xFE00) 76 77# GNU-LOOS: ELF Header: 78# GNU-LOOS: Type: OS Specific: (fe00) 79 80# RUN: yaml2obj %s -DTYPE=0xfeff -o %t7 81# RUN: llvm-readobj -h %t7 | FileCheck %s --match-full-lines --check-prefix LLVM-HIOS 82# RUN: llvm-readelf -h %t7 | FileCheck %s --match-full-lines --check-prefix GNU-HIOS 83 84# LLVM-HIOS: ElfHeader { 85# LLVM-HIOS: Type: OS Specific (0xFEFF) 86 87# GNU-HIOS: ELF Header: 88# GNU-HIOS: Type: OS Specific: (feff) 89 90# RUN: yaml2obj %s -DTYPE=0xff00 -o %t8 91# RUN: llvm-readobj -h %t8 | FileCheck %s --match-full-lines --check-prefix LLVM-LOPROC 92# RUN: llvm-readelf -h %t8 | FileCheck %s --match-full-lines --check-prefix GNU-LOPROC 93 94# LLVM-LOPROC: ElfHeader { 95# LLVM-LOPROC: Type: Processor Specific (0xFF00) 96 97# GNU-LOPROC: ELF Header: 98# GNU-LOPROC: Type: Processor Specific: (ff00) 99 100# RUN: yaml2obj %s -DTYPE=0xffff -o %t9 101# RUN: llvm-readobj -h %t9 | FileCheck %s --match-full-lines --check-prefix LLVM-HIPROC 102# RUN: llvm-readelf -h %t9 | FileCheck %s --match-full-lines --check-prefix GNU-HIPROC 103 104# LLVM-HIPROC: ElfHeader { 105# LLVM-HIPROC: Type: Processor Specific (0xFFFF) 106 107# GNU-HIPROC: ELF Header: 108# GNU-HIPROC: Type: Processor Specific: (ffff) 109