diff options
Diffstat (limited to 'tools/yaml2obj')
-rw-r--r-- | tools/yaml2obj/yaml2elf.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/tools/yaml2obj/yaml2elf.cpp b/tools/yaml2obj/yaml2elf.cpp index 501dc2b..667718a 100644 --- a/tools/yaml2obj/yaml2elf.cpp +++ b/tools/yaml2obj/yaml2elf.cpp @@ -150,18 +150,21 @@ class ELFState { /// \brief The ELF file header. Elf_Ehdr &Header; + SectionNameToIdxMap &SN2I; + public: ELFState(Elf_Ehdr &Header_, ContiguousBlobAccumulator &Accum, - unsigned DotStrtabSecNo_) + unsigned DotStrtabSecNo_, SectionNameToIdxMap &SN2I_) : DotStrtab(), DotStrtabSecNo(DotStrtabSecNo_), - SectionContentAccum(Accum), Header(Header_) {} + SectionContentAccum(Accum), Header(Header_), SN2I(SN2I_) {} unsigned getDotStrTabSecNo() const { return DotStrtabSecNo; } StringTableBuilder &getStringTable() { return DotStrtab; } ContiguousBlobAccumulator &getSectionContentAccum() { return SectionContentAccum; } + SectionNameToIdxMap &getSN2I() { return SN2I; } }; } // end anonymous namespace @@ -252,8 +255,6 @@ static int writeELF(raw_ostream &OS, const ELFYAML::Object &Doc) { const size_t SectionContentBeginOffset = Header.e_ehsize + Header.e_shentsize * Header.e_shnum; ContiguousBlobAccumulator CBA(SectionContentBeginOffset); - ELFState<ELFT> State(Header, CBA, DotStrtabSecNo); - SectionNameToIdxMap SN2I; for (unsigned i = 0, e = Sections.size(); i != e; ++i) { StringRef Name = Sections[i].Name; @@ -267,6 +268,8 @@ static int writeELF(raw_ostream &OS, const ELFYAML::Object &Doc) { } } + ELFState<ELFT> State(Header, CBA, DotStrtabSecNo, SN2I); + StringTableBuilder SHStrTab; std::vector<Elf_Shdr> SHeaders; { |