forked from OSchip/llvm-project
Split getStringTableForSymtab.
For use in cases where we already have the section table. llvm-svn: 285903
This commit is contained in:
parent
21fed052e0
commit
2a33cec3ec
|
@ -79,6 +79,8 @@ public:
|
||||||
|
|
||||||
ErrorOr<StringRef> getStringTable(const Elf_Shdr *Section) const;
|
ErrorOr<StringRef> getStringTable(const Elf_Shdr *Section) const;
|
||||||
ErrorOr<StringRef> getStringTableForSymtab(const Elf_Shdr &Section) const;
|
ErrorOr<StringRef> getStringTableForSymtab(const Elf_Shdr &Section) const;
|
||||||
|
ErrorOr<StringRef> getStringTableForSymtab(const Elf_Shdr &Section,
|
||||||
|
Elf_Shdr_Range Sections) const;
|
||||||
|
|
||||||
ErrorOr<ArrayRef<Elf_Word>> getSHNDXTable(const Elf_Shdr &Section) const;
|
ErrorOr<ArrayRef<Elf_Word>> getSHNDXTable(const Elf_Shdr &Section) const;
|
||||||
ErrorOr<ArrayRef<Elf_Word>> getSHNDXTable(const Elf_Shdr &Section,
|
ErrorOr<ArrayRef<Elf_Word>> getSHNDXTable(const Elf_Shdr &Section,
|
||||||
|
@ -456,9 +458,21 @@ ELFFile<ELFT>::getSHNDXTable(const Elf_Shdr &Section,
|
||||||
template <class ELFT>
|
template <class ELFT>
|
||||||
ErrorOr<StringRef>
|
ErrorOr<StringRef>
|
||||||
ELFFile<ELFT>::getStringTableForSymtab(const Elf_Shdr &Sec) const {
|
ELFFile<ELFT>::getStringTableForSymtab(const Elf_Shdr &Sec) const {
|
||||||
|
auto SectionsOrErr = sections();
|
||||||
|
if (std::error_code EC = SectionsOrErr.getError())
|
||||||
|
return EC;
|
||||||
|
return getStringTableForSymtab(Sec, *SectionsOrErr);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class ELFT>
|
||||||
|
ErrorOr<StringRef>
|
||||||
|
ELFFile<ELFT>::getStringTableForSymtab(const Elf_Shdr &Sec,
|
||||||
|
Elf_Shdr_Range Sections) const {
|
||||||
|
|
||||||
if (Sec.sh_type != ELF::SHT_SYMTAB && Sec.sh_type != ELF::SHT_DYNSYM)
|
if (Sec.sh_type != ELF::SHT_SYMTAB && Sec.sh_type != ELF::SHT_DYNSYM)
|
||||||
return object_error::parse_failed;
|
return object_error::parse_failed;
|
||||||
ErrorOr<const Elf_Shdr *> SectionOrErr = getSection(Sec.sh_link);
|
ErrorOr<const Elf_Shdr *> SectionOrErr =
|
||||||
|
object::getSection<ELFT>(Sections, Sec.sh_link);
|
||||||
if (std::error_code EC = SectionOrErr.getError())
|
if (std::error_code EC = SectionOrErr.getError())
|
||||||
return EC;
|
return EC;
|
||||||
return getStringTable(*SectionOrErr);
|
return getStringTable(*SectionOrErr);
|
||||||
|
|
Loading…
Reference in New Issue