[llvm] r363394 - Revert r363377: [yaml2obj] - Allow setting custom section types for implicit sections.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 14 06:57:25 PDT 2019


Author: ruiu
Date: Fri Jun 14 06:57:25 2019
New Revision: 363394

URL: http://llvm.org/viewvc/llvm-project?rev=363394&view=rev
Log:
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.

Added:
    llvm/trunk/test/tools/llvm-readobj/Inputs/wrong-shstrtab-type.elf-x86-64   (with props)
Removed:
    llvm/trunk/test/tools/yaml2obj/implicit-sections-types.test
Modified:
    llvm/trunk/test/tools/llvm-readobj/elf-wrong-shstrtab-type.test
    llvm/trunk/test/tools/yaml2obj/elf-symtab-shinfo.yaml
    llvm/trunk/test/tools/yaml2obj/elf-symtab-shtype.yaml
    llvm/trunk/test/tools/yaml2obj/explicit-dynsym-no-dynstr.yaml
    llvm/trunk/tools/yaml2obj/yaml2elf.cpp

Added: llvm/trunk/test/tools/llvm-readobj/Inputs/wrong-shstrtab-type.elf-x86-64
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/Inputs/wrong-shstrtab-type.elf-x86-64?rev=363394&view=auto
==============================================================================
Binary file - no diff available.

Propchange: llvm/trunk/test/tools/llvm-readobj/Inputs/wrong-shstrtab-type.elf-x86-64
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: llvm/trunk/test/tools/llvm-readobj/elf-wrong-shstrtab-type.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/elf-wrong-shstrtab-type.test?rev=363394&r1=363393&r2=363394&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-readobj/elf-wrong-shstrtab-type.test (original)
+++ llvm/trunk/test/tools/llvm-readobj/elf-wrong-shstrtab-type.test Fri Jun 14 06:57:25 2019
@@ -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

Modified: llvm/trunk/test/tools/yaml2obj/elf-symtab-shinfo.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/yaml2obj/elf-symtab-shinfo.yaml?rev=363394&r1=363393&r2=363394&view=diff
==============================================================================
--- llvm/trunk/test/tools/yaml2obj/elf-symtab-shinfo.yaml (original)
+++ llvm/trunk/test/tools/yaml2obj/elf-symtab-shinfo.yaml Fri Jun 14 06:57:25 2019
@@ -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

Modified: llvm/trunk/test/tools/yaml2obj/elf-symtab-shtype.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/yaml2obj/elf-symtab-shtype.yaml?rev=363394&r1=363393&r2=363394&view=diff
==============================================================================
--- llvm/trunk/test/tools/yaml2obj/elf-symtab-shtype.yaml (original)
+++ llvm/trunk/test/tools/yaml2obj/elf-symtab-shtype.yaml Fri Jun 14 06:57:25 2019
@@ -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

Modified: llvm/trunk/test/tools/yaml2obj/explicit-dynsym-no-dynstr.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/yaml2obj/explicit-dynsym-no-dynstr.yaml?rev=363394&r1=363393&r2=363394&view=diff
==============================================================================
--- llvm/trunk/test/tools/yaml2obj/explicit-dynsym-no-dynstr.yaml (original)
+++ llvm/trunk/test/tools/yaml2obj/explicit-dynsym-no-dynstr.yaml Fri Jun 14 06:57:25 2019
@@ -19,4 +19,4 @@ FileHeader:
   Machine: EM_X86_64
 Sections:
   - Name: .dynsym
-    Type: SHT_DYNSYM
+    Type: SHT_SYMTAB

Removed: llvm/trunk/test/tools/yaml2obj/implicit-sections-types.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/yaml2obj/implicit-sections-types.test?rev=363393&view=auto
==============================================================================
--- llvm/trunk/test/tools/yaml2obj/implicit-sections-types.test (original)
+++ llvm/trunk/test/tools/yaml2obj/implicit-sections-types.test (removed)
@@ -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

Modified: llvm/trunk/tools/yaml2obj/yaml2elf.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/yaml2obj/yaml2elf.cpp?rev=363394&r1=363393&r2=363394&view=diff
==============================================================================
--- llvm/trunk/tools/yaml2obj/yaml2elf.cpp (original)
+++ llvm/trunk/tools/yaml2obj/yaml2elf.cpp Fri Jun 14 06:57:25 2019
@@ -403,11 +403,7 @@ void ELFState<ELFT>::initSymtabSectionHe
 
   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<ELFT>::initStrtabSectionHe
                                              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 =




More information about the llvm-commits mailing list