1## This is a test to test how the OS/ABI identification field (EI_OSABI) of an ELF file header is dumped. 2 3## EI_OSABI is set to ELFOSABI_NONE. 4# RUN: yaml2obj %s -DOSABI=ELFOSABI_NONE -o %t.osabi.none 5# RUN: llvm-readobj --file-headers %t.osabi.none | FileCheck %s --match-full-lines --check-prefix=OSABI-NONE-LLVM 6# RUN: llvm-readelf --file-headers %t.osabi.none | FileCheck %s --match-full-lines --check-prefix=OSABI-NONE-GNU 7 8# OSABI-NONE-LLVM: OS/ABI: SystemV (0x0) 9# OSABI-NONE-GNU: OS/ABI: UNIX - System V 10 11--- !ELF 12FileHeader: 13 Class: ELFCLASS64 14 Data: ELFDATA2LSB 15 Type: ET_REL 16 Machine: [[MACHINE=<none>]] 17 OSABI: [[OSABI]] 18 19## EI_OSABI is set to ELFOSABI_HPUX. 20# RUN: yaml2obj %s -DOSABI=ELFOSABI_HPUX -o %t.osabi.hpux 21# RUN: llvm-readobj --file-headers %t.osabi.hpux | FileCheck %s --match-full-lines --check-prefix=OSABI-HPUX-LLVM 22# RUN: llvm-readelf --file-headers %t.osabi.hpux | FileCheck %s --match-full-lines --check-prefix=OSABI-HPUX-GNU 23 24# OSABI-HPUX-LLVM: OS/ABI: HPUX (0x1) 25# OSABI-HPUX-GNU: OS/ABI: UNIX - HP-UX 26 27## EI_OSABI is set to ELFOSABI_NETBSD. 28# RUN: yaml2obj %s -DOSABI=ELFOSABI_NETBSD -o %t.osabi.netbsd 29# RUN: llvm-readobj --file-headers %t.osabi.netbsd | FileCheck %s --match-full-lines --check-prefix=OSABI-NETBSD-LLVM 30# RUN: llvm-readelf --file-headers %t.osabi.netbsd | FileCheck %s --match-full-lines --check-prefix=OSABI-NETBSD-GNU 31 32# OSABI-NETBSD-LLVM: OS/ABI: NetBSD (0x2) 33# OSABI-NETBSD-GNU: OS/ABI: UNIX - NetBSD 34 35## EI_OSABI is set to ELFOSABI_LINUX. 36# RUN: yaml2obj %s -DOSABI=ELFOSABI_LINUX -o %t.osabi.linux 37# RUN: llvm-readobj --file-headers %t.osabi.linux | FileCheck %s --match-full-lines --check-prefix=OSABI-LINUX-LLVM 38# RUN: llvm-readelf --file-headers %t.osabi.linux | FileCheck %s --match-full-lines --check-prefix=OSABI-LINUX-GNU 39 40# OSABI-LINUX-LLVM: OS/ABI: GNU/Linux (0x3) 41# OSABI-LINUX-GNU: OS/ABI: UNIX - GNU 42 43## EI_OSABI is set to ELFOSABI_HURD. 44# RUN: yaml2obj %s -DOSABI=ELFOSABI_HURD -o %t.osabi.hurd 45# RUN: llvm-readobj --file-headers %t.osabi.hurd | FileCheck %s --match-full-lines --check-prefix=OSABI-HURD-LLVM 46# RUN: llvm-readelf --file-headers %t.osabi.hurd | FileCheck %s --match-full-lines --check-prefix=OSABI-HURD-GNU 47 48# OSABI-HURD-LLVM: OS/ABI: GNU/Hurd (0x4) 49# OSABI-HURD-GNU: OS/ABI: GNU/Hurd 50 51## EI_OSABI is set to ELFOSABI_SOLARIS. 52# RUN: yaml2obj %s -DOSABI=ELFOSABI_SOLARIS -o %t.osabi.solaris 53# RUN: llvm-readobj --file-headers %t.osabi.solaris | FileCheck %s --match-full-lines --check-prefix=OSABI-SOLARIS-LLVM 54# RUN: llvm-readelf --file-headers %t.osabi.solaris | FileCheck %s --match-full-lines --check-prefix=OSABI-SOLARIS-GNU 55 56# OSABI-SOLARIS-LLVM: OS/ABI: Solaris (0x6) 57# OSABI-SOLARIS-GNU: OS/ABI: UNIX - Solaris 58 59## EI_OSABI is set to ELFOSABI_AIX. 60# RUN: yaml2obj %s -DOSABI=ELFOSABI_AIX -o %t.osabi.aix 61# RUN: llvm-readobj --file-headers %t.osabi.aix | FileCheck %s --match-full-lines --check-prefix=OSABI-AIX-LLVM 62# RUN: llvm-readelf --file-headers %t.osabi.aix | FileCheck %s --match-full-lines --check-prefix=OSABI-AIX-GNU 63 64# OSABI-AIX-LLVM: OS/ABI: AIX (0x7) 65# OSABI-AIX-GNU: OS/ABI: UNIX - AIX 66 67## EI_OSABI is set to ELFOSABI_IRIX. 68# RUN: yaml2obj %s -DOSABI=ELFOSABI_IRIX -o %t.osabi.irix 69# RUN: llvm-readobj --file-headers %t.osabi.irix | FileCheck %s --match-full-lines --check-prefix=OSABI-IRIX-LLVM 70# RUN: llvm-readelf --file-headers %t.osabi.irix | FileCheck %s --match-full-lines --check-prefix=OSABI-IRIX-GNU 71 72# OSABI-IRIX-LLVM: OS/ABI: IRIX (0x8) 73# OSABI-IRIX-GNU: OS/ABI: UNIX - IRIX 74 75## EI_OSABI is set to ELFOSABI_FREEBSD. 76# RUN: yaml2obj %s -DOSABI=ELFOSABI_FREEBSD -o %t.osabi.freebsd 77# RUN: llvm-readobj --file-headers %t.osabi.freebsd | FileCheck %s --match-full-lines --check-prefix=OSABI-FREEBSD-LLVM 78# RUN: llvm-readelf --file-headers %t.osabi.freebsd | FileCheck %s --match-full-lines --check-prefix=OSABI-FREEBSD-GNU 79 80# OSABI-FREEBSD-LLVM: OS/ABI: FreeBSD (0x9) 81# OSABI-FREEBSD-GNU: OS/ABI: UNIX - FreeBSD 82 83## EI_OSABI is set to ELFOSABI_TRU64. 84# RUN: yaml2obj %s -DOSABI=ELFOSABI_TRU64 -o %t.osabi.tru64 85# RUN: llvm-readobj --file-headers %t.osabi.tru64 | FileCheck %s --match-full-lines --check-prefix=OSABI-TRU64-LLVM 86# RUN: llvm-readelf --file-headers %t.osabi.tru64 | FileCheck %s --match-full-lines --check-prefix=OSABI-TRU64-GNU 87 88# OSABI-TRU64-LLVM: OS/ABI: TRU64 (0xA) 89# OSABI-TRU64-GNU: OS/ABI: UNIX - TRU64 90 91## EI_OSABI is set to ELFOSABI_MODESTO. 92# RUN: yaml2obj %s -DOSABI=ELFOSABI_MODESTO -o %t.osabi.modesto 93# RUN: llvm-readobj --file-headers %t.osabi.modesto | FileCheck %s --match-full-lines --check-prefix=OSABI-MODESTO-LLVM 94# RUN: llvm-readelf --file-headers %t.osabi.modesto | FileCheck %s --match-full-lines --check-prefix=OSABI-MODESTO-GNU 95 96# OSABI-MODESTO-LLVM: OS/ABI: Modesto (0xB) 97# OSABI-MODESTO-GNU: OS/ABI: Novell - Modesto 98 99## EI_OSABI is set to ELFOSABI_OPENBSD. 100# RUN: yaml2obj %s -DOSABI=ELFOSABI_OPENBSD -o %t.osabi.openbsd 101# RUN: llvm-readobj --file-headers %t.osabi.openbsd | FileCheck %s --match-full-lines --check-prefix=OSABI-OPENBSD-LLVM 102# RUN: llvm-readelf --file-headers %t.osabi.openbsd | FileCheck %s --match-full-lines --check-prefix=OSABI-OPENBSD-GNU 103 104# OSABI-OPENBSD-LLVM: OS/ABI: OpenBSD (0xC) 105# OSABI-OPENBSD-GNU: OS/ABI: UNIX - OpenBSD 106 107## EI_OSABI is set to ELFOSABI_OPENVMS. 108# RUN: yaml2obj %s -DOSABI=ELFOSABI_OPENVMS -o %t.osabi.openvms 109# RUN: llvm-readobj --file-headers %t.osabi.openvms | FileCheck %s --match-full-lines --check-prefix=OSABI-OPENVMS-LLVM 110# RUN: llvm-readelf --file-headers %t.osabi.openvms | FileCheck %s --match-full-lines --check-prefix=OSABI-OPENVMS-GNU 111 112# OSABI-OPENVMS-LLVM: OS/ABI: OpenVMS (0xD) 113# OSABI-OPENVMS-GNU: OS/ABI: VMS - OpenVMS 114 115## EI_OSABI is set to ELFOSABI_NSK. 116# RUN: yaml2obj %s -DOSABI=ELFOSABI_NSK -o %t.osabi.nsk 117# RUN: llvm-readobj --file-headers %t.osabi.nsk | FileCheck %s --match-full-lines --check-prefix=OSABI-NSK-LLVM 118# RUN: llvm-readelf --file-headers %t.osabi.nsk | FileCheck %s --match-full-lines --check-prefix=OSABI-NSK-GNU 119 120# OSABI-NSK-LLVM: OS/ABI: NSK (0xE) 121# OSABI-NSK-GNU: OS/ABI: HP - Non-Stop Kernel 122 123## EI_OSABI is set to ELFOSABI_AROS. 124# RUN: yaml2obj %s -DOSABI=ELFOSABI_AROS -o %t.osabi.aros 125# RUN: llvm-readobj --file-headers %t.osabi.aros | FileCheck %s --match-full-lines --check-prefix=OSABI-AROS-LLVM 126# RUN: llvm-readelf --file-headers %t.osabi.aros | FileCheck %s --match-full-lines --check-prefix=OSABI-AROS-GNU 127 128# OSABI-AROS-LLVM: OS/ABI: AROS (0xF) 129# OSABI-AROS-GNU: OS/ABI: AROS 130 131## EI_OSABI is set to ELFOSABI_FENIXOS. 132# RUN: yaml2obj %s -DOSABI=ELFOSABI_FENIXOS -o %t.osabi.fenixos 133# RUN: llvm-readobj --file-headers %t.osabi.fenixos | FileCheck %s --match-full-lines --check-prefix=OSABI-FENIXOS-LLVM 134# RUN: llvm-readelf --file-headers %t.osabi.fenixos | FileCheck %s --match-full-lines --check-prefix=OSABI-FENIXOS-GNU 135 136# OSABI-FENIXOS-LLVM: OS/ABI: FenixOS (0x10) 137# OSABI-FENIXOS-GNU: OS/ABI: FenixOS 138 139## EI_OSABI is set to ELFOSABI_CLOUDABI. 140# RUN: yaml2obj %s -DOSABI=ELFOSABI_CLOUDABI -o %t.osabi.cloudabi 141# RUN: llvm-readobj --file-headers %t.osabi.cloudabi | FileCheck %s --match-full-lines --check-prefix=OSABI-CLOUDABI-LLVM 142# RUN: llvm-readelf --file-headers %t.osabi.cloudabi | FileCheck %s --match-full-lines --check-prefix=OSABI-CLOUDABI-GNU 143 144# OSABI-CLOUDABI-LLVM: OS/ABI: CloudABI (0x11) 145# OSABI-CLOUDABI-GNU: OS/ABI: CloudABI 146 147## EI_OSABI is set to ELFOSABI_STANDALONE. 148# RUN: yaml2obj %s -DOSABI=ELFOSABI_STANDALONE -o %t.osabi.standalone 149# RUN: llvm-readobj --file-headers %t.osabi.standalone | FileCheck %s --match-full-lines --check-prefix=OSABI-STANDALONE-LLVM 150# RUN: llvm-readelf --file-headers %t.osabi.standalone | FileCheck %s --match-full-lines --check-prefix=OSABI-STANDALONE-GNU 151 152# OSABI-STANDALONE-LLVM: OS/ABI: Standalone (0xFF) 153# OSABI-STANDALONE-GNU: OS/ABI: Standalone App 154 155## EI_OSABI is set to an arbitrary value which is not supported by llvm-readobj/llvm-readelf. 156# RUN: yaml2obj %s -DOSABI=0xFE -o %t.osabi.unknown 157# RUN: llvm-readobj --file-headers %t.osabi.unknown | FileCheck %s --match-full-lines --check-prefix=OSABI-UNKNOWN-LLVM 158# RUN: llvm-readelf --file-headers %t.osabi.unknown | FileCheck %s --match-full-lines --check-prefix=OSABI-UNKNOWN-GNU 159 160# OSABI-UNKNOWN-LLVM: OS/ABI: 0xFE 161# OSABI-UNKNOWN-GNU: OS/ABI: fe 162 163## Check all EM_AMDGPU specific values. 164 165# RUN: yaml2obj %s -DOSABI=ELFOSABI_AMDGPU_HSA -DMACHINE=EM_AMDGPU -o %t.osabi.amd.hsa 166# RUN: llvm-readobj --file-headers %t.osabi.amd.hsa | FileCheck %s --match-full-lines --check-prefix=OSABI-AMDHSA-LLVM 167# RUN: llvm-readelf --file-headers %t.osabi.amd.hsa | FileCheck %s --match-full-lines --check-prefix=OSABI-AMDHSA-GNU 168 169# OSABI-AMDHSA-LLVM: OS/ABI: AMDGPU_HSA (0x40) 170# OSABI-AMDHSA-GNU: OS/ABI: 40 171 172# RUN: yaml2obj %s -DOSABI=ELFOSABI_AMDGPU_PAL -DMACHINE=EM_AMDGPU -o %t.osabi.amd.pal 173# RUN: llvm-readobj --file-headers %t.osabi.amd.pal | FileCheck %s --match-full-lines --check-prefix=OSABI-AMDPAL-LLVM 174# RUN: llvm-readelf --file-headers %t.osabi.amd.pal | FileCheck %s --match-full-lines --check-prefix=OSABI-AMDPAL-GNU 175 176# OSABI-AMDPAL-LLVM: OS/ABI: AMDGPU_PAL (0x41) 177# OSABI-AMDPAL-GNU: OS/ABI: 41 178 179# RUN: yaml2obj %s -DOSABI=ELFOSABI_AMDGPU_MESA3D -DMACHINE=EM_AMDGPU -o %t.osabi.amd.mesa3d 180# RUN: llvm-readobj --file-headers %t.osabi.amd.mesa3d | FileCheck %s --match-full-lines --check-prefix=OSABI-AMDMESA3D-LLVM 181# RUN: llvm-readelf --file-headers %t.osabi.amd.mesa3d | FileCheck %s --match-full-lines --check-prefix=OSABI-AMDMESA3D-GNU 182 183# OSABI-AMDMESA3D-LLVM: OS/ABI: AMDGPU_MESA3D (0x42) 184# OSABI-AMDMESA3D-GNU: OS/ABI: 42 185 186# Check all EM_ARM specific values. 187 188# RUN: yaml2obj %s -DOSABI=ELFOSABI_ARM -DMACHINE=EM_ARM -o %t.osabi.arm 189# RUN: llvm-readobj --file-headers %t.osabi.arm | FileCheck %s --match-full-lines --check-prefix=OSABI-ARM-LLVM 190# RUN: llvm-readelf --file-headers %t.osabi.arm | FileCheck %s --match-full-lines --check-prefix=OSABI-ARM-GNU 191 192# OSABI-ARM-LLVM: OS/ABI: ARM (0x61) 193# OSABI-ARM-GNU: OS/ABI: 61 194 195## Check all EM_TI_C6000 specific values. 196 197# RUN: yaml2obj %s -DOSABI=ELFOSABI_C6000_ELFABI -DMACHINE=EM_TI_C6000 -o %t.osabi.c6000.elfabi 198# RUN: llvm-readobj --file-headers %t.osabi.c6000.elfabi | FileCheck %s --match-full-lines --check-prefix=OSABI-C6000ELFABI-LLVM 199# RUN: llvm-readelf --file-headers %t.osabi.c6000.elfabi | FileCheck %s --match-full-lines --check-prefix=OSABI-C6000ELFABI-GNU 200 201# OSABI-C6000ELFABI-LLVM: OS/ABI: C6000_ELFABI (0x40) 202# OSABI-C6000ELFABI-GNU: OS/ABI: 40 203 204# RUN: yaml2obj %s -DOSABI=ELFOSABI_C6000_LINUX -DMACHINE=EM_TI_C6000 -o %t.osabi.c6000.linux 205# RUN: llvm-readobj --file-headers %t.osabi.c6000.linux | FileCheck %s --match-full-lines --check-prefix=OSABI-C6000LINUX-LLVM 206# RUN: llvm-readelf --file-headers %t.osabi.c6000.linux | FileCheck %s --match-full-lines --check-prefix=OSABI-C6000LINUX-GNU 207 208# OSABI-C6000LINUX-LLVM: OS/ABI: C6000_LINUX (0x41) 209# OSABI-C6000LINUX-GNU: OS/ABI: 41 210