From ee8648bdac07986a0f1ec897b02ec82a2f144d46 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Fri, 7 Aug 2015 23:01:33 +0000 Subject: Vendor import of llvm trunk r242221: https://llvm.org/svn/llvm-project/llvm/trunk@242221 --- tools/obj2yaml/elf2yaml.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'tools/obj2yaml/elf2yaml.cpp') diff --git a/tools/obj2yaml/elf2yaml.cpp b/tools/obj2yaml/elf2yaml.cpp index 9afcedef6398..f117a10d3822 100644 --- a/tools/obj2yaml/elf2yaml.cpp +++ b/tools/obj2yaml/elf2yaml.cpp @@ -40,6 +40,7 @@ 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); @@ -104,6 +105,13 @@ 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()) @@ -304,6 +312,18 @@ 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(); -- cgit v1.3