[llvm] 604d7fb - [llvm-readobj/llvm-readelf][test] - Add testing for EI_OSABI and EI_ABIVERSION fields of an ELF header.

Georgii Rymar via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 25 04:03:56 PST 2019


Author: Georgii Rymar
Date: 2019-12-25T15:03:00+03:00
New Revision: 604d7fbfc1e38bd5cb1c6aaec8f2ef3dcaadf294

URL: https://github.com/llvm/llvm-project/commit/604d7fbfc1e38bd5cb1c6aaec8f2ef3dcaadf294
DIFF: https://github.com/llvm/llvm-project/commit/604d7fbfc1e38bd5cb1c6aaec8f2ef3dcaadf294.diff

LOG: [llvm-readobj/llvm-readelf][test] - Add testing for EI_OSABI and EI_ABIVERSION fields of an ELF header.

We had no separate tests for these fields.

Differential revision: https://reviews.llvm.org/D71766

Added: 
    llvm/test/tools/llvm-readobj/ELF/file-header-abi-version.test
    llvm/test/tools/llvm-readobj/ELF/file-header-os-abi.test

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/llvm/test/tools/llvm-readobj/ELF/file-header-abi-version.test b/llvm/test/tools/llvm-readobj/ELF/file-header-abi-version.test
new file mode 100644
index 000000000000..f73a15564331
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/ELF/file-header-abi-version.test
@@ -0,0 +1,47 @@
+## This is a test to test how ABI version (EI_ABIVERSION) of an ELF file header is dumped.
+
+## EI_ABIVERSION is set to zero.
+# RUN: yaml2obj %s --docnum=1 -o %t.abiver.zero
+# RUN: llvm-readobj --file-headers %t.abiver.zero | FileCheck %s --match-full-lines --check-prefix=ABIVER-ZERO-LLVM
+# RUN: llvm-readelf --file-headers %t.abiver.zero | FileCheck %s --match-full-lines --check-prefix=ABIVER-ZERO-GNU
+## EI_ABIVERSION is set to an arbitrary number.
+# RUN: yaml2obj %s --docnum=2 -o %t.abiver.any
+# RUN: llvm-readobj --file-headers %t.abiver.any | FileCheck %s --match-full-lines --check-prefix=ABIVER-ANY-LLVM
+# RUN: llvm-readelf --file-headers %t.abiver.any | FileCheck %s --match-full-lines --check-prefix=ABIVER-ANY-GNU
+## EI_ABIVERSION is set to the maximum possible value.
+# RUN: yaml2obj %s --docnum=3 -o %t.abiver.max
+# RUN: llvm-readobj --file-headers %t.abiver.max | FileCheck %s --match-full-lines --check-prefix=ABIVER-MAX-LLVM
+# RUN: llvm-readelf --file-headers %t.abiver.max | FileCheck %s --match-full-lines --check-prefix=ABIVER-MAX-GNU
+
+# ABIVER-ZERO-LLVM: ABIVersion: 0
+# ABIVER-ZERO-GNU:  ABI Version: 0x0
+
+# ABIVER-ANY-LLVM: ABIVersion: 52
+# ABIVER-ANY-GNU:  ABI Version: 0x34
+
+# ABIVER-MAX-LLVM: ABIVersion: 255
+# ABIVER-MAX-GNU:  ABI Version: 0xFF
+
+--- !ELF
+FileHeader:
+  Class:      ELFCLASS64
+  Data:       ELFDATA2LSB
+  Type:       ET_REL
+  Machine:    EM_X86_64
+  ABIVersion: 0x0
+
+--- !ELF
+FileHeader:
+  Class:      ELFCLASS64
+  Data:       ELFDATA2LSB
+  Type:       ET_REL
+  Machine:    EM_X86_64
+  ABIVersion: 0x34
+
+--- !ELF
+FileHeader:
+  Class:      ELFCLASS64
+  Data:       ELFDATA2LSB
+  Type:       ET_REL
+  Machine:    EM_X86_64
+  ABIVersion: 0xFF

diff  --git a/llvm/test/tools/llvm-readobj/ELF/file-header-os-abi.test b/llvm/test/tools/llvm-readobj/ELF/file-header-os-abi.test
new file mode 100644
index 000000000000..72e2f80f1ec7
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/ELF/file-header-os-abi.test
@@ -0,0 +1,305 @@
+## This is a test to test how OS/ABI identification (EI_OSABI) of an ELF file header is dumped.
+
+## EI_OSABI is set to ELFOSABI_NONE.
+# RUN: yaml2obj %s --docnum=1 -o %t.osabi.none
+# RUN: llvm-readobj --file-headers %t.osabi.none | FileCheck %s --match-full-lines --check-prefix=OSABI-NONE-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.none | FileCheck %s --match-full-lines --check-prefix=OSABI-NONE-GNU
+
+# OSABI-NONE-LLVM: OS/ABI: SystemV (0x0)
+# OSABI-NONE-GNU:  OS/ABI: UNIX - System V
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_NONE
+
+## EI_OSABI is set to ELFOSABI_HPUX.
+# RUN: yaml2obj %s --docnum=2 -o %t.osabi.hpux
+# RUN: llvm-readobj --file-headers %t.osabi.hpux | FileCheck %s --match-full-lines --check-prefix=OSABI-HPUX-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.hpux | FileCheck %s --match-full-lines --check-prefix=OSABI-HPUX-GNU
+
+# OSABI-HPUX-LLVM: OS/ABI: HPUX (0x1)
+# OSABI-HPUX-GNU:  OS/ABI: UNIX - HP-UX
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_HPUX
+
+## EI_OSABI is set to ELFOSABI_NETBSD.
+# RUN: yaml2obj %s --docnum=3 -o %t.osabi.netbsd
+# RUN: llvm-readobj --file-headers %t.osabi.netbsd | FileCheck %s --match-full-lines --check-prefix=OSABI-NETBSD-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.netbsd | FileCheck %s --match-full-lines --check-prefix=OSABI-NETBSD-GNU
+
+# OSABI-NETBSD-LLVM: OS/ABI: NetBSD (0x2)
+# OSABI-NETBSD-GNU:  OS/ABI: UNIX - NetBSD
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_NETBSD
+
+## EI_OSABI is set to ELFOSABI_LINUX.
+# RUN: yaml2obj %s --docnum=4 -o %t.osabi.linux
+# RUN: llvm-readobj --file-headers %t.osabi.linux | FileCheck %s --match-full-lines --check-prefix=OSABI-LINUX-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.linux | FileCheck %s --match-full-lines --check-prefix=OSABI-LINUX-GNU
+
+# OSABI-LINUX-LLVM: OS/ABI: GNU/Linux (0x3)
+# OSABI-LINUX-GNU:  OS/ABI: UNIX - GNU
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_LINUX
+
+## EI_OSABI is set to ELFOSABI_HURD.
+# RUN: yaml2obj %s --docnum=5 -o %t.osabi.hurd
+# RUN: llvm-readobj --file-headers %t.osabi.hurd | FileCheck %s --match-full-lines --check-prefix=OSABI-HURD-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.hurd | FileCheck %s --match-full-lines --check-prefix=OSABI-HURD-GNU
+
+# OSABI-HURD-LLVM: OS/ABI: GNU/Hurd (0x4)
+# OSABI-HURD-GNU:  OS/ABI: GNU/Hurd
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_HURD
+
+## EI_OSABI is set to ELFOSABI_SOLARIS.
+# RUN: yaml2obj %s --docnum=6 -o %t.osabi.solaris
+# RUN: llvm-readobj --file-headers %t.osabi.solaris | FileCheck %s --match-full-lines --check-prefix=OSABI-SOLARIS-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.solaris | FileCheck %s --match-full-lines --check-prefix=OSABI-SOLARIS-GNU
+
+# OSABI-SOLARIS-LLVM: OS/ABI: Solaris (0x6)
+# OSABI-SOLARIS-GNU:  OS/ABI: UNIX - Solaris
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_SOLARIS
+
+## EI_OSABI is set to ELFOSABI_AIX.
+# RUN: yaml2obj %s --docnum=7 -o %t.osabi.aix
+# RUN: llvm-readobj --file-headers %t.osabi.aix | FileCheck %s --match-full-lines --check-prefix=OSABI-AIX-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.aix | FileCheck %s --match-full-lines --check-prefix=OSABI-AIX-GNU
+
+# OSABI-AIX-LLVM: OS/ABI: AIX (0x7)
+# OSABI-AIX-GNU:  OS/ABI: UNIX - AIX
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_AIX
+
+## EI_OSABI is set to ELFOSABI_IRIX.
+# RUN: yaml2obj %s --docnum=8 -o %t.osabi.irix
+# RUN: llvm-readobj --file-headers %t.osabi.irix | FileCheck %s --match-full-lines --check-prefix=OSABI-IRIX-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.irix | FileCheck %s --match-full-lines --check-prefix=OSABI-IRIX-GNU
+
+# OSABI-IRIX-LLVM: OS/ABI: IRIX (0x8)
+# OSABI-IRIX-GNU:  OS/ABI: UNIX - IRIX
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_IRIX
+
+## EI_OSABI is set to ELFOSABI_FREEBSD.
+# RUN: yaml2obj %s --docnum=9 -o %t.osabi.freebsd
+# RUN: llvm-readobj --file-headers %t.osabi.freebsd | FileCheck %s --match-full-lines --check-prefix=OSABI-FREEBSD-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.freebsd | FileCheck %s --match-full-lines --check-prefix=OSABI-FREEBSD-GNU
+
+# OSABI-FREEBSD-LLVM: OS/ABI: FreeBSD (0x9)
+# OSABI-FREEBSD-GNU:  OS/ABI: UNIX - FreeBSD
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_FREEBSD
+
+## EI_OSABI is set to ELFOSABI_TRU64.
+# RUN: yaml2obj %s --docnum=10 -o %t.osabi.tru64
+# RUN: llvm-readobj --file-headers %t.osabi.tru64 | FileCheck %s --match-full-lines --check-prefix=OSABI-TRU64-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.tru64 | FileCheck %s --match-full-lines --check-prefix=OSABI-TRU64-GNU
+
+# OSABI-TRU64-LLVM: OS/ABI: TRU64 (0xA)
+# OSABI-TRU64-GNU:  OS/ABI: UNIX - TRU64
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_TRU64
+
+## EI_OSABI is set to ELFOSABI_MODESTO.
+# RUN: yaml2obj %s --docnum=11 -o %t.osabi.modesto
+# RUN: llvm-readobj --file-headers %t.osabi.modesto | FileCheck %s --match-full-lines --check-prefix=OSABI-MODESTO-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.modesto | FileCheck %s --match-full-lines --check-prefix=OSABI-MODESTO-GNU
+
+# OSABI-MODESTO-LLVM: OS/ABI: Modesto (0xB)
+# OSABI-MODESTO-GNU:  OS/ABI: Novell - Modesto
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_MODESTO
+
+## EI_OSABI is set to ELFOSABI_OPENBSD.
+# RUN: yaml2obj %s --docnum=12 -o %t.osabi.openbsd
+# RUN: llvm-readobj --file-headers %t.osabi.openbsd | FileCheck %s --match-full-lines --check-prefix=OSABI-OPENBSD-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.openbsd | FileCheck %s --match-full-lines --check-prefix=OSABI-OPENBSD-GNU
+
+# OSABI-OPENBSD-LLVM: OS/ABI: OpenBSD (0xC)
+# OSABI-OPENBSD-GNU:  OS/ABI: UNIX - OpenBSD
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_OPENBSD
+
+## EI_OSABI is set to ELFOSABI_OPENVMS.
+# RUN: yaml2obj %s --docnum=13 -o %t.osabi.openvms
+# RUN: llvm-readobj --file-headers %t.osabi.openvms | FileCheck %s --match-full-lines --check-prefix=OSABI-OPENVMS-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.openvms | FileCheck %s --match-full-lines --check-prefix=OSABI-OPENVMS-GNU
+
+# OSABI-OPENVMS-LLVM: OS/ABI: OpenVMS (0xD)
+# OSABI-OPENVMS-GNU:  OS/ABI: VMS - OpenVMS
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_OPENVMS
+
+## EI_OSABI is set to ELFOSABI_NSK.
+# RUN: yaml2obj %s --docnum=14 -o %t.osabi.nsk
+# RUN: llvm-readobj --file-headers %t.osabi.nsk | FileCheck %s --match-full-lines --check-prefix=OSABI-NSK-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.nsk | FileCheck %s --match-full-lines --check-prefix=OSABI-NSK-GNU
+
+# OSABI-NSK-LLVM: OS/ABI: NSK (0xE)
+# OSABI-NSK-GNU:  OS/ABI: HP - Non-Stop Kernel
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_NSK
+
+## EI_OSABI is set to ELFOSABI_AROS.
+# RUN: yaml2obj %s --docnum=15 -o %t.osabi.aros
+# RUN: llvm-readobj --file-headers %t.osabi.aros | FileCheck %s --match-full-lines --check-prefix=OSABI-AROS-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.aros | FileCheck %s --match-full-lines --check-prefix=OSABI-AROS-GNU
+
+# OSABI-AROS-LLVM: OS/ABI: AROS (0xF)
+# OSABI-AROS-GNU:  OS/ABI: AROS
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_AROS
+
+## EI_OSABI is set to ELFOSABI_FENIXOS.
+# RUN: yaml2obj %s --docnum=16 -o %t.osabi.fenixos
+# RUN: llvm-readobj --file-headers %t.osabi.fenixos | FileCheck %s --match-full-lines --check-prefix=OSABI-FENIXOS-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.fenixos | FileCheck %s --match-full-lines --check-prefix=OSABI-FENIXOS-GNU
+
+# OSABI-FENIXOS-LLVM: OS/ABI: FenixOS (0x10)
+# OSABI-FENIXOS-GNU:  OS/ABI: FenixOS
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_FENIXOS
+
+## EI_OSABI is set to ELFOSABI_CLOUDABI.
+# RUN: yaml2obj %s --docnum=17 -o %t.osabi.cloudabi
+# RUN: llvm-readobj --file-headers %t.osabi.cloudabi | FileCheck %s --match-full-lines --check-prefix=OSABI-CLOUDABI-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.cloudabi | FileCheck %s --match-full-lines --check-prefix=OSABI-CLOUDABI-GNU
+
+# OSABI-CLOUDABI-LLVM: OS/ABI: CloudABI (0x11)
+# OSABI-CLOUDABI-GNU:  OS/ABI: CloudABI
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_CLOUDABI
+
+## EI_OSABI is set to ELFOSABI_STANDALONE.
+# RUN: yaml2obj %s --docnum=18 -o %t.osabi.standalone
+# RUN: llvm-readobj --file-headers %t.osabi.standalone | FileCheck %s --match-full-lines --check-prefix=OSABI-STANDALONE-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.standalone | FileCheck %s --match-full-lines --check-prefix=OSABI-STANDALONE-GNU
+
+# OSABI-STANDALONE-LLVM: OS/ABI: Standalone (0xFF)
+# OSABI-STANDALONE-GNU:  OS/ABI: Standalone App
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   ELFOSABI_STANDALONE
+
+## EI_OSABI is set to an arbitrary value which is not supported by llvm-readobj/llvm-readelf.
+# RUN: yaml2obj %s --docnum=19 -o %t.osabi.unknown
+# RUN: llvm-readobj --file-headers %t.osabi.unknown | FileCheck %s --match-full-lines --check-prefix=OSABI-UNKNOWN-LLVM
+# RUN: llvm-readelf --file-headers %t.osabi.unknown | FileCheck %s --match-full-lines --check-prefix=OSABI-UNKNOWN-GNU
+
+# OSABI-UNKNOWN-LLVM: OS/ABI: 0xFE
+# OSABI-UNKNOWN-GNU:  OS/ABI: fe
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_REL
+  Machine: EM_X86_64
+  OSABI:   0xFE


        


More information about the llvm-commits mailing list