xref: /llvm-project/llvm/test/tools/llvm-objdump/ELF/dynamic-malformed.test (revision 0e8b61f8e0bd37e99f3de06e4e8885844f904eba)
1## An empty dynamic section is invalid. Test we report a warning instead of an
2## error, so that dumping can continue with other objects.
3# RUN: yaml2obj %s --docnum=1 -o %t.empty
4# RUN: llvm-objdump -p %t.empty 2>&1 | FileCheck %s -DFILE=%t.empty --check-prefix=EMPTY
5
6# EMPTY:       Program Header:
7# EMPTY-NEXT:  warning: '[[FILE]]': invalid empty dynamic section
8# EMPTY-EMPTY:
9
10--- !ELF
11FileHeader:
12  Class:   ELFCLASS64
13  Data:    ELFDATA2LSB
14  Type:    ET_EXEC
15Sections:
16  - Name: .dynamic
17    Type: SHT_DYNAMIC
18
19# RUN: yaml2obj %s --docnum=2 -o %t.nonull
20# RUN: llvm-objdump -p %t.nonull 2>&1 | FileCheck %s -DFILE=%t.nonull --check-prefix=NONULL
21
22# NONULL:       Program Header:
23# NONULL-NEXT:  warning: '[[FILE]]': dynamic sections must be DT_NULL terminated
24# NONULL-EMPTY:
25
26--- !ELF
27FileHeader:
28  Class:   ELFCLASS64
29  Data:    ELFDATA2LSB
30  Type:    ET_EXEC
31Sections:
32  - Name: .dynamic
33    Type: SHT_DYNAMIC
34    Entries:
35      - Tag:   DT_SONAME
36        Value: 1
37
38# RUN: yaml2obj %s --docnum=3 -o %t.invalidaddr
39# RUN: llvm-objdump -p %t.invalidaddr 2>&1 | \
40# RUN:   FileCheck %s -DFILE=%t.invalidaddr --implicit-check-not=warning: --check-prefix=ADDR
41
42# ADDR:       Dynamic Section:
43# ADDR-NEXT:  warning: '[[FILE]]': virtual address is not in any segment: 0x474
44# ADDR-NEXT:    NEEDED       0xffffffffbe5a0b5f
45# ADDR-NEXT:    STRTAB       0x0000000000000474
46
47---
48!ELF
49FileHeader:
50  Class: ELFCLASS64
51  Data: ELFDATA2LSB
52  Type: ET_DYN
53Sections:
54  - Name: .dynamic
55    Type: SHT_DYNAMIC
56    Entries:
57      - Tag: DT_NEEDED
58        Value: 0xFFFFFFFFBE5A0B5F
59      - Tag: DT_STRTAB
60        Value: 0x474
61      - Tag: DT_NULL
62        Value: 0x0
63