From 642cc2d88407f6c04b8b665a9538bc9ebb272f2c Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Fri, 14 Jun 2019 13:57:25 +0000 Subject: [PATCH] Revert r363377: [yaml2obj] - Allow setting custom section types for implicit sections. This reverts commit r363377 because lld's ELF/invalid/undefined-local-symbol-in-dso.test test started failing after this commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363394 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../Inputs/wrong-shstrtab-type.elf-x86-64 | Bin 0 -> 541 bytes .../llvm-readobj/elf-wrong-shstrtab-type.test | 21 ++---- test/tools/yaml2obj/elf-symtab-shinfo.yaml | 20 ++--- test/tools/yaml2obj/elf-symtab-shtype.yaml | 20 ++--- .../yaml2obj/explicit-dynsym-no-dynstr.yaml | 2 +- .../yaml2obj/implicit-sections-types.test | 69 ------------------ tools/yaml2obj/yaml2elf.cpp | 8 +- 7 files changed, 29 insertions(+), 111 deletions(-) create mode 100644 test/tools/llvm-readobj/Inputs/wrong-shstrtab-type.elf-x86-64 delete mode 100644 test/tools/yaml2obj/implicit-sections-types.test diff --git a/test/tools/llvm-readobj/Inputs/wrong-shstrtab-type.elf-x86-64 b/test/tools/llvm-readobj/Inputs/wrong-shstrtab-type.elf-x86-64 new file mode 100644 index 0000000000000000000000000000000000000000..801a21be823f14bc3744f251cc42cba58368e692 GIT binary patch literal 541 zcmb<-^>JfjWMqH=W(GS31doBi0V)BbL0kt03oyyXzzpJ21eAfgk?n&Sb^t0U0Tp0^ zNkD0sxHOQDP5%w3AT~Kc#OR3B&E-7LF)0Mdldc_$)Zb@PikOiYFb3uHZ0070s6(s-w literal 0 HcmV?d00001 diff --git a/test/tools/llvm-readobj/elf-wrong-shstrtab-type.test b/test/tools/llvm-readobj/elf-wrong-shstrtab-type.test index ce7fec67c0b..2d5fd68cd57 100644 --- a/test/tools/llvm-readobj/elf-wrong-shstrtab-type.test +++ b/test/tools/llvm-readobj/elf-wrong-shstrtab-type.test @@ -1,22 +1,11 @@ -## Check we do not fail to dump the section headers when -## a .shstrtab section does not have a SHT_STRTAB type. +## wrong-shstrtab-type.elf-x86-64 contains .shstrtab section which has SHT_PROGBITS type. +## Check we do not fail to dump the section headers in this case. -# RUN: yaml2obj %s -o %t1 -# RUN: llvm-readobj -S %t1 | FileCheck %s --check-prefix LLVM -# RUN: llvm-readelf -S %t1 | FileCheck %s --check-prefix GNU +# RUN: llvm-readobj -S %p/Inputs/wrong-shstrtab-type.elf-x86-64 | FileCheck %s --check-prefix LLVM +# RUN: llvm-readelf -S %p/Inputs/wrong-shstrtab-type.elf-x86-64 | FileCheck %s --check-prefix GNU # LLVM: Name: .shstrtab # LLVM-NEXT: Type: SHT_PROGBITS # GNU: [Nr] Name Type -# GNU: [ 1] .shstrtab PROGBITS - ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_DYN - Machine: EM_X86_64 -Sections: - - Name: .shstrtab - Type: SHT_PROGBITS +# GNU: [ 3] .shstrtab PROGBITS diff --git a/test/tools/yaml2obj/elf-symtab-shinfo.yaml b/test/tools/yaml2obj/elf-symtab-shinfo.yaml index 98ab4ac30db..50c0b6c9c55 100644 --- a/test/tools/yaml2obj/elf-symtab-shinfo.yaml +++ b/test/tools/yaml2obj/elf-symtab-shinfo.yaml @@ -24,17 +24,17 @@ --- !ELF FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_REL - Machine: EM_X86_64 + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_X86_64 Sections: - - Name: .symtab - Info: 42 - Type: SHT_SYMTAB - - Name: .dynsym - Info: 26 - Type: SHT_DYNSYM + - Name: .symtab + Info: 42 + Type: SHT_SYMTAB + - Name: .dynsym + Info: 26 + Type: SHT_SYMTAB Symbols: - Name: foo Binding: STB_GLOBAL diff --git a/test/tools/yaml2obj/elf-symtab-shtype.yaml b/test/tools/yaml2obj/elf-symtab-shtype.yaml index fff18607dca..558ec8c6da4 100644 --- a/test/tools/yaml2obj/elf-symtab-shtype.yaml +++ b/test/tools/yaml2obj/elf-symtab-shtype.yaml @@ -2,18 +2,20 @@ # RUN: yaml2obj %s -o %t # RUN: llvm-readobj --sections %t | FileCheck %s +## TODO: the output is still SHT_SYMTAB because we do not yet +## support changing it. # CHECK: Name: .symtab -# CHECK-NEXT: Type: SHT_DYNAMIC +# CHECK-NEXT: Type: SHT_SYMTAB --- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_REL - Machine: EM_X86_64 -Sections: - - Name: .symtab - Type: SHT_DYNAMIC +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_X86_64 +Sections: + - Name: .symtab + Type: SHT_DYNAMIC Symbols: - Name: foo Binding: STB_GLOBAL diff --git a/test/tools/yaml2obj/explicit-dynsym-no-dynstr.yaml b/test/tools/yaml2obj/explicit-dynsym-no-dynstr.yaml index 88b2a4da63b..53f6d216ba4 100644 --- a/test/tools/yaml2obj/explicit-dynsym-no-dynstr.yaml +++ b/test/tools/yaml2obj/explicit-dynsym-no-dynstr.yaml @@ -19,4 +19,4 @@ FileHeader: Machine: EM_X86_64 Sections: - Name: .dynsym - Type: SHT_DYNSYM + Type: SHT_SYMTAB diff --git a/test/tools/yaml2obj/implicit-sections-types.test b/test/tools/yaml2obj/implicit-sections-types.test deleted file mode 100644 index 8360fa73d82..00000000000 --- a/test/tools/yaml2obj/implicit-sections-types.test +++ /dev/null @@ -1,69 +0,0 @@ -## Here we check the types set for implicit sections -## in different cases. - -## Check the types set by default in case sections were implicitly -## added and not described in the YAML. - -# RUN: yaml2obj --docnum=1 %s -o %t1 -# RUN: llvm-readobj -S %t1 | FileCheck %s --check-prefix=CASE1 - -# CASE1: Name: .symtab -# CASE1-NEXT: Type: SHT_SYMTAB -# CASE1: Name: .strtab -# CASE1-NEXT: Type: SHT_STRTAB -# CASE1: Name: .shstrtab -# CASE1-NEXT: Type: SHT_STRTAB -# CASE1: Name: .dynsym -# CASE1-NEXT: Type: SHT_DYNSYM -# CASE1: Name: .dynstr -# CASE1-NEXT: Type: SHT_STRTAB - ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_DYN - Machine: EM_X86_64 -## Needed to force the creation of the .dynsym and .dynstr. -DynamicSymbols: - - Name: foo - - Binding: STB_GLOBAL - -## Check we can set any arbitrary types when describing sections -## that are usually implicit. - -# RUN: yaml2obj --docnum=2 %s -o %t2 -# RUN: llvm-readobj -S %t2 | FileCheck %s --check-prefix=CASE2 - -# CASE2: Name: .symtab -# CASE2-NEXT: Type: SHT_DYNAMIC -# CASE2: Name: .strtab -# CASE2-NEXT: Type: SHT_RELA -# CASE2: Name: .shstrtab -# CASE2-NEXT: Type: SHT_PROGBITS -# CASE2: Name: .dynsym -# CASE2-NEXT: Type: SHT_NOTE -# CASE2: Name: .dynstr -# CASE2-NEXT: Type: SHT_NOBITS - ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_DYN - Machine: EM_X86_64 -Sections: - - Name: .symtab - Type: SHT_DYNAMIC - - Name: .strtab - Type: SHT_RELA - - Name: .shstrtab - Type: SHT_PROGBITS - - Name: .dynsym - Type: SHT_NOTE - - Name: .dynstr - Type: SHT_NOBITS -## Needed to set the proper content size for .symtab, so -## that llvm-readobj can dump this section. -Symbols: - - Name: foo diff --git a/tools/yaml2obj/yaml2elf.cpp b/tools/yaml2obj/yaml2elf.cpp index 8e4ea786c85..098c3d6f6bf 100644 --- a/tools/yaml2obj/yaml2elf.cpp +++ b/tools/yaml2obj/yaml2elf.cpp @@ -403,11 +403,7 @@ void ELFState::initSymtabSectionHeader(Elf_Shdr &SHeader, zero(SHeader); SHeader.sh_name = DotShStrtab.getOffset(IsStatic ? ".symtab" : ".dynsym"); - - if (YAMLSec) - SHeader.sh_type = YAMLSec->Type; - else - SHeader.sh_type = IsStatic ? ELF::SHT_SYMTAB : ELF::SHT_DYNSYM; + SHeader.sh_type = IsStatic ? ELF::SHT_SYMTAB : ELF::SHT_DYNSYM; if (RawSec && !RawSec->Link.empty()) { // If the Link field is explicitly defined in the document, @@ -471,7 +467,7 @@ void ELFState::initStrtabSectionHeader(Elf_Shdr &SHeader, StringRef Name, ELFYAML::Section *YAMLSec) { zero(SHeader); SHeader.sh_name = DotShStrtab.getOffset(Name); - SHeader.sh_type = YAMLSec ? YAMLSec->Type : ELF::SHT_STRTAB; + SHeader.sh_type = ELF::SHT_STRTAB; SHeader.sh_addralign = YAMLSec ? (uint64_t)YAMLSec->AddressAlign : 1; ELFYAML::RawContentSection *RawSec = -- 2.50.1