## Check yaml2obj is able to set an ABI version for an object.

## Check that by default yaml2obj emits ELFOSABI_NONE (0) for ABI version.
# RUN: yaml2obj %s --docnum=1 -o %t.default
# RUN: yaml2obj %s --docnum=2 -o %t.none
# RUN: llvm-readobj --file-headers %t.none | FileCheck %s --check-prefix=OSABI-NONE
# RUN: llvm-readobj --file-headers %t.default | FileCheck %s --check-prefix=OSABI-NONE

# OSABI-NONE: OS/ABI: SystemV (0x0)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_NONE

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL

# RUN: yaml2obj %s --docnum=3 -o %t.hpux
# RUN: llvm-readobj --file-headers %t.hpux | FileCheck %s --check-prefix=OSABI-HPUX

# OSABI-HPUX: OS/ABI: HPUX (0x1)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_HPUX

# RUN: yaml2obj %s --docnum=4 -o %t.netbsd
# RUN: llvm-readobj --file-headers %t.netbsd | FileCheck %s --check-prefix=OSABI-NETBSD

# OSABI-NETBSD: OS/ABI: NetBSD (0x2)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_NETBSD

## Test ELFOSABI_GNU and ELFOSABI_LINUX (historical alias for ELFOSABI_GNU).
# RUN: yaml2obj %s --docnum=5 -o %t.gnu
# RUN: llvm-readobj --file-headers %t.gnu | FileCheck %s --check-prefix=OSABI-GNU
# RUN: yaml2obj %s --docnum=6 -o %t.gnu.alias
# RUN: llvm-readobj --file-headers %t.gnu.alias | FileCheck %s --check-prefix=OSABI-GNU
# OSABI-GNU: OS/ABI: GNU/Linux (0x3)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_GNU

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_LINUX

# RUN: yaml2obj %s --docnum=7 -o %t.hurd
# RUN: llvm-readobj --file-headers %t.hurd | FileCheck %s --check-prefix=OSABI-HURD

# OSABI-HURD: OS/ABI: GNU/Hurd (0x4)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_HURD

# RUN: yaml2obj %s --docnum=8 -o %t.solaris
# RUN: llvm-readobj --file-headers %t.solaris | FileCheck %s --check-prefix=OSABI-SOLARIS

# OSABI-SOLARIS: OS/ABI: Solaris (0x6)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_SOLARIS

# RUN: yaml2obj %s --docnum=9 -o %t.aix
# RUN: llvm-readobj --file-headers %t.aix | FileCheck %s --check-prefix=OSABI-AIX

# OSABI-AIX: OS/ABI: AIX (0x7)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_AIX

# RUN: yaml2obj %s --docnum=10 -o %t.irix
# RUN: llvm-readobj --file-headers %t.irix | FileCheck %s --check-prefix=OSABI-IRIX

# OSABI-IRIX: OS/ABI: IRIX (0x8)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_IRIX

# RUN: yaml2obj %s --docnum=11 -o %t.freebsd
# RUN: llvm-readobj --file-headers %t.freebsd | FileCheck %s --check-prefix=OSABI-FREEBSD

# OSABI-FREEBSD: OS/ABI: FreeBSD (0x9)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_FREEBSD

# RUN: yaml2obj %s --docnum=12 -o %t.tru64
# RUN: llvm-readobj --file-headers %t.tru64 | FileCheck %s --check-prefix=OSABI-TRU64

# OSABI-TRU64: OS/ABI: TRU64 (0xA)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_TRU64

# RUN: yaml2obj %s --docnum=13 -o %t.modesto
# RUN: llvm-readobj --file-headers %t.modesto | FileCheck %s --check-prefix=OSABI-MODESTO

# OSABI-MODESTO: OS/ABI: Modesto (0xB)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_MODESTO

# RUN: yaml2obj %s --docnum=14 -o %t.openbsd
# RUN: llvm-readobj --file-headers %t.openbsd | FileCheck %s --check-prefix=OSABI-OPENBSD

# OSABI-OPENBSD: OS/ABI: OpenBSD (0xC)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_OPENBSD

# RUN: yaml2obj %s --docnum=15 -o %t.openvms
# RUN: llvm-readobj --file-headers %t.openvms | FileCheck %s --check-prefix=OSABI-OPENVMS

# OSABI-OPENVMS: OS/ABI: OpenVMS (0xD)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_OPENVMS

# RUN: yaml2obj %s --docnum=16 -o %t.nsk
# RUN: llvm-readobj --file-headers %t.nsk | FileCheck %s --check-prefix=OSABI-NSK

# OSABI-NSK: OS/ABI: NSK (0xE)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_NSK

# RUN: yaml2obj %s --docnum=17 -o %t.aros
# RUN: llvm-readobj --file-headers %t.aros | FileCheck %s --check-prefix=OSABI-AROS

# OSABI-AROS: OS/ABI: AROS (0xF)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_AROS

# RUN: yaml2obj %s --docnum=18 -o %t.fenixos
# RUN: llvm-readobj --file-headers %t.fenixos | FileCheck %s --check-prefix=OSABI-FENIXOS

# OSABI-FENIXOS: OS/ABI: FenixOS (0x10)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_FENIXOS

# RUN: yaml2obj %s --docnum=19 -o %t.cloudabi
# RUN: llvm-readobj --file-headers %t.cloudabi | FileCheck %s --check-prefix=OSABI-CLOUDABI

# OSABI-CLOUDABI: OS/ABI: CloudABI (0x11)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_CLOUDABI

# RUN: yaml2obj %s --docnum=20 -o %t.amdhsa
# RUN: llvm-readobj --file-headers %t.amdhsa | FileCheck %s --check-prefix=OSABI-ARCHSPEC40
# RUN: yaml2obj %s --docnum=21 -o %t.c6000
# RUN: llvm-readobj --file-headers %t.c6000 | FileCheck %s --check-prefix=OSABI-ARCHSPEC40

# OSABI-ARCHSPEC40: OS/ABI: 0x40

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_AMDGPU_HSA

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_C6000_ELFABI

# RUN: yaml2obj %s --docnum=22 -o %t.amdpal
# RUN: llvm-readobj --file-headers %t.amdpal | FileCheck %s --check-prefix=OSABI-ARCHSPEC41
# RUN: yaml2obj %s --docnum=23 -o %t.c6000linux
# RUN: llvm-readobj --file-headers %t.c6000linux | FileCheck %s --check-prefix=OSABI-ARCHSPEC41

# OSABI-ARCHSPEC41: OS/ABI: 0x41

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_AMDGPU_PAL

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_C6000_LINUX

# RUN: yaml2obj %s --docnum=24 -o %t.amdmesa
# RUN: llvm-readobj --file-headers %t.amdmesa | FileCheck %s --check-prefix=OSABI-AMD-MESA3D

# OSABI-AMD-MESA3D: OS/ABI: 0x42

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_AMDGPU_MESA3D

# RUN: yaml2obj %s --docnum=25 -o %t.arm
# RUN: llvm-readobj --file-headers %t.arm | FileCheck %s --check-prefix=OSABI-ARM

# OSABI-ARM: OS/ABI: 0x61

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_ARM

# RUN: yaml2obj %s --docnum=26 -o %t.standalone
# RUN: llvm-readobj --file-headers %t.standalone | FileCheck %s --check-prefix=OSABI-STANDALONE

# OSABI-STANDALONE: OS/ABI: Standalone (0xFF)

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: ELFOSABI_STANDALONE

## Test we can use an arbitrary number for OSABI.
# RUN: yaml2obj %s --docnum=27 -o %t.number
# RUN: llvm-readobj --file-headers %t.number | FileCheck %s --check-prefix=OSABI-NUMBER
# OSABI-NUMBER: OS/ABI: 0xFE

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
  OSABI: 0xFE
