Recommit "rL366894: [yaml2obj] - Allow custom fields for the SHT_UNDEF sections."
[llvm-complete.git] / test / tools / yaml2obj / dynsymtab-shlink.yaml
blob76c079f6d500be3e2eed1103a145cf704fa7c659
1 ## For implicit dynamic symbol table sections, `Link` field can also
2 ## be specified in YAML. Here we test the behavior in different cases.
4 ## Check we are able to set Link = 0 for .dynsym explicitly.
6 # RUN: yaml2obj --docnum=1 %s -o %t1
7 # RUN: llvm-readobj %t1 -S | FileCheck %s --check-prefix=CASE1
9 # CASE1: Name: .dynsym
10 # CASE1: Link:
11 # CASE1-SAME: 0
13 --- !ELF
14 FileHeader:
15   Class:   ELFCLASS64
16   Data:    ELFDATA2LSB
17   Type:    ET_DYN
18   Machine: EM_X86_64
19 Sections:
20   - Name: .dynsym
21     Type: SHT_DYNSYM
22     Link: 0
24 ## Check that by default .dynsym will be linked to .dynstr
25 ## if the latter exists.
27 # RUN: yaml2obj --docnum=2 %s -o %t2
28 # RUN: llvm-readobj %t2 -S | FileCheck %s --check-prefix=CASE2
30 # CASE2:      .dynsym
31 # CASE2:      Link:
32 # CASE2-SAME: 2
33 # CASE2:      Index: 2
34 # CASE2-NEXT: Name: .dynstr
36 --- !ELF
37 FileHeader:
38   Class:   ELFCLASS64
39   Data:    ELFDATA2LSB
40   Type:    ET_DYN
41   Machine: EM_X86_64
42 Sections:
43   - Name: .dynsym
44     Type: SHT_DYNSYM
45   - Name: .dynstr
46     Type: SHT_STRTAB
48 ## Even if .dynstr exists, we can explicitly link .dynsym
49 ## to another section.
51 # RUN: yaml2obj --docnum=3 %s -o %t3
52 # RUN: llvm-readobj %t3 -S | FileCheck %s --check-prefix=CASE3
54 # CASE3:      .dynsym
55 # CASE3:      Link:
56 # CASE3-SAME: 3
57 # CASE3:      Index: 3
58 # CASE3-NEXT: Name: .foo
60 --- !ELF
61 FileHeader:
62   Class:   ELFCLASS64
63   Data:    ELFDATA2LSB
64   Type:    ET_DYN
65   Machine: EM_X86_64
66 Sections:
67   - Name: .dynsym
68     Type: SHT_DYNSYM
69     Link: 3
70   - Name: .dynstr
71     Type: SHT_STRTAB
72   - Name: .foo
73     Type: SHT_PROGBITS
75 ## Check we can use a section name as a Link value for .dynsym.
77 # RUN: yaml2obj --docnum=4 %s -o %t4
78 # RUN: llvm-readobj %t4 -S | FileCheck %s --check-prefix=CASE4
80 # CASE4:      .dynsym
81 # CASE4:      Link:
82 # CASE4-SAME: 2
83 # CASE4:      Index: 2
84 # CASE4-NEXT: Name: .foo
86 --- !ELF
87 FileHeader:
88   Class:   ELFCLASS64
89   Data:    ELFDATA2LSB
90   Type:    ET_DYN
91   Machine: EM_X86_64
92 Sections:
93   - Name: .dynsym
94     Type: SHT_DYNSYM
95     Link: .foo
96   - Name: .foo
97     Type: SHT_PROGBITS