1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 11:42:57 +01:00
llvm-mirror/test/tools/llvm-readobj/elf-dynamic-table-dtnull.s
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

88 lines
2.9 KiB
ArmAsm

# Check we are able to dump the dynamic section without a DT_NULL entry correctly.
# RUN: yaml2obj -docnum=1 %s -o %t.o
# RUN: llvm-readobj --dynamic-table %t.o | FileCheck %s --check-prefix=NONULL-LLVM
# RUN: llvm-readelf --dynamic-table %t.o | FileCheck %s --check-prefix=NONULL-GNU
# NONULL-LLVM: DynamicSection [ (1 entries)
# NONULL-LLVM-NEXT: Tag Type Name/Value
# NONULL-LLVM-NEXT: 0x0000000000000015 DEBUG 0x0
# NONULL-LLVM-NEXT: ]
# NONULL-GNU: Dynamic section at offset {{.*}} contains 1 entries:
# NONULL-GNU-NEXT: Tag Type Name/Value
# NONULL-GNU-NEXT: 0x0000000000000015 (DEBUG) 0x0
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
Sections:
- Name: .dynamic
Type: SHT_DYNAMIC
Address: 0x0000000000001010
AddressAlign: 0x0000000000000010
EntSize: 0x0000000000000010
Entries:
- Tag: DT_DEBUG
Value: 0x0000000000000000
ProgramHeaders:
- Type: PT_LOAD
VAddr: 0x1000
Sections:
- Section: .dynamic
- Type: PT_DYNAMIC
VAddr: 0x1010
Sections:
- Section: .dynamic
# Sometimes .dynamic section content length can be greater than the
# length of its entries. In this case, we should not try to dump anything
# past the DT_NULL entry, which works as a terminator.
# RUN: yaml2obj -docnum=2 %s -o %t.o
# RUN: llvm-readobj --dynamic-table %t.o | FileCheck %s --check-prefix=LONG-LLVM
# RUN: llvm-readelf --dynamic-table %t.o | FileCheck %s --check-prefix=LONG-GNU
# LONG-LLVM: DynamicSection [ (2 entries)
# LONG-LLVM-NEXT: Tag Type Name/Value
# LONG-LLVM-NEXT: 0x0000000000000015 DEBUG 0x0
# LONG-LLVM-NEXT: 0x0000000000000000 NULL 0x0
# LONG-LLVM-NEXT: ]
# LONG-GNU: Dynamic section at offset {{.*}} contains 2 entries:
# LONG-GNU-NEXT: Tag Type Name/Value
# LONG-GNU-NEXT: 0x0000000000000015 (DEBUG) 0x0
# LONG-GNU-NEXT: 0x0000000000000000 (NULL) 0x0
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
Sections:
- Name: .dynamic
Type: SHT_DYNAMIC
Address: 0x0000000000001010
AddressAlign: 0x0000000000000010
EntSize: 0x0000000000000010
Entries:
- Tag: DT_DEBUG
Value: 0x0000000000000000
- Tag: DT_NULL
Value: 0x0000000000000000
- Tag: DT_NULL
Value: 0x0000000000000000
ProgramHeaders:
- Type: PT_LOAD
VAddr: 0x1000
Sections:
- Section: .dynamic
- Type: PT_DYNAMIC
VAddr: 0x1010
Sections:
- Section: .dynamic