| ## For implicit dynamic symbol table sections, `Link` field can also |
| ## be specified in YAML. Here we test the behavior in different cases. |
| |
| ## Check we are able to set Link = 0 for .dynsym explicitly. |
| |
| # RUN: yaml2obj --docnum=1 %s -o %t1 |
| # RUN: llvm-readobj %t1 -S | FileCheck %s --check-prefix=CASE1 |
| |
| # CASE1: Name: .dynsym |
| # CASE1: Link: |
| # CASE1-SAME: 0 |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .dynsym |
| Type: SHT_DYNSYM |
| Link: 0 |
| |
| ## Check that by default .dynsym will be linked to .dynstr |
| ## if the latter exists. |
| |
| # RUN: yaml2obj --docnum=2 %s -o %t2 |
| # RUN: llvm-readobj %t2 -S | FileCheck %s --check-prefix=CASE2 |
| |
| # CASE2: .dynsym |
| # CASE2: Link: |
| # CASE2-SAME: 2 |
| # CASE2: Index: 2 |
| # CASE2-NEXT: Name: .dynstr |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .dynsym |
| Type: SHT_DYNSYM |
| - Name: .dynstr |
| Type: SHT_STRTAB |
| |
| ## Even if .dynstr exists, we can explicitly link .dynsym |
| ## to another section. |
| |
| # RUN: yaml2obj --docnum=3 %s -o %t3 |
| # RUN: llvm-readobj %t3 -S | FileCheck %s --check-prefix=CASE3 |
| |
| # CASE3: .dynsym |
| # CASE3: Link: |
| # CASE3-SAME: 3 |
| # CASE3: Index: 3 |
| # CASE3-NEXT: Name: .foo |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .dynsym |
| Type: SHT_DYNSYM |
| Link: 3 |
| - Name: .dynstr |
| Type: SHT_STRTAB |
| - Name: .foo |
| Type: SHT_PROGBITS |
| |
| ## Check we can use a section name as a Link value for .dynsym. |
| |
| # RUN: yaml2obj --docnum=4 %s -o %t4 |
| # RUN: llvm-readobj %t4 -S | FileCheck %s --check-prefix=CASE4 |
| |
| # CASE4: .dynsym |
| # CASE4: Link: |
| # CASE4-SAME: 2 |
| # CASE4: Index: 2 |
| # CASE4-NEXT: Name: .foo |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .dynsym |
| Type: SHT_DYNSYM |
| Link: .foo |
| - Name: .foo |
| Type: SHT_PROGBITS |