Home | History | Annotate | Download | only in yaml2obj

Lines Matching defs:Doc

115   const ELFYAML::Object &Doc;
146 unsigned getDotSymTabSecNo() const { return Doc.Sections.size() + 1; }
147 unsigned getDotStrTabSecNo() const { return Doc.Sections.size() + 2; }
148 unsigned getDotShStrTabSecNo() const { return Doc.Sections.size() + 3; }
149 unsigned getSectionCount() const { return Doc.Sections.size() + 4; }
151 ELFState(const ELFYAML::Object &D) : Doc(D) {}
154 static int writeELF(raw_ostream &OS, const ELFYAML::Object &Doc);
170 Header.e_ident[EI_OSABI] = Doc.Header.OSABI;
172 Header.e_type = Doc.Header.Type;
173 Header.e_machine = Doc.Header.Machine;
175 Header.e_entry = Doc.Header.Entry;
176 Header.e_flags = Doc.Header.Flags;
194 for (const auto &Sec : Doc.Sections)
198 for (const auto &Sec : Doc.Sections) {
270 SHeader.sh_info = Doc.Symbols.Local.size() + 1;
283 for (const auto &Sym : Doc.Symbols.Local)
285 for (const auto &Sym : Doc.Symbols.Global)
287 for (const auto &Sym : Doc.Symbols.Weak)
291 addSymbols(Doc.Symbols.Local, Syms, ELF::STB_LOCAL);
292 addSymbols(Doc.Symbols.Global, Syms, ELF::STB_GLOBAL);
293 addSymbols(Doc.Symbols.Weak, Syms, ELF::STB_WEAK);
356 static bool isMips64EL(const ELFYAML::Object &Doc) {
357 return Doc.Header.Machine == ELFYAML::ELF_EM(llvm::ELF::EM_MIPS) &&
358 Doc.Header.Class == ELFYAML::ELF_ELFCLASS(ELF::ELFCLASS64) &&
359 Doc.Header.Data == ELFYAML::ELF_ELFDATA(ELF::ELFDATA2LSB);
389 REntry.setSymbolAndType(SymIdx, Rel.Type, isMips64EL(Doc));
395 REntry.setSymbolAndType(SymIdx, Rel.Type, isMips64EL(Doc));
466 for (unsigned i = 0, e = Doc.Sections.size(); i != e; ++i) {
467 StringRef Name = Doc.Sections[i]->Name;
497 int ELFState<ELFT>::writeELF(raw_ostream &OS, const ELFYAML::Object &Doc) {
498 ELFState<ELFT> State(Doc);
503 if (!State.buildSymbolIndex(StartSymIndex, Doc.Symbols.Local) ||
504 !State.buildSymbolIndex(StartSymIndex, Doc.Symbols.Global) ||
505 !State.buildSymbolIndex(StartSymIndex, Doc.Symbols.Weak))
520 // Doc might not contain .symtab, .strtab and .shstrtab sections,
553 static bool is64Bit(const ELFYAML::Object &Doc) {
554 return Doc.Header.Class == ELFYAML::ELF_ELFCLASS(ELF::ELFCLASS64);
557 static bool isLittleEndian(const ELFYAML::Object &Doc) {
558 return Doc.Header.Data == ELFYAML::ELF_ELFDATA(ELF::ELFDATA2LSB);
561 int yaml2elf(llvm::ELFYAML::Object &Doc, raw_ostream &Out) {
567 if (is64Bit(Doc)) {
568 if (isLittleEndian(Doc))
569 return ELFState<LE64>::writeELF(Out, Doc);
571 return ELFState<BE64>::writeELF(Out, Doc);
573 if (isLittleEndian(Doc))
574 return ELFState<LE32>::writeELF(Out, Doc);
576 return ELFState<BE32>::writeELF(Out, Doc);