[llvm] r366895 - [Object/llvm-readobj] - Cleanup testing of the dynamic objects.

George Rimar via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 24 05:20:42 PDT 2019


Author: grimar
Date: Wed Jul 24 05:20:42 2019
New Revision: 366895

URL: http://llvm.org/viewvc/llvm-project?rev=366895&view=rev
Log:
[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

Added:
    llvm/trunk/test/tools/llvm-readobj/elf-file-types.test
    llvm/trunk/test/tools/llvm-readobj/elf-loadname.test
Removed:
    llvm/trunk/test/tools/llvm-readobj/Inputs/dtflags.elf-x86-64
    llvm/trunk/test/tools/llvm-readobj/elf-dtflags.test
Modified:
    llvm/trunk/test/Object/readobj-shared-object.test

Modified: llvm/trunk/test/Object/readobj-shared-object.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/readobj-shared-object.test?rev=366895&r1=366894&r2=366895&view=diff
==============================================================================
--- llvm/trunk/test/Object/readobj-shared-object.test (original)
+++ llvm/trunk/test/Object/readobj-shared-object.test Wed Jul 24 05:20:42 2019
@@ -1,333 +1,288 @@
-RUN: llvm-readobj -S --symbols --dyn-syms --dynamic-table --needed-libs \
-RUN:              %p/Inputs/shared-object-test.elf-i386 \
-RUN:         | FileCheck %s -check-prefix ELF
-RUN: llvm-readobj -S --symbols --dyn-syms --dynamic-table --needed-libs \
-RUN:              %p/Inputs/shared-object-test.elf-i386 \
-RUN:         | FileCheck %s -check-prefix ELF32
+# RUN: llvm-readobj --sections --symbols --dyn-syms --needed-libs \
+# RUN:   %p/Inputs/shared-object-test.elf-i386 | FileCheck %s
 
-RUN: llvm-readobj -S --symbols --dyn-syms --dynamic-table --needed-libs \
-RUN:            %p/Inputs/shared-object-test.elf-x86-64 \
-RUN:         | FileCheck %s -check-prefix ELF
-RUN: llvm-readobj -S --symbols --dyn-syms --dynamic-table --needed-libs \
-RUN:            %p/Inputs/shared-object-test.elf-x86-64 \
-RUN:         | FileCheck %s -check-prefix ELF64
+# RUN: llvm-readobj --sections --symbols --dyn-syms --needed-libs \
+# RUN:   %p/Inputs/shared-object-test.elf-x86-64 | FileCheck %s
 
-ELF64: Format:      ELF64-x86-64
-ELF64: Arch:        x86_64
-ELF64: AddressSize: 64bit
-ELF64: LoadName:    libfoo.so
+# CHECK:   Sections [
+# CHECK:   Section {
+# CHECK:     Name:  (0)
+# CHECK:     Type: SHT_NULL
+# CHECK:     Flags [ (0x0)
+# CHECK:     ]
+# CHECK:   }
+# CHECK:   Section {
+# CHECK:     Name: .hash
+# CHECK:     Type: SHT_HASH
+# CHECK:     Flags [ (0x2)
+# CHECK:       SHF_ALLOC
+# CHECK:     ]
+# CHECK:   }
+# CHECK:   Section {
+# CHECK:     Name: .dynsym
+# CHECK:     Type: SHT_DYNSYM
+# CHECK:     Flags [ (0x2)
+# CHECK:       SHF_ALLOC
+# CHECK:     ]
+# CHECK:   }
+# CHECK:   Section {
+# CHECK:     Name: .dynstr
+# CHECK:     Type: SHT_STRTAB
+# CHECK:     Flags [ (0x2)
+# CHECK:       SHF_ALLOC
+# CHECK:     ]
+# CHECK:   }
+# CHECK:   Section {
+# CHECK:     Name: .text
+# CHECK:     Type: SHT_PROGBITS
+# CHECK:     Flags [ (0x6)
+# CHECK:       SHF_ALLOC
+# CHECK:       SHF_EXECINSTR
+# CHECK:     ]
+# CHECK:   }
+# CHECK:   Section {
+# CHECK:     Name: .eh_frame
+# CHECK:     Type: SHT_PROGBITS
+# CHECK:     Flags [ (0x2)
+# CHECK:       SHF_ALLOC
+# CHECK:     ]
+# CHECK:   }
+# CHECK:   Section {
+# CHECK:     Name: .tdata
+# CHECK:     Type: SHT_PROGBITS
+# CHECK:     Flags [ (0x403)
+# CHECK:       SHF_ALLOC
+# CHECK:       SHF_TLS
+# CHECK:       SHF_WRITE
+# CHECK:     ]
+# CHECK:   }
+# CHECK:   Section {
+# CHECK:     Name: .dynamic
+# CHECK:     Type: SHT_DYNAMIC
+# CHECK:     Flags [ (0x3)
+# CHECK:       SHF_ALLOC
+# CHECK:       SHF_WRITE
+# CHECK:     ]
+# CHECK:   }
+# CHECK:   Section {
+# CHECK:     Name: .got.plt
+# CHECK:     Type: SHT_PROGBITS
+# CHECK:     Flags [ (0x3)
+# CHECK:       SHF_ALLOC
+# CHECK:       SHF_WRITE
+# CHECK:     ]
+# CHECK:   }
+# CHECK:   Section {
+# CHECK:     Name: .data
+# CHECK:     Type: SHT_PROGBITS
+# CHECK:     Flags [ (0x3)
+# CHECK:       SHF_ALLOC
+# CHECK:       SHF_WRITE
+# CHECK:     ]
+# CHECK:   }
+# CHECK:   Section {
+# CHECK:     Name: .bss
+# CHECK:     Type: SHT_NOBITS
+# CHECK:     Flags [ (0x3)
+# CHECK:       SHF_ALLOC
+# CHECK:       SHF_WRITE
+# CHECK:     ]
+# CHECK:   }
+# CHECK:   Section {
+# CHECK:     Name: .shstrtab
+# CHECK:     Type: SHT_STRTAB
+# CHECK:     Flags [ (0x0)
+# CHECK:     ]
+# CHECK:   }
+# CHECK:   Section {
+# CHECK:     Name: .symtab
+# CHECK:     Type: SHT_SYMTAB
+# CHECK:     Flags [ (0x0)
+# CHECK:     ]
+# CHECK:   }
+# CHECK:   Section {
+# CHECK:     Name: .strtab
+# CHECK:     Type: SHT_STRTAB
+# CHECK:     Flags [ (0x0)
+# CHECK:     ]
+# CHECK:   }
+# CHECK: ]
 
-ELF32: Format:      ELF32-i386
-ELF32: Arch:        i386
-ELF32: AddressSize: 32bit
-ELF32: LoadName:    libfoo.so
+# CHECK:   Symbols [
+# CHECK:   Symbol {
+# CHECK:     Name: .hash (0)
+# CHECK:     Binding: Local
+# CHECK:     Type: Section
+# CHECK:     Section: .hash
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: .dynsym (0)
+# CHECK:     Binding: Local
+# CHECK:     Type: Section
+# CHECK:     Section: .dynsym
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: .dynstr (0)
+# CHECK:     Binding: Local
+# CHECK:     Type: Section
+# CHECK:     Section: .dynstr
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: .text (0)
+# CHECK:     Binding: Local
+# CHECK:     Type: Section
+# CHECK:     Section: .text
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: .eh_frame (0)
+# CHECK:     Binding: Local
+# CHECK:     Type: Section
+# CHECK:     Section: .eh_frame
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: .tdata (0)
+# CHECK:     Binding: Local
+# CHECK:     Type: Section
+# CHECK:     Section: .tdata
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: .dynamic (0)
+# CHECK:     Binding: Local
+# CHECK:     Type: Section
+# CHECK:     Section: .dynamic
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: .got.plt (0)
+# CHECK:     Binding: Local
+# CHECK:     Type: Section
+# CHECK:     Section: .got.plt
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: .data (0)
+# CHECK:     Binding: Local
+# CHECK:     Type: Section
+# CHECK:     Section: .data
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: .bss (0)
+# CHECK:     Binding: Local
+# CHECK:     Type: Section
+# CHECK:     Section: .bss
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: shared.ll
+# CHECK:     Binding: Local
+# CHECK:     Type: File
+# CHECK:     Section: Absolute (0xFFF1)
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: local_func
+# CHECK:     Binding: Local
+# CHECK:     Type: Function
+# CHECK:     Section: .text
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: _GLOBAL_OFFSET_TABLE_
+# CHECK:     Binding: Local
+# CHECK:     Type: Object
+# CHECK:     Section: Absolute (0xFFF1)
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: _DYNAMIC
+# CHECK:     Binding: Local
+# CHECK:     Type: Object
+# CHECK:     Section: Absolute (0xFFF1)
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: common_sym
+# CHECK:     Binding: Global
+# CHECK:     Type: Object
+# CHECK:     Section: .bss
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: tls_sym
+# CHECK:     Binding: Global
+# CHECK:     Type: TLS
+# CHECK:     Section: .tdata
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: defined_sym
+# CHECK:     Binding: Global
+# CHECK:     Type: Object
+# CHECK:     Section: .data
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: __bss_start
+# CHECK:     Binding: Global
+# CHECK:     Type: None
+# CHECK:     Section: Absolute (0xFFF1)
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: _end
+# CHECK:     Binding: Global
+# CHECK:     Type: None
+# CHECK:     Section: Absolute (0xFFF1)
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: global_func
+# CHECK:     Binding: Global
+# CHECK:     Type: Function
+# CHECK:     Section: .text
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: _edata
+# CHECK:     Binding: Global
+# CHECK:     Type: None
+# CHECK:     Section: Absolute (0xFFF1)
+# CHECK:   }
+# CHECK: ]
 
-ELF: Sections [
-ELF:   Section {
-ELF:     Name:  (0)
-ELF:     Type: SHT_NULL
-ELF:     Flags [ (0x0)
-ELF:     ]
-ELF:   }
-ELF:   Section {
-ELF:     Name: .hash
-ELF:     Type: SHT_HASH
-ELF:     Flags [ (0x2)
-ELF:       SHF_ALLOC
-ELF:     ]
-ELF:   }
-ELF:   Section {
-ELF:     Name: .dynsym
-ELF:     Type: SHT_DYNSYM
-ELF:     Flags [ (0x2)
-ELF:       SHF_ALLOC
-ELF:     ]
-ELF:   }
-ELF:   Section {
-ELF:     Name: .dynstr
-ELF:     Type: SHT_STRTAB
-ELF:     Flags [ (0x2)
-ELF:       SHF_ALLOC
-ELF:     ]
-ELF:   }
-ELF:   Section {
-ELF:     Name: .text
-ELF:     Type: SHT_PROGBITS
-ELF:     Flags [ (0x6)
-ELF:       SHF_ALLOC
-ELF:       SHF_EXECINSTR
-ELF:     ]
-ELF:   }
-ELF:   Section {
-ELF:     Name: .eh_frame
-ELF:     Type: SHT_PROGBITS
-ELF:     Flags [ (0x2)
-ELF:       SHF_ALLOC
-ELF:     ]
-ELF:   }
-ELF:   Section {
-ELF:     Name: .tdata
-ELF:     Type: SHT_PROGBITS
-ELF:     Flags [ (0x403)
-ELF:       SHF_ALLOC
-ELF:       SHF_TLS
-ELF:       SHF_WRITE
-ELF:     ]
-ELF:   }
-ELF:   Section {
-ELF:     Name: .dynamic
-ELF:     Type: SHT_DYNAMIC
-ELF:     Flags [ (0x3)
-ELF:       SHF_ALLOC
-ELF:       SHF_WRITE
-ELF:     ]
-ELF:   }
-ELF:   Section {
-ELF:     Name: .got.plt
-ELF:     Type: SHT_PROGBITS
-ELF:     Flags [ (0x3)
-ELF:       SHF_ALLOC
-ELF:       SHF_WRITE
-ELF:     ]
-ELF:   }
-ELF:   Section {
-ELF:     Name: .data
-ELF:     Type: SHT_PROGBITS
-ELF:     Flags [ (0x3)
-ELF:       SHF_ALLOC
-ELF:       SHF_WRITE
-ELF:     ]
-ELF:   }
-ELF:   Section {
-ELF:     Name: .bss
-ELF:     Type: SHT_NOBITS
-ELF:     Flags [ (0x3)
-ELF:       SHF_ALLOC
-ELF:       SHF_WRITE
-ELF:     ]
-ELF:   }
-ELF:   Section {
-ELF:     Name: .shstrtab
-ELF:     Type: SHT_STRTAB
-ELF:     Flags [ (0x0)
-ELF:     ]
-ELF:   }
-ELF:   Section {
-ELF:     Name: .symtab
-ELF:     Type: SHT_SYMTAB
-ELF:     Flags [ (0x0)
-ELF:     ]
-ELF:   }
-ELF:   Section {
-ELF:     Name: .strtab
-ELF:     Type: SHT_STRTAB
-ELF:     Flags [ (0x0)
-ELF:     ]
-ELF:   }
-ELF: ]
+# CHECK: DynamicSymbols [
+# CHECK:   Symbol {
+# CHECK:     Name: common_sym
+# CHECK:     Binding: Global
+# CHECK:     Type: Object
+# CHECK:     Section: .bss
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: tls_sym
+# CHECK:     Binding: Global
+# CHECK:     Type: TLS
+# CHECK:     Section: .tdata
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: defined_sym
+# CHECK:     Binding: Global
+# CHECK:     Type: Object
+# CHECK:     Section: .data
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: __bss_start
+# CHECK:     Binding: Global
+# CHECK:     Type: None
+# CHECK:     Section: Absolute (0xFFF1)
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: _end
+# CHECK:     Binding: Global
+# CHECK:     Type: None
+# CHECK:     Section: Absolute (0xFFF1)
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: global_func
+# CHECK:     Binding: Global
+# CHECK:     Type: Function
+# CHECK:     Section: .text
+# CHECK:   }
+# CHECK:   Symbol {
+# CHECK:     Name: _edata
+# CHECK:     Binding: Global
+# CHECK:     Type: None
+# CHECK:     Section: Absolute (0xFFF1)
+# CHECK:   }
+# CHECK: ]
 
-ELF: Symbols [
-ELF:   Symbol {
-ELF:     Name: .hash (0)
-ELF:     Binding: Local
-ELF:     Type: Section
-ELF:     Section: .hash
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: .dynsym (0)
-ELF:     Binding: Local
-ELF:     Type: Section
-ELF:     Section: .dynsym
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: .dynstr (0)
-ELF:     Binding: Local
-ELF:     Type: Section
-ELF:     Section: .dynstr
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: .text (0)
-ELF:     Binding: Local
-ELF:     Type: Section
-ELF:     Section: .text
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: .eh_frame (0)
-ELF:     Binding: Local
-ELF:     Type: Section
-ELF:     Section: .eh_frame
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: .tdata (0)
-ELF:     Binding: Local
-ELF:     Type: Section
-ELF:     Section: .tdata
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: .dynamic (0)
-ELF:     Binding: Local
-ELF:     Type: Section
-ELF:     Section: .dynamic
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: .got.plt (0)
-ELF:     Binding: Local
-ELF:     Type: Section
-ELF:     Section: .got.plt
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: .data (0)
-ELF:     Binding: Local
-ELF:     Type: Section
-ELF:     Section: .data
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: .bss (0)
-ELF:     Binding: Local
-ELF:     Type: Section
-ELF:     Section: .bss
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: shared.ll
-ELF:     Binding: Local
-ELF:     Type: File
-ELF:     Section: Absolute (0xFFF1)
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: local_func
-ELF:     Binding: Local
-ELF:     Type: Function
-ELF:     Section: .text
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: _GLOBAL_OFFSET_TABLE_
-ELF:     Binding: Local
-ELF:     Type: Object
-ELF:     Section: Absolute (0xFFF1)
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: _DYNAMIC
-ELF:     Binding: Local
-ELF:     Type: Object
-ELF:     Section: Absolute (0xFFF1)
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: common_sym
-ELF:     Binding: Global
-ELF:     Type: Object
-ELF:     Section: .bss
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: tls_sym
-ELF:     Binding: Global
-ELF:     Type: TLS
-ELF:     Section: .tdata
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: defined_sym
-ELF:     Binding: Global
-ELF:     Type: Object
-ELF:     Section: .data
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: __bss_start
-ELF:     Binding: Global
-ELF:     Type: None
-ELF:     Section: Absolute (0xFFF1)
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: _end
-ELF:     Binding: Global
-ELF:     Type: None
-ELF:     Section: Absolute (0xFFF1)
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: global_func
-ELF:     Binding: Global
-ELF:     Type: Function
-ELF:     Section: .text
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: _edata
-ELF:     Binding: Global
-ELF:     Type: None
-ELF:     Section: Absolute (0xFFF1)
-ELF:   }
-ELF: ]
-
-ELF: DynamicSymbols [
-ELF:   Symbol {
-ELF:     Name: common_sym
-ELF:     Binding: Global
-ELF:     Type: Object
-ELF:     Section: .bss
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: tls_sym
-ELF:     Binding: Global
-ELF:     Type: TLS
-ELF:     Section: .tdata
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: defined_sym
-ELF:     Binding: Global
-ELF:     Type: Object
-ELF:     Section: .data
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: __bss_start
-ELF:     Binding: Global
-ELF:     Type: None
-ELF:     Section: Absolute (0xFFF1)
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: _end
-ELF:     Binding: Global
-ELF:     Type: None
-ELF:     Section: Absolute (0xFFF1)
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: global_func
-ELF:     Binding: Global
-ELF:     Type: Function
-ELF:     Section: .text
-ELF:   }
-ELF:   Symbol {
-ELF:     Name: _edata
-ELF:     Binding: Global
-ELF:     Type: None
-ELF:     Section: Absolute (0xFFF1)
-ELF:   }
-ELF: ]
-
-ELF32: DynamicSection [ (9 entries)
-ELF32:   Tag        Type                 Name/Value
-ELF32:   0x00000001 NEEDED               Shared library: [libc.so.6]
-ELF32:   0x00000001 NEEDED               Shared library: [libm.so.6]
-ELF32:   0x0000000E SONAME               Library soname: [libfoo.so]
-ELF32:   0x00000004 HASH                 {{[0-9a-f]+}}
-ELF32:   0x00000005 STRTAB               {{[0-9a-f]+}}
-ELF32:   0x00000006 SYMTAB               {{[0-9a-f]+}}
-ELF32:   0x0000000A STRSZ                {{[0-9]+}} (bytes)
-ELF32:   0x0000000B SYMENT               {{[0-9]+}} (bytes)
-ELF32:   0x00000000 NULL                 0x0
-ELF32: ]
-
-ELF64: DynamicSection [ (9 entries)
-ELF64:   Tag        Type                 Name/Value
-ELF64:   0x0000000000000001 NEEDED               Shared library: [libc.so.6]
-ELF64:   0x0000000000000001 NEEDED               Shared library: [libm.so.6]
-ELF64:   0x000000000000000E SONAME               Library soname: [libfoo.so]
-ELF64:   0x0000000000000004 HASH                 {{[0-9a-f]+}}
-ELF64:   0x0000000000000005 STRTAB               {{[0-9a-f]+}}
-ELF64:   0x0000000000000006 SYMTAB               {{[0-9a-f]+}}
-ELF64:   0x000000000000000A STRSZ                {{[0-9]+}} (bytes)
-ELF64:   0x000000000000000B SYMENT               {{[0-9]+}} (bytes)
-ELF64:   0x0000000000000000 NULL                 0x0
-ELF64: ]
-
-
-ELF:      NeededLibraries [
-ELF-NEXT:  libc.so.6
-ELF-NEXT:  libm.so.6
-ELF-NEXT: ]
+# CHECK:      NeededLibraries [
+# CHECK-NEXT:  libc.so.6
+# CHECK-NEXT:  libm.so.6
+# CHECK-NEXT: ]

Removed: llvm/trunk/test/tools/llvm-readobj/Inputs/dtflags.elf-x86-64
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/Inputs/dtflags.elf-x86-64?rev=366894&view=auto
==============================================================================
Binary file - no diff available.

Removed: llvm/trunk/test/tools/llvm-readobj/elf-dtflags.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/elf-dtflags.test?rev=366894&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-readobj/elf-dtflags.test (original)
+++ llvm/trunk/test/tools/llvm-readobj/elf-dtflags.test (removed)
@@ -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

Added: llvm/trunk/test/tools/llvm-readobj/elf-file-types.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/elf-file-types.test?rev=366895&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-readobj/elf-file-types.test (added)
+++ llvm/trunk/test/tools/llvm-readobj/elf-file-types.test Wed Jul 24 05:20:42 2019
@@ -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

Added: llvm/trunk/test/tools/llvm-readobj/elf-loadname.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/elf-loadname.test?rev=366895&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-readobj/elf-loadname.test (added)
+++ llvm/trunk/test/tools/llvm-readobj/elf-loadname.test Wed Jul 24 05:20:42 2019
@@ -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




More information about the llvm-commits mailing list