summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/yaml2obj/ELF/implicit-sections-info.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/tools/yaml2obj/ELF/implicit-sections-info.yaml')
-rw-r--r--llvm/test/tools/yaml2obj/ELF/implicit-sections-info.yaml113
1 files changed, 113 insertions, 0 deletions
diff --git a/llvm/test/tools/yaml2obj/ELF/implicit-sections-info.yaml b/llvm/test/tools/yaml2obj/ELF/implicit-sections-info.yaml
new file mode 100644
index 00000000000..d7d530d3960
--- /dev/null
+++ b/llvm/test/tools/yaml2obj/ELF/implicit-sections-info.yaml
@@ -0,0 +1,113 @@
+## Check the values of sh_info fields set by default for
+## explicitly listed .dynstr, .dynsym, .strtab and .symtab
+## sections.
+##
+## For symbol table sections, sh_info has a value which is
+## one greater than the symbol table index of the last
+## local symbol.
+##
+## sh_info isn't set for string table sections.
+
+# RUN: yaml2obj --docnum=1 %s -o %t
+# RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix=CASE1
+
+# CASE1: Name: .symtab
+# CASE1: Info:
+# CASE1-SAME: 2
+# CASE1: Name: .strtab
+# CASE1: Info:
+# CASE1-SAME: 0
+# CASE1: Name: .dynsym
+# CASE1: Info:
+# CASE1-SAME: 1
+# CASE1: Name: .dynstr
+# CASE1: Info:
+# CASE1-SAME: 0
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_DYN
+ Machine: EM_X86_64
+Sections:
+ - Name: .symtab
+ Type: SHT_SYMTAB
+ - Name: .strtab
+ Type: SHT_STRTAB
+ - Name: .dynsym
+ Type: SHT_DYNSYM
+ - Name: .dynstr
+ Type: SHT_STRTAB
+Symbols:
+ - Name: local
+ - Name: global1
+ Binding: STB_GLOBAL
+DynamicSymbols:
+ - Name: global2
+ Binding: STB_GLOBAL
+
+## In the case when these sections are not defined in YAML, the
+## behavior is the same as when we define them, but do not set the Info.
+
+# RUN: yaml2obj --docnum=2 %s -o %t
+# RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix=CASE1
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_DYN
+ Machine: EM_X86_64
+Symbols:
+ - Name: local
+ - Name: global1
+ Binding: STB_GLOBAL
+DynamicSymbols:
+ - Name: global2
+ Binding: STB_GLOBAL
+
+## Check we are able to set any sh_info explicitly.
+
+# RUN: yaml2obj --docnum=3 %s -o %t
+# RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix=CASE2
+
+# CASE2: Name: .dynstr
+# CASE2: Info:
+# CASE2-SAME: 10
+# CASE2: Name: .dynsym
+# CASE2: Info:
+# CASE2-SAME: 11
+# CASE2: Name: .strtab
+# CASE2: Info:
+# CASE2-SAME: 12
+# CASE2: Name: .symtab
+# CASE2: Info:
+# CASE2-SAME: 13
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_DYN
+ Machine: EM_X86_64
+Sections:
+ - Name: .dynstr
+ Type: SHT_STRTAB
+ Info: 10
+ - Name: .dynsym
+ Type: SHT_DYNSYM
+ Info: 11
+ - Name: .strtab
+ Type: SHT_STRTAB
+ Info: 12
+ - Name: .symtab
+ Type: SHT_SYMTAB
+ Info: 13
+Symbols:
+ - Name: local
+ - Name: global1
+ Binding: STB_GLOBAL
+DynamicSymbols:
+ - Name: global2
+ Binding: STB_GLOBAL
OpenPOWER on IntegriCloud