## 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 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=CASE2 # CASE2: Name: .dynsym # CASE2-NOT: Info: # CASE2: Info: 1{{$}} # CASE2: Name: .dynstr # CASE2-NOT: Info: # CASE2: Info: 0{{$}} # CASE2: Name: .symtab # CASE2-NOT: Info: # CASE2: Info: 2{{$}} # CASE2: Name: .strtab # CASE2-NOT: Info: # CASE2: Info: 0{{$}} --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_DYN 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=CASE3 # CASE3: Name: .dynstr # CASE3: Info: # CASE3-SAME: 10 # CASE3: Name: .dynsym # CASE3: Info: # CASE3-SAME: 11 # CASE3: Name: .strtab # CASE3: Info: # CASE3-SAME: 12 # CASE3: Name: .symtab # CASE3: Info: # CASE3-SAME: 13 --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_DYN 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