gem5
v20.0.0.2
|
#include <elf_object.hh>
Public Member Functions | |
ElfObject (ImageFileDataPtr ifd) | |
~ElfObject () | |
MemoryImage | buildImage () const override |
bool | loadAllSymbols (SymbolTable *symtab, Addr base=0, Addr offset=0, Addr addr_mask=MaxAddr) override |
bool | loadGlobalSymbols (SymbolTable *symtab, Addr base=0, Addr offset=0, Addr addr_mask=MaxAddr) override |
bool | loadLocalSymbols (SymbolTable *symtab, Addr base=0, Addr offset=0, Addr addr_mask=MaxAddr) override |
bool | loadWeakSymbols (SymbolTable *symtab, Addr base=0, Addr offset=0, Addr addr_mask=MaxAddr) override |
ObjectFile * | getInterpreter () const override |
std::string | getInterpPath (const GElf_Phdr &phdr) const |
Addr | bias () const override |
bool | relocatable () const override |
Addr | mapSize () const override |
void | updateBias (Addr bias_addr) override |
bool | hasTLS () override |
Addr | programHeaderTable () |
uint16_t | programHeaderSize () |
uint16_t | programHeaderCount () |
![]() | |
virtual | ~ObjectFile () |
Arch | getArch () const |
OpSys | getOpSys () const |
Addr | entryPoint () const |
Protected Member Functions | |
void | determineArch () |
void | determineOpSys () |
void | handleLoadableSegment (GElf_Phdr phdr, int seg_num) |
bool | loadSomeSymbols (SymbolTable *symtab, int binding, Addr mask, Addr base, Addr offset) |
Helper functions for loadGlobalSymbols() and loadLocalSymbols(). More... | |
void | getSections () |
bool | sectionExists (std::string sec) |
![]() | |
ObjectFile (ImageFileDataPtr ifd) | |
![]() | |
ImageFile (ImageFileDataPtr data) | |
virtual | ~ImageFile () |
Protected Attributes | |
Elf * | elf |
GElf_Ehdr | ehdr |
Addr | _programHeaderTable = 0 |
uint16_t | _programHeaderSize = 0 |
uint16_t | _programHeaderCount = 0 |
std::set< std::string > | sectionNames |
ElfObject * | interpreter = nullptr |
Addr | ldBias = 0 |
bool | relocate = true |
Addr | ldMin = MaxAddr |
Addr | ldMax = MaxAddr |
MemoryImage | image |
![]() | |
Arch | arch = UnknownArch |
OpSys | opSys = UnknownOpSys |
Addr | entry = 0 |
![]() | |
ImageFileDataPtr | imageData |
Definition at line 59 of file elf_object.hh.
Loader::ElfObject::ElfObject | ( | ImageFileDataPtr | ifd | ) |
Definition at line 105 of file elf_object.cc.
References _programHeaderCount, _programHeaderSize, Loader::createObjectFile(), determineArch(), determineOpSys(), DPRINTFR, ehdr, elf, Loader::ObjectFile::entry, getInterpPath(), handleLoadableSegment(), ArmISA::i, image, Loader::ImageFile::imageData, interpreter, panic, X86ISA::seg, Loader::MemoryImage::segments(), and warn_if.
Loader::ElfObject::~ElfObject | ( | ) |
Definition at line 298 of file elf_object.cc.
References elf.
|
inlineoverridevirtual |
Reimplemented from Loader::ObjectFile.
Definition at line 122 of file elf_object.hh.
|
inlineoverridevirtual |
Implements Loader::ImageFile.
Definition at line 107 of file elf_object.hh.
References X86ISA::base, MaxAddr, and ArmISA::offset.
|
protected |
Definition at line 161 of file elf_object.cc.
References Loader::ObjectFile::arch, Loader::Arm, Loader::Arm64, bits(), ehdr, fatal, Loader::I386, Loader::Mips, Loader::Power, Loader::Riscv32, Loader::Riscv64, Loader::SPARC32, Loader::SPARC64, Loader::Thumb, warn, and Loader::X86_64.
Referenced by ElfObject().
|
protected |
Definition at line 208 of file elf_object.cc.
References ehdr, elf, fatal, Loader::FreeBSD, htobe(), htole(), Loader::Linux, Loader::LinuxArmOABI, Loader::ObjectFile::opSys, Loader::Solaris, Loader::Tru64, and Loader::UnknownOpSys.
Referenced by ElfObject().
std::string Loader::ElfObject::getInterpPath | ( | const GElf_Phdr & | phdr | ) | const |
Definition at line 150 of file elf_object.cc.
References Loader::ImageFile::imageData.
Referenced by ElfObject().
|
inlineoverridevirtual |
Reimplemented from Loader::ObjectFile.
Definition at line 119 of file elf_object.hh.
|
protected |
Definition at line 420 of file elf_object.cc.
References ehdr, elf, Loader::ImageFile::imageData, panic, and sectionNames.
Referenced by sectionExists().
|
protected |
Definition at line 271 of file elf_object.cc.
References _programHeaderTable, Loader::MemoryImage::addSegment(), ehdr, image, Loader::ImageFile::imageData, name(), and sc_dt::to_string().
Referenced by ElfObject().
|
inlineoverridevirtual |
Reimplemented from Loader::ObjectFile.
Definition at line 127 of file elf_object.hh.
|
overridevirtual |
Reimplemented from Loader::ObjectFile.
Definition at line 378 of file elf_object.cc.
References loadGlobalSymbols(), loadLocalSymbols(), and loadWeakSymbols().
|
overridevirtual |
Reimplemented from Loader::ObjectFile.
Definition at line 387 of file elf_object.cc.
References interpreter, and loadSomeSymbols().
Referenced by loadAllSymbols().
|
overridevirtual |
Reimplemented from Loader::ObjectFile.
Definition at line 398 of file elf_object.cc.
References interpreter, and loadSomeSymbols().
Referenced by loadAllSymbols().
|
protected |
Helper functions for loadGlobalSymbols() and loadLocalSymbols().
Definition at line 304 of file elf_object.cc.
References Loader::Symbol::address, Loader::Symbol::binding, X86ISA::count, data, DPRINTF, elf, Loader::Symbol::Global, ArmISA::i, Loader::ImageFile::imageData, Loader::SymbolTable::insert(), Loader::Symbol::Local, ArmISA::mask, Loader::Symbol::name, ArmISA::offset, panic, and Loader::Symbol::Weak.
Referenced by loadGlobalSymbols(), loadLocalSymbols(), and loadWeakSymbols().
|
overridevirtual |
Reimplemented from Loader::ObjectFile.
Definition at line 409 of file elf_object.cc.
References interpreter, and loadSomeSymbols().
Referenced by loadAllSymbols().
|
inlineoverridevirtual |
Reimplemented from Loader::ObjectFile.
Definition at line 124 of file elf_object.hh.
|
inline |
Definition at line 131 of file elf_object.hh.
References Loader::setInterpDir().
|
inline |
Definition at line 130 of file elf_object.hh.
|
inline |
Definition at line 129 of file elf_object.hh.
|
inlineoverridevirtual |
Reimplemented from Loader::ObjectFile.
Definition at line 123 of file elf_object.hh.
|
protected |
Definition at line 456 of file elf_object.cc.
References getSections(), and sectionNames.
|
overridevirtual |
Reimplemented from Loader::ObjectFile.
Definition at line 466 of file elf_object.cc.
References Loader::ObjectFile::entry, image, ldBias, and Loader::MemoryImage::offset().
|
protected |
Definition at line 73 of file elf_object.hh.
Referenced by ElfObject().
|
protected |
Definition at line 72 of file elf_object.hh.
Referenced by ElfObject().
|
protected |
Definition at line 71 of file elf_object.hh.
Referenced by handleLoadableSegment().
|
protected |
Definition at line 63 of file elf_object.hh.
Referenced by determineArch(), determineOpSys(), ElfObject(), getSections(), and handleLoadableSegment().
|
protected |
Definition at line 62 of file elf_object.hh.
Referenced by determineOpSys(), ElfObject(), getSections(), loadSomeSymbols(), and ~ElfObject().
|
protected |
Definition at line 101 of file elf_object.hh.
Referenced by ElfObject(), handleLoadableSegment(), and updateBias().
|
protected |
Definition at line 76 of file elf_object.hh.
Referenced by ElfObject(), loadGlobalSymbols(), loadLocalSymbols(), and loadWeakSymbols().
|
protected |
Definition at line 81 of file elf_object.hh.
Referenced by updateBias().
Definition at line 92 of file elf_object.hh.
Definition at line 91 of file elf_object.hh.
|
protected |
Definition at line 87 of file elf_object.hh.
|
protected |
Definition at line 74 of file elf_object.hh.
Referenced by getSections(), and sectionExists().