Files
llvm/test/tools/yaml2obj/symtab-implicit-sections-flags.yaml
T
George Rimar 38d4353156 [yaml2obj][obj2yaml] - Do not create a symbol table by default.
This patch tries to resolve problems faced in D68943
and uses some of the code written by Konrad Wilhelm Kleine
in that patch.

Previously, yaml2obj tool always created a .symtab section.
This patch changes that. With it we only create it when
have a "Symbols:" tag in the YAML document or when
we need to create it because it is used by another section(s).

obj2yaml follows the new behavior and does not print "Symbols:"
anymore when there is no symbol table.

Differential revision: https://reviews.llvm.org/D69041

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375361 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-20 14:47:17 +00:00

81 lines
1.8 KiB
YAML

## For implicit symbol table sections, the `Flags` field can also
## be specified in YAML. Here we test the behavior in different cases.
## When flags are not explicitly specified, yaml2obj assigns no flags
## for .symtab and the SHF_ALLOC flag for .dynsym by default.
# RUN: yaml2obj --docnum=1 %s -o %t1
# RUN: llvm-readobj %t1 -S | FileCheck %s --check-prefix=CASE1
# CASE1: Name: .symtab
# CASE1-NEXT: Type: SHT_SYMTAB
# CASE1-NEXT: Flags [
# CASE1-NEXT: ]
# CASE1: Name: .dynsym
# CASE1-NEXT: Type: SHT_DYNSYM
# CASE1-NEXT: Flags [
# CASE1-NEXT: SHF_ALLOC
# CASE1-NEXT: ]
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_DYN
Machine: EM_X86_64
Sections:
- Name: .symtab
Type: SHT_SYMTAB
- Name: .dynsym
Type: SHT_DYNSYM
## Check we can set arbitrary flags for .symtab/.dynsym.
# RUN: yaml2obj --docnum=2 %s -o %t2
# RUN: llvm-readobj %t2 -S | FileCheck %s --check-prefix=CASE2
# CASE2: Name: .symtab
# CASE2-NEXT: Type: SHT_SYMTAB
# CASE2-NEXT: Flags [
# CASE2-NEXT: SHF_ALLOC
# CASE2-NEXT: SHF_STRINGS
# CASE2-NEXT: ]
# CASE2: Name: .dynsym
# CASE2-NEXT: Type: SHT_DYNSYM
# CASE2-NEXT: Flags [
# CASE2-NEXT: SHF_STRINGS
# CASE2-NEXT: ]
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_DYN
Machine: EM_X86_64
Sections:
- Name: .symtab
Type: SHT_SYMTAB
Flags: [ SHF_ALLOC, SHF_STRINGS ]
- Name: .dynsym
Type: SHT_DYNSYM
Flags: [ SHF_STRINGS ]
## Check no flags are set by default for .symtab when it is not
## described in the YAML.
# RUN: yaml2obj --docnum=3 %s -o %t3
# RUN: llvm-readobj %t3 -S | FileCheck %s --check-prefix=CASE3
# CASE3: Name: .symtab
# CASE3-NEXT: Type: SHT_SYMTAB
# CASE3-NEXT: Flags [
# CASE3-NEXT: ]
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_DYN
Machine: EM_X86_64
Symbols: []