From: Rafael Espindola Date: Fri, 3 Jul 2015 14:54:02 +0000 (+0000) Subject: This reverts commit r241350 and r241352. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=a89ad42b367c037cd894d553e85f442f4132d5ef This reverts commit r241350 and r241352. r241350 broke lld tests. r241352 depends on r241350. Original messages: "[ELFYAML] Fix handling SHT_NOBITS sections by obj2yaml/yaml2obj tools" "[ELFYAML] Make the Size field for .bss section optional" git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241354 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Object/ELFYAML.h b/include/llvm/Object/ELFYAML.h index df0aa500c8a..b45507920a9 100644 --- a/include/llvm/Object/ELFYAML.h +++ b/include/llvm/Object/ELFYAML.h @@ -85,13 +85,7 @@ struct SectionOrType { }; struct Section { - enum class SectionKind { - Group, - RawContent, - Relocation, - NoBits, - MipsABIFlags - }; + enum class SectionKind { Group, RawContent, Relocation, MipsABIFlags }; SectionKind Kind; StringRef Name; ELF_SHT Type; @@ -112,14 +106,6 @@ struct RawContentSection : Section { } }; -struct NoBitsSection : Section { - llvm::yaml::Hex64 Size; - NoBitsSection() : Section(SectionKind::NoBits) {} - static bool classof(const Section *S) { - return S->Kind == SectionKind::NoBits; - } -}; - struct Group : Section { // Members of a group contain a flag and a list of section indices // that are part of the group. diff --git a/lib/Object/ELFYAML.cpp b/lib/Object/ELFYAML.cpp index 72c232c3287..ecdd468305b 100644 --- a/lib/Object/ELFYAML.cpp +++ b/lib/Object/ELFYAML.cpp @@ -627,11 +627,6 @@ static void sectionMapping(IO &IO, ELFYAML::RawContentSection &Section) { IO.mapOptional("Size", Section.Size, Hex64(Section.Content.binary_size())); } -static void sectionMapping(IO &IO, ELFYAML::NoBitsSection &Section) { - commonSectionMapping(IO, Section); - IO.mapOptional("Size", Section.Size, Hex64(0)); -} - static void sectionMapping(IO &IO, ELFYAML::RelocationSection &Section) { commonSectionMapping(IO, Section); IO.mapOptional("Relocations", Section.Relocations); @@ -687,11 +682,6 @@ void MappingTraits>::mapping( Section.reset(new ELFYAML::Group()); groupSectionMapping(IO, *cast(Section.get())); break; - case ELF::SHT_NOBITS: - if (!IO.outputting()) - Section.reset(new ELFYAML::NoBitsSection()); - sectionMapping(IO, *cast(Section.get())); - break; case ELF::SHT_MIPS_ABIFLAGS: if (!IO.outputting()) Section.reset(new ELFYAML::MipsABIFlags()); diff --git a/test/Object/obj2yaml.test b/test/Object/obj2yaml.test index 8054b23eb56..08000f66581 100644 --- a/test/Object/obj2yaml.test +++ b/test/Object/obj2yaml.test @@ -234,7 +234,7 @@ ELF-MIPSEL-NEXT: - Name: .bss ELF-MIPSEL-NEXT: Type: SHT_NOBITS ELF-MIPSEL-NEXT: Flags: [ SHF_WRITE, SHF_ALLOC ] ELF-MIPSEL-NEXT: AddressAlign: 0x0000000000000004 -ELF-MIPSEL-NEXT: Size: 0x0000000000000004 +ELF-MIPSEL-NEXT: Content: 48656C6C ELF-MIPSEL-NEXT: - Name: .mdebug.abi32 ELF-MIPSEL-NEXT: Type: SHT_PROGBITS ELF-MIPSEL-NEXT: AddressAlign: 0x0000000000000001 @@ -324,6 +324,7 @@ ELF-MIPS64EL-NEXT: - Name: .bss ELF-MIPS64EL-NEXT: Type: SHT_NOBITS ELF-MIPS64EL-NEXT: Flags: [ SHF_WRITE, SHF_ALLOC ] ELF-MIPS64EL-NEXT: AddressAlign: 0x0000000000000010 +ELF-MIPS64EL-NEXT: Content: '' ELF-MIPS64EL-NEXT: - Name: .MIPS.options ELF-MIPS64EL-NEXT: Type: SHT_MIPS_OPTIONS ELF-MIPS64EL-NEXT: Flags: [ SHF_ALLOC ] diff --git a/test/Object/yaml2obj-elf-rel-noref.yaml b/test/Object/yaml2obj-elf-rel-noref.yaml index 4a13acd1fd3..69fcf085443 100644 --- a/test/Object/yaml2obj-elf-rel-noref.yaml +++ b/test/Object/yaml2obj-elf-rel-noref.yaml @@ -32,7 +32,7 @@ Sections: Type: SHT_NOBITS Flags: [ SHF_WRITE, SHF_ALLOC ] AddressAlign: 0x0000000000000001 - Size: 0 + Content: '' - Name: .ARM.attributes Type: SHT_ARM_ATTRIBUTES AddressAlign: 0x0000000000000001 diff --git a/tools/obj2yaml/elf2yaml.cpp b/tools/obj2yaml/elf2yaml.cpp index f117a10d382..9afcedef639 100644 --- a/tools/obj2yaml/elf2yaml.cpp +++ b/tools/obj2yaml/elf2yaml.cpp @@ -40,7 +40,6 @@ class ELFDumper { ErrorOr dumpRelaSection(const Elf_Shdr *Shdr); ErrorOr dumpContentSection(const Elf_Shdr *Shdr); - ErrorOr dumpNoBitsSection(const Elf_Shdr *Shdr); ErrorOr dumpGroup(const Elf_Shdr *Shdr); ErrorOr dumpMipsABIFlags(const Elf_Shdr *Shdr); @@ -105,13 +104,6 @@ ErrorOr ELFDumper::dump() { Y->Sections.push_back(std::unique_ptr(G.get())); break; } - case ELF::SHT_NOBITS: { - ErrorOr S = dumpNoBitsSection(&Sec); - if (std::error_code EC = S.getError()) - return EC; - Y->Sections.push_back(std::unique_ptr(S.get())); - break; - } default: { ErrorOr S = dumpContentSection(&Sec); if (std::error_code EC = S.getError()) @@ -312,18 +304,6 @@ ELFDumper::dumpContentSection(const Elf_Shdr *Shdr) { return S.release(); } -template -ErrorOr -ELFDumper::dumpNoBitsSection(const Elf_Shdr *Shdr) { - auto S = make_unique(); - - if (std::error_code EC = dumpCommonSection(Shdr, *S)) - return EC; - S->Size = Shdr->sh_size; - - return S.release(); -} - template ErrorOr ELFDumper::dumpGroup(const Elf_Shdr *Shdr) { auto S = make_unique(); diff --git a/tools/yaml2obj/yaml2elf.cpp b/tools/yaml2obj/yaml2elf.cpp index 795d5426291..772b5b918ec 100644 --- a/tools/yaml2obj/yaml2elf.cpp +++ b/tools/yaml2obj/yaml2elf.cpp @@ -241,8 +241,6 @@ bool ELFState::initSectionHeaders(std::vector &SHeaders, } else if (auto S = dyn_cast(Sec.get())) { if (!writeSectionContent(SHeader, *S, CBA)) return false; - } else if (isa(Sec.get())) { - // SHT_NOBITS section does not have content so nothing to do here. } else llvm_unreachable("Unknown section type");