#include "ELFDump.h"
#include "llvm-objdump.h"
#include "llvm/Demangle/Demangle.h"
#include "llvm/Object/ELFObjectFile.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
usingnamespacellvm;
usingnamespacellvm::object;
usingnamespacellvm::objdump;
namespace {
template <typename ELFT> class ELFDumper : public Dumper { … };
}
template <class ELFT>
static std::unique_ptr<Dumper> createDumper(const ELFObjectFile<ELFT> &Obj) { … }
std::unique_ptr<Dumper>
objdump::createELFDumper(const object::ELFObjectFileBase &Obj) { … }
template <class ELFT>
static Expected<StringRef> getDynamicStrTab(const ELFFile<ELFT> &Elf) { … }
template <class ELFT>
static Error getRelocationValueString(const ELFObjectFile<ELFT> *Obj,
const RelocationRef &RelRef,
SmallVectorImpl<char> &Result) { … }
Error objdump::getELFRelocationValueString(const ELFObjectFileBase *Obj,
const RelocationRef &Rel,
SmallVectorImpl<char> &Result) { … }
template <class ELFT>
static uint64_t getSectionLMA(const ELFFile<ELFT> &Obj,
const object::ELFSectionRef &Sec) { … }
uint64_t objdump::getELFSectionLMA(const object::ELFSectionRef &Sec) { … }
template <class ELFT> void ELFDumper<ELFT>::printDynamicSection() { … }
template <class ELFT> void ELFDumper<ELFT>::printProgramHeaders() { … }
template <typename ELFT> void ELFDumper<ELFT>::printDynamicRelocations() { … }
template <class ELFT>
void ELFDumper<ELFT>::printSymbolVersionDependency(
const typename ELFT::Shdr &Sec) { … }
template <class ELFT>
static void printSymbolVersionDefinition(const typename ELFT::Shdr &Shdr,
ArrayRef<uint8_t> Contents,
StringRef StrTab) { … }
template <class ELFT> void ELFDumper<ELFT>::printSymbolVersion() { … }
template <class ELFT> void ELFDumper<ELFT>::printPrivateHeaders() { … }