|
ROSE
0.9.6a
|
A loader suitable for ELF object files. More...
#include <BinaryLoaderElfObj.h>


Public Member Functions | |
| BinaryLoaderElfObj () | |
| BinaryLoaderElfObj (const BinaryLoaderElfObj &other) | |
| virtual | ~BinaryLoaderElfObj () |
| virtual BinaryLoaderElfObj * | clone () const |
| Copy constructor. More... | |
| virtual bool | can_load (SgAsmGenericHeader *) const |
| Capability query. More... | |
| virtual SgAsmGenericSectionPtrList | get_remap_sections (SgAsmGenericHeader *) |
| Same as super class but appends those sections that are not mapped but which contain code. More... | |
| virtual MappingContribution | align_values (SgAsmGenericSection *, MemoryMap *, rose_addr_t *malign_lo, rose_addr_t *malign_hi, rose_addr_t *va, rose_addr_t *mem_size, rose_addr_t *offset, rose_addr_t *file_size, bool *map_private, rose_addr_t *va_offset, bool *anon_lo, bool *anon_hi, ConflictResolution *resolve) |
| Same as super class but relaxes alignment constraints for sections that are ELF Sections but not ELF Segments. More... | |
Public Member Functions inherited from BinaryLoaderElf | |
| BinaryLoaderElf () | |
| BinaryLoaderElf (const BinaryLoaderElf &other) | |
| virtual | ~BinaryLoaderElf () |
| void | add_lib_defaults (SgAsmGenericHeader *header=NULL) |
| Sets up library search paths and preloads from the environment. More... | |
| virtual void | fixup (SgAsmInterpretation *interp, FixupErrors *errors=NULL) |
| Performs relocation fixups on the specified interpretation. More... | |
| virtual SgAsmGenericSection * | find_section_by_preferred_va (SgAsmGenericHeader *, rose_addr_t va) |
| Find the section containing the specified virtual address. More... | |
Public Member Functions inherited from BinaryLoader | |
| BinaryLoader () | |
| BinaryLoader (const BinaryLoader &other) | |
| virtual | ~BinaryLoader () |
| void | set_perform_dynamic_linking (bool b) |
| Set whether this loader will perform the linking step. More... | |
| bool | get_perform_dynamic_linking () const |
| Returns whether this loader will perform the linking step. More... | |
| void | set_perform_remap (bool b) |
| Set whether this loader will perform the mapping step. More... | |
| bool | get_perform_remap () const |
| Returns whether this loader will perform the mapping step. More... | |
| void | set_perform_relocations (bool b) |
| Set whether this loader will perform the relocation step. More... | |
| bool | get_perform_relocations () const |
| Returns whether this loader will perform the relocation step. More... | |
| void | set_debug (FILE *f) |
| Set whether this loader will emit diagnostics for debugging. More... | |
| FILE * | get_debug () const |
| Returns whether this loader will emit diagnostics for debugging. More... | |
| void | add_preload (const std::string &libname) |
| Adds a library to the list of pre-loaded libraries. More... | |
| const std::vector< std::string > & | get_preloads () const |
| Returns the list of libraries that will be pre-loaded. More... | |
| void | add_directory (const std::string &dirname) |
| Adds a directory to the list of directories searched for libraries. More... | |
| void | add_directories (const std::vector< std::string > &dirnames) |
| Adds directories to the list of directories searched for libraries. More... | |
| const std::vector< std::string > & | get_directories () const |
| Returns the list of shared object search directories. More... | |
| virtual std::string | find_so_file (const std::string &libname) const |
| Given the name of a shared object, return the fully qualified name where the library is located in the file system. More... | |
| virtual void | load (SgAsmInterpretation *) |
| Conditionally parse, map, link, and/or relocate the interpretation according to properties of this loader. More... | |
| virtual void | link (SgAsmInterpretation *interp) |
| Links an interpretation by parsing all shared objects required by that interpretation. More... | |
| virtual void | remap (SgAsmInterpretation *interp) |
| Maps sections of the interpretation into the virtual address space. More... | |
| virtual bool | is_linked (SgBinaryComposite *composite, const std::string &filename) |
| Returns true if the specified file name is already linked into the AST. More... | |
| virtual bool | is_linked (SgAsmInterpretation *interp, const std::string &filename) |
| Returns true if the specified file name is already linked into the AST. More... | |
| virtual std::vector< std::string > | dependencies (SgAsmGenericHeader *) |
| Finds shared object dependencies of a single binary header. More... | |
| virtual void | remap (MemoryMap *, SgAsmGenericHeader *) |
| Remaps the sections for a particular header. More... | |
| rose_addr_t | bialign (rose_addr_t val1, rose_addr_t align1, rose_addr_t val2, rose_addr_t align2) |
| Calculate adjustment to cause two values to be aligned to two different alignments. More... | |
| virtual void | addSectionsForRemap (SgAsmGenericHeader *header, SgAsmGenericSectionPtrList &allSections) |
Selects those sections which should be layed out by the Loader and inserts them into the allSections argument. More... | |
Additional Inherited Members | |
Public Types inherited from BinaryLoaderElf | |
| enum | { VER_FLG_BASE =0x1, VER_FLG_WEAK =0x2, VERSYM_HIDDEN =0x8000 } |
| Flags for version definitions and requirements. More... | |
Static Public Member Functions inherited from BinaryLoaderElf | |
| static void | get_dynamic_vars (SgAsmGenericHeader *, std::string &rpath, std::string &runpath) |
| Returns the strings associated with certain variables in the ".dynamic" section. More... | |
Protected Member Functions inherited from BinaryLoaderElf | |
| virtual rose_addr_t | rebase (MemoryMap *, SgAsmGenericHeader *, const SgAsmGenericSectionPtrList &) |
| Returns a new, temporary base address which is greater than everything that's been mapped already. More... | |
| void | build_master_symbol_table (SgAsmInterpretation *) |
| Builds the master symbol table. More... | |
| SgAsmElfSymbol * | fixup_info_reloc_symbol (SgAsmElfRelocEntry *, const SymverResolver &) |
| Returns the defining symbol for a relocation, if any. More... | |
| rose_addr_t | fixup_info_target_va (SgAsmElfRelocEntry *, SgAsmGenericSection **section_p=NULL, rose_addr_t *adj_p=NULL) |
| Returns the virtual address where a relocation should be supplied. More... | |
| rose_addr_t | fixup_info_symbol_va (SgAsmElfSymbol *, SgAsmGenericSection **section_p=NULL, rose_addr_t *adj_p=NULL) |
| Returns the virtual address of a symbol adjusted for remapping. More... | |
| rose_addr_t | fixup_info_addend (SgAsmElfRelocEntry *, rose_addr_t target_va, MemoryMap *, size_t nbytes=0) |
| Returns the addend associated with a relocation. More... | |
| rose_addr_t | fixup_info_expr (const std::string &expression, SgAsmElfRelocEntry *reloc, const SymverResolver &resolver, MemoryMap *memmap, rose_addr_t *target_va_p=NULL) |
| Evaluates a simple postfix expression and returns the result. More... | |
| void | fixup_apply (rose_addr_t value, SgAsmElfRelocEntry *, MemoryMap *, rose_addr_t target_va=0, size_t nbytes=0) |
| Writes a value into memory at the relocation target. More... | |
| void | fixup_apply_symbol_copy (SgAsmElfRelocEntry *, const SymverResolver &, MemoryMap *) |
| Copies symbol memory to the relocation target. More... | |
| void | performRelocation (SgAsmElfRelocEntry *, const SymverResolver &, MemoryMap *) |
| void | performRelocations (SgAsmElfFileHeader *, MemoryMap *) |
Protected Attributes inherited from BinaryLoaderElf | |
| SymbolMap | p_symbols |
| Symbol table for an entire interpretation. More... | |
A loader suitable for ELF object files.
An ELF object file typically contains one section per function and each section has a preferred virtual address of zero. This loader will map these sections so they do not overlap in virtual memory.
Definition at line 10 of file BinaryLoaderElfObj.h.
|
inline |
Definition at line 12 of file BinaryLoaderElfObj.h.
Referenced by clone().
|
inline |
Definition at line 14 of file BinaryLoaderElfObj.h.
|
inlinevirtual |
Definition at line 18 of file BinaryLoaderElfObj.h.
|
inlinevirtual |
Copy constructor.
See super class.
Reimplemented from BinaryLoaderElf.
Definition at line 21 of file BinaryLoaderElfObj.h.
References BinaryLoaderElfObj().
|
virtual |
|
virtual |
Same as super class but appends those sections that are not mapped but which contain code.
Reimplemented from BinaryLoaderElf.
|
virtual |
Same as super class but relaxes alignment constraints for sections that are ELF Sections but not ELF Segments.
Reimplemented from BinaryLoaderElf.