1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-02-01 13:11:39 +01:00
llvm-mirror/test/tools/llvm-readobj/elf-versioninfo.test
Simon Atanasyan 8a7e514b76 [llvm-readobj] Implement GNU-style output for dynamic table
GNU readelf tool prints slightly different dynamic table "header" and
surrounds dynamic tag names by brackets. This patch implements the same
formatting for GNU-style output of the `llvm-readobj`.

LLVM
```
DynamicSection [ (13 entries)
  Tag        Type                 Name/Value
  0x00000006 SYMTAB               0x168
  ...
]
```

GNU
```
Dynamic section at offset 0x1d0 contains 13 entries:
  Tag        Type                 Name/Value
  0x00000006 (SYMTAB)             0x168
  ...
```

Differential Revision: https://reviews.llvm.org/D62256

llvm-svn: 361633
2019-05-24 12:22:53 +00:00

131 lines
4.6 KiB
Plaintext

// Test that llvm-readobj dumps version info tags correctly.
RUN: llvm-readobj --dynamic-table -V %p/Inputs/verdef.elf-x86-64 | FileCheck %s --check-prefix=LLVM-VERDEF
RUN: llvm-readelf --dynamic-table -V %p/Inputs/verdef.elf-x86-64 | FileCheck %s --check-prefix=GNU-VERDEF
LLVM-VERDEF: 0x000000006FFFFFF0 VERSYM 0x24C
LLVM-VERDEF: 0x000000006FFFFFFC VERDEF 0x25C
LLVM-VERDEF: 0x000000006FFFFFFD VERDEFNUM 3
LLVM-VERDEF: Version symbols {
LLVM-VERDEF-NEXT: Section Name: .gnu.version (20)
LLVM-VERDEF-NEXT: Address: 0x24C
LLVM-VERDEF-NEXT: Offset: 0x24C
LLVM-VERDEF-NEXT: Link: 1
LLVM-VERDEF-NEXT: Symbols [
LLVM-VERDEF-NEXT: Symbol {
LLVM-VERDEF-NEXT: Version: 0
LLVM-VERDEF-NEXT: Name: {{$}}
LLVM-VERDEF-NEXT: }
LLVM-VERDEF-NEXT: Symbol {
LLVM-VERDEF-NEXT: Version: 1
LLVM-VERDEF-NEXT: Name: _end{{$}}
LLVM-VERDEF-NEXT: }
LLVM-VERDEF-NEXT: Symbol {
LLVM-VERDEF-NEXT: Version: 1
LLVM-VERDEF-NEXT: Name: _edata{{$}}
LLVM-VERDEF-NEXT: }
LLVM-VERDEF-NEXT: Symbol {
LLVM-VERDEF-NEXT: Version: 3
LLVM-VERDEF-NEXT: Name: goo@@VERSION2
LLVM-VERDEF-NEXT: }
LLVM-VERDEF-NEXT: Symbol {
LLVM-VERDEF-NEXT: Version: 1
LLVM-VERDEF-NEXT: Name: __bss_start{{$}}
LLVM-VERDEF-NEXT: }
LLVM-VERDEF-NEXT: Symbol {
LLVM-VERDEF-NEXT: Version: 2
LLVM-VERDEF-NEXT: Name: foo@@VERSION1
LLVM-VERDEF-NEXT: }
LLVM-VERDEF-NEXT: Symbol {
LLVM-VERDEF-NEXT: Version: 2
LLVM-VERDEF-NEXT: Name: VERSION1@@VERSION1
LLVM-VERDEF-NEXT: }
LLVM-VERDEF-NEXT: Symbol {
LLVM-VERDEF-NEXT: Version: 3
LLVM-VERDEF-NEXT: Name: VERSION2@@VERSION2
LLVM-VERDEF-NEXT: }
LLVM-VERDEF-NEXT: ]
LLVM-VERDEF-NEXT: }
LLVM-VERDEF: SHT_GNU_verdef {
LLVM-VERDEF-NEXT: Definition {
LLVM-VERDEF-NEXT: Version: 1
LLVM-VERDEF-NEXT: Flags: Base (0x1)
LLVM-VERDEF-NEXT: Index: 1
LLVM-VERDEF-NEXT: Hash: 430712
LLVM-VERDEF-NEXT: Name: blah
LLVM-VERDEF-NEXT: }
LLVM-VERDEF-NEXT: Definition {
LLVM-VERDEF-NEXT: Version: 1
LLVM-VERDEF-NEXT: Flags: 0x0
LLVM-VERDEF-NEXT: Index: 2
LLVM-VERDEF-NEXT: Hash: 175630257
LLVM-VERDEF-NEXT: Name: VERSION1
LLVM-VERDEF-NEXT: }
LLVM-VERDEF-NEXT: Definition {
LLVM-VERDEF-NEXT: Version: 1
LLVM-VERDEF-NEXT: Flags: 0x0
LLVM-VERDEF-NEXT: Index: 3
LLVM-VERDEF-NEXT: Hash: 175630258
LLVM-VERDEF-NEXT: Name: VERSION2
LLVM-VERDEF-NEXT: Predecessor: VERSION1
LLVM-VERDEF-NEXT: }
LLVM-VERDEF-NEXT: }
GNU-VERDEF: 0x000000006ffffff0 (VERSYM) 0x24c
GNU-VERDEF: 0x000000006ffffffc (VERDEF) 0x25c
GNU-VERDEF: 0x000000006ffffffd (VERDEFNUM) 3
GNU-VERDEF: Version symbols section '.gnu.version' contains 8 entries:
GNU-VERDEF-NEXT: Addr: 000000000000024c Offset: 0x00024c Link: 1 (.dynsym)
GNU-VERDEF-NEXT: 000: 0 (*local*) 1 (*global*) 1 (*global*) 3 (VERSION2)
GNU-VERDEF-NEXT: 004: 1 (*global*) 2 (VERSION1) 2 (VERSION1) 3 (VERSION2)
GNU-VERDEF: Dumper for .gnu.version_d is not implemented
RUN: llvm-readobj -V %p/Inputs/verneed.elf-x86-64 | FileCheck %s --check-prefix=LLVM-VERNEED
RUN: llvm-readelf -V %p/Inputs/verneed.elf-x86-64 | FileCheck %s --check-prefix=GNU-VERNEED
LLVM-VERNEED: SHT_GNU_verneed {
LLVM-VERNEED-NEXT: Dependency {
LLVM-VERNEED-NEXT: Version: 1
LLVM-VERNEED-NEXT: Count: 2
LLVM-VERNEED-NEXT: FileName: verneed1.so.0
LLVM-VERNEED-NEXT: Entries [
LLVM-VERNEED-NEXT: Entry {
LLVM-VERNEED-NEXT: Hash: 1938
LLVM-VERNEED-NEXT: Flags: 0x0
LLVM-VERNEED-NEXT: Index: 3
LLVM-VERNEED-NEXT: Name: v2
LLVM-VERNEED-NEXT: }
LLVM-VERNEED-NEXT: Entry {
LLVM-VERNEED-NEXT: Hash: 1939
LLVM-VERNEED-NEXT: Flags: 0x0
LLVM-VERNEED-NEXT: Index: 2
LLVM-VERNEED-NEXT: Name: v3
LLVM-VERNEED-NEXT: }
LLVM-VERNEED-NEXT: ]
LLVM-VERNEED-NEXT: }
LLVM-VERNEED-NEXT: Dependency {
LLVM-VERNEED-NEXT: Version: 1
LLVM-VERNEED-NEXT: Count: 1
LLVM-VERNEED-NEXT: FileName: verneed2.so.0
LLVM-VERNEED-NEXT: Entries [
LLVM-VERNEED-NEXT: Entry {
LLVM-VERNEED-NEXT: Hash: 1937
LLVM-VERNEED-NEXT: Flags: 0x0
LLVM-VERNEED-NEXT: Index: 4
LLVM-VERNEED-NEXT: Name: v1
LLVM-VERNEED-NEXT: }
LLVM-VERNEED-NEXT: ]
LLVM-VERNEED-NEXT: }
LLVM-VERNEED-NEXT: }
GNU-VERNEED: Version symbols section '.gnu.version' contains 4 entries:
GNU-VERNEED-NEXT: Addr: 0000000000010228 Offset: 0x000228 Link: 1 (.dynsym)
GNU-VERNEED-NEXT: 000: 0 (*local*) 2 (v3) 3 (v2) 4 (v1)
GNU-VERNEED: Dumper for .gnu.version_r is not implemented