summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-readobj
diff options
context:
space:
mode:
authorGeorge Rimar <grimar@accesssoftek.com>2019-07-24 12:20:42 +0000
committerGeorge Rimar <grimar@accesssoftek.com>2019-07-24 12:20:42 +0000
commitcb487e9b442c5f236814518aec07cb259fd94fdb (patch)
tree2f84de25939138c4ccd672d155af44923429c30a /llvm/test/tools/llvm-readobj
parent242da4e83eff12b1eac2f82bb1bd52a83a43184d (diff)
downloadbcm5719-llvm-cb487e9b442c5f236814518aec07cb259fd94fdb.tar.gz
bcm5719-llvm-cb487e9b442c5f236814518aec07cb259fd94fdb.zip
[Object/llvm-readobj] - Cleanup testing of the dynamic objects.
This patch touches a few test cases: It removes dtflags.elf-x86-64 binary and elf-dtflags.test. elf-dtflags.test is excessive because we have the elf-dynamic-tags.test which test all non-machine specific tags. It removes testing of --dynamic-table from test\Object\readobj-shared-object.test (we have the elf-dynamic-tags.test for that), and simplifies this test case. It moves testing of the headers from readobj-shared-object.test to elf-file-headers.test. Adds test/tools/llvm-readobj/elf-file-types.test and test/tools/llvm-readobj/elf-loadname.test. It opens road for removing the readobj-shared-object.test completely soon. Differential revision: https://reviews.llvm.org/D65068 llvm-svn: 366895
Diffstat (limited to 'llvm/test/tools/llvm-readobj')
-rwxr-xr-xllvm/test/tools/llvm-readobj/Inputs/dtflags.elf-x86-64bin11800 -> 0 bytes
-rw-r--r--llvm/test/tools/llvm-readobj/elf-dtflags.test10
-rw-r--r--llvm/test/tools/llvm-readobj/elf-file-types.test154
-rw-r--r--llvm/test/tools/llvm-readobj/elf-loadname.test50
4 files changed, 204 insertions, 10 deletions
diff --git a/llvm/test/tools/llvm-readobj/Inputs/dtflags.elf-x86-64 b/llvm/test/tools/llvm-readobj/Inputs/dtflags.elf-x86-64
deleted file mode 100755
index c6e8501d9e7..00000000000
--- a/llvm/test/tools/llvm-readobj/Inputs/dtflags.elf-x86-64
+++ /dev/null
Binary files differ
diff --git a/llvm/test/tools/llvm-readobj/elf-dtflags.test b/llvm/test/tools/llvm-readobj/elf-dtflags.test
deleted file mode 100644
index b15ca77aabf..00000000000
--- a/llvm/test/tools/llvm-readobj/elf-dtflags.test
+++ /dev/null
@@ -1,10 +0,0 @@
-// Test that llvm-readobj dumps DF_XXX and DF_1_XXX flags correctly.
-// The input was generated using the following:
-// $ clang -Wl,-z,origin -Wl,-z,now example.c
-// $ cat example.c
-// int main(void) { return (0); }
-
-RUN: llvm-readobj --dynamic-table %p/Inputs/dtflags.elf-x86-64 | FileCheck %s
-
-CHECK: 0x000000000000001E FLAGS ORIGIN BIND_NOW
-CHECK: 0x000000006FFFFFFB FLAGS_1 NOW ORIGIN
diff --git a/llvm/test/tools/llvm-readobj/elf-file-types.test b/llvm/test/tools/llvm-readobj/elf-file-types.test
new file mode 100644
index 00000000000..0765cff1040
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/elf-file-types.test
@@ -0,0 +1,154 @@
+## Check llvm-readobj and llvm-readelf can dump files of the different ELF types.
+
+# RUN: yaml2obj %s --docnum=1 -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: ET_NONE
+ Machine: EM_X86_64
+
+# RUN: yaml2obj %s --docnum=2 -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)
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+
+# RUN: yaml2obj %s --docnum=3 -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)
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+
+# RUN: yaml2obj %s --docnum=4 -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)
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_DYN
+ Machine: EM_X86_64
+
+# RUN: yaml2obj %s --docnum=5 -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)
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_CORE
+ Machine: EM_X86_64
+
+# RUN: yaml2obj %s --docnum=6 -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: 0xFE00
+
+# GNU-LOOS: ELF Header:
+# GNU-LOOS: Type: fe00
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: 0xfe00
+ Machine: EM_X86_64
+
+# RUN: yaml2obj %s --docnum=7 -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: 0xFEFF
+
+# GNU-HIOS: ELF Header:
+# GNU-HIOS: Type: feff
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: 0xfeff
+ Machine: EM_X86_64
+
+# RUN: yaml2obj %s --docnum=8 -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: 0xFF00
+
+# GNU-LOPROC: ELF Header:
+# GNU-LOPROC: Type: ff00
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: 0xff00
+ Machine: EM_X86_64
+
+# RUN: yaml2obj %s --docnum=9 -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: 0xFFFF
+
+# GNU-HIPROC: ELF Header:
+# GNU-HIPROC: Type: ffff
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: 0xffff
+ Machine: EM_X86_64
diff --git a/llvm/test/tools/llvm-readobj/elf-loadname.test b/llvm/test/tools/llvm-readobj/elf-loadname.test
new file mode 100644
index 00000000000..17006a1b789
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/elf-loadname.test
@@ -0,0 +1,50 @@
+## Check we are able to dump library soname properly.
+
+# RUN: yaml2obj %s -o %t.o
+# RUN: llvm-readobj %t.o | FileCheck %s --check-prefix LLVM
+# RUN: llvm-readelf --dynamic-table %t.o | FileCheck %s --check-prefix GNU
+
+# LLVM: Format: ELF64-x86-64
+# LLVM-NEXT: Arch: x86_64
+# LLVM-NEXT: AddressSize: 64bit
+# LLVM-NEXT: LoadName: test.so
+
+# GNU: Dynamic section at offset 0x200 contains 4 entries:
+# GNU-NEXT: Tag Type Name/Value
+# GNU-NEXT: 0x0000000000000005 (STRTAB) 0x0
+# GNU-NEXT: 0x000000000000000a (STRSZ) 7 (bytes)
+# GNU-NEXT: 0x000000000000000e (SONAME) Library soname: [test.so]
+# GNU-NEXT: 0x0000000000000000 (NULL) 0x0
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+Sections:
+ - Name: .dynstr
+ Type: SHT_STRTAB
+ Flags: [ SHF_ALLOC ]
+ Content: '746573742e736f00' ## "test.so"
+ - Name: .dynamic
+ Type: SHT_DYNAMIC
+ Flags: [ SHF_ALLOC ]
+ Link: .dynstr
+ Entries:
+ - Tag: DT_STRTAB
+ Value: 0x0000000000000000
+ - Tag: DT_STRSZ
+ Value: 0x0000000000000007
+ - Tag: DT_SONAME
+ Value: 0x0000000000000000
+ - Tag: DT_NULL
+ Value: 0x0000000000000000
+ProgramHeaders:
+ - Type: PT_LOAD
+ Flags: [ PF_R ]
+ VAddr: 0x0000
+ PAddr: 0x0000
+ Sections:
+ - Section: .dynstr
+ - Section: .dynamic
OpenPOWER on IntegriCloud