diff options
| author | George Rimar <grimar@accesssoftek.com> | 2019-07-24 12:20:42 +0000 |
|---|---|---|
| committer | George Rimar <grimar@accesssoftek.com> | 2019-07-24 12:20:42 +0000 |
| commit | cb487e9b442c5f236814518aec07cb259fd94fdb (patch) | |
| tree | 2f84de25939138c4ccd672d155af44923429c30a /llvm/test/tools/llvm-readobj | |
| parent | 242da4e83eff12b1eac2f82bb1bd52a83a43184d (diff) | |
| download | bcm5719-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-x | llvm/test/tools/llvm-readobj/Inputs/dtflags.elf-x86-64 | bin | 11800 -> 0 bytes | |||
| -rw-r--r-- | llvm/test/tools/llvm-readobj/elf-dtflags.test | 10 | ||||
| -rw-r--r-- | llvm/test/tools/llvm-readobj/elf-file-types.test | 154 | ||||
| -rw-r--r-- | llvm/test/tools/llvm-readobj/elf-loadname.test | 50 |
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 Binary files differdeleted file mode 100755 index c6e8501d9e7..00000000000 --- a/llvm/test/tools/llvm-readobj/Inputs/dtflags.elf-x86-64 +++ /dev/null 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 |

