Halide
Halide::Internal::Elf::Object Class Reference

Holds all of the relevant sections and symbols for an object. More...

#include <Elf.h>

Public Types

enum  Type : uint16_t {
  ET_NONE = 0, ET_REL = 1, ET_EXEC = 2, ET_DYN = 3,
  ET_CORE = 4, ET_LOPROC = 0xff00, ET_HIPROC = 0xffff
}
 
typedef std::list< SectionSectionList
 
typedef SectionList::iterator section_iterator
 
typedef SectionList::const_iterator const_section_iterator
 
typedef std::list< SymbolSymbolList
 
typedef SymbolList::iterator symbol_iterator
 
typedef SymbolList::const_iterator const_symbol_iterator
 

Public Member Functions

 Object ()=default
 
Type get_type () const
 
uint16_t get_machine () const
 
uint32_t get_version () const
 
uint64_t get_entry () const
 
uint32_t get_flags () const
 
Objectset_type (Type type)
 
Objectset_machine (uint16_t machine)
 
Objectset_version (uint32_t version)
 
Objectset_entry (uint64_t entry)
 
Objectset_flags (uint32_t flags)
 
std::vector< char > write_shared_object (Linker *linker, const std::vector< std::string > &depedencies={}, const std::string &soname="")
 Write a shared object in memory. More...
 
section_iterator sections_begin ()
 
section_iterator sections_end ()
 
iterator_range< section_iteratorsections ()
 
const_section_iterator sections_begin () const
 
const_section_iterator sections_end () const
 
iterator_range< const_section_iteratorsections () const
 
size_t sections_size () const
 
section_iterator find_section (const std::string &name)
 
section_iterator add_section (const std::string &name, Section::Type type)
 
section_iterator add_relocation_section (const Section &for_section)
 
section_iterator erase_section (section_iterator i)
 
section_iterator merge_sections (const std::vector< section_iterator > &sections)
 
section_iterator merge_text_sections ()
 
symbol_iterator symbols_begin ()
 
symbol_iterator symbols_end ()
 
iterator_range< symbol_iteratorsymbols ()
 
const_symbol_iterator symbols_begin () const
 
const_symbol_iterator symbols_end () const
 
iterator_range< const_symbol_iteratorsymbols () const
 
size_t symbols_size () const
 
symbol_iterator find_symbol (const std::string &name)
 
const_symbol_iterator find_symbol (const std::string &name) const
 
symbol_iterator add_symbol (const std::string &name)
 

Static Public Member Functions

static std::unique_ptr< Objectparse_object (const char *data, size_t size)
 Parse an object in memory to an Object. More...
 

Detailed Description

Holds all of the relevant sections and symbols for an object.

Definition at line 459 of file Elf.h.

Member Typedef Documentation

◆ SectionList

Definition at line 473 of file Elf.h.

◆ section_iterator

typedef SectionList::iterator Halide::Internal::Elf::Object::section_iterator

Definition at line 474 of file Elf.h.

◆ const_section_iterator

typedef SectionList::const_iterator Halide::Internal::Elf::Object::const_section_iterator

Definition at line 475 of file Elf.h.

◆ SymbolList

Definition at line 477 of file Elf.h.

◆ symbol_iterator

typedef SymbolList::iterator Halide::Internal::Elf::Object::symbol_iterator

Definition at line 478 of file Elf.h.

◆ const_symbol_iterator

typedef SymbolList::const_iterator Halide::Internal::Elf::Object::const_symbol_iterator

Definition at line 479 of file Elf.h.

Member Enumeration Documentation

◆ Type

Enumerator
ET_NONE 
ET_REL 
ET_EXEC 
ET_DYN 
ET_CORE 
ET_LOPROC 
ET_HIPROC 

Definition at line 461 of file Elf.h.

Constructor & Destructor Documentation

◆ Object()

Halide::Internal::Elf::Object::Object ( )
default

Member Function Documentation

◆ get_type()

Type Halide::Internal::Elf::Object::get_type ( ) const
inline

Definition at line 497 of file Elf.h.

◆ get_machine()

uint16_t Halide::Internal::Elf::Object::get_machine ( ) const
inline

Definition at line 500 of file Elf.h.

◆ get_version()

uint32_t Halide::Internal::Elf::Object::get_version ( ) const
inline

Definition at line 503 of file Elf.h.

◆ get_entry()

uint64_t Halide::Internal::Elf::Object::get_entry ( ) const
inline

Definition at line 506 of file Elf.h.

◆ get_flags()

uint32_t Halide::Internal::Elf::Object::get_flags ( ) const
inline

Definition at line 509 of file Elf.h.

◆ set_type()

Object& Halide::Internal::Elf::Object::set_type ( Type  type)
inline

Definition at line 513 of file Elf.h.

◆ set_machine()

Object& Halide::Internal::Elf::Object::set_machine ( uint16_t  machine)
inline

Definition at line 517 of file Elf.h.

◆ set_version()

Object& Halide::Internal::Elf::Object::set_version ( uint32_t  version)
inline

Definition at line 521 of file Elf.h.

◆ set_entry()

Object& Halide::Internal::Elf::Object::set_entry ( uint64_t  entry)
inline

Definition at line 525 of file Elf.h.

◆ set_flags()

Object& Halide::Internal::Elf::Object::set_flags ( uint32_t  flags)
inline

Definition at line 529 of file Elf.h.

◆ parse_object()

static std::unique_ptr<Object> Halide::Internal::Elf::Object::parse_object ( const char *  data,
size_t  size 
)
static

Parse an object in memory to an Object.

◆ write_shared_object()

std::vector<char> Halide::Internal::Elf::Object::write_shared_object ( Linker linker,
const std::vector< std::string > &  depedencies = {},
const std::string &  soname = "" 
)

Write a shared object in memory.

◆ sections_begin() [1/2]

section_iterator Halide::Internal::Elf::Object::sections_begin ( )
inline

Definition at line 541 of file Elf.h.

◆ sections_end() [1/2]

section_iterator Halide::Internal::Elf::Object::sections_end ( )
inline

Definition at line 544 of file Elf.h.

◆ sections() [1/2]

iterator_range<section_iterator> Halide::Internal::Elf::Object::sections ( )
inline

Definition at line 547 of file Elf.h.

◆ sections_begin() [2/2]

const_section_iterator Halide::Internal::Elf::Object::sections_begin ( ) const
inline

Definition at line 550 of file Elf.h.

◆ sections_end() [2/2]

const_section_iterator Halide::Internal::Elf::Object::sections_end ( ) const
inline

Definition at line 553 of file Elf.h.

◆ sections() [2/2]

iterator_range<const_section_iterator> Halide::Internal::Elf::Object::sections ( ) const
inline

Definition at line 556 of file Elf.h.

◆ sections_size()

size_t Halide::Internal::Elf::Object::sections_size ( ) const
inline

Definition at line 559 of file Elf.h.

◆ find_section()

section_iterator Halide::Internal::Elf::Object::find_section ( const std::string &  name)

◆ add_section()

section_iterator Halide::Internal::Elf::Object::add_section ( const std::string &  name,
Section::Type  type 
)

◆ add_relocation_section()

section_iterator Halide::Internal::Elf::Object::add_relocation_section ( const Section for_section)

◆ erase_section()

section_iterator Halide::Internal::Elf::Object::erase_section ( section_iterator  i)
inline

Definition at line 566 of file Elf.h.

◆ merge_sections()

section_iterator Halide::Internal::Elf::Object::merge_sections ( const std::vector< section_iterator > &  sections)

◆ merge_text_sections()

section_iterator Halide::Internal::Elf::Object::merge_text_sections ( )

◆ symbols_begin() [1/2]

symbol_iterator Halide::Internal::Elf::Object::symbols_begin ( )
inline

Definition at line 573 of file Elf.h.

◆ symbols_end() [1/2]

symbol_iterator Halide::Internal::Elf::Object::symbols_end ( )
inline

Definition at line 576 of file Elf.h.

◆ symbols() [1/2]

iterator_range<symbol_iterator> Halide::Internal::Elf::Object::symbols ( )
inline

Definition at line 579 of file Elf.h.

◆ symbols_begin() [2/2]

const_symbol_iterator Halide::Internal::Elf::Object::symbols_begin ( ) const
inline

Definition at line 582 of file Elf.h.

◆ symbols_end() [2/2]

const_symbol_iterator Halide::Internal::Elf::Object::symbols_end ( ) const
inline

Definition at line 585 of file Elf.h.

◆ symbols() [2/2]

iterator_range<const_symbol_iterator> Halide::Internal::Elf::Object::symbols ( ) const
inline

Definition at line 588 of file Elf.h.

◆ symbols_size()

size_t Halide::Internal::Elf::Object::symbols_size ( ) const
inline

Definition at line 591 of file Elf.h.

◆ find_symbol() [1/2]

symbol_iterator Halide::Internal::Elf::Object::find_symbol ( const std::string &  name)

◆ find_symbol() [2/2]

const_symbol_iterator Halide::Internal::Elf::Object::find_symbol ( const std::string &  name) const

◆ add_symbol()

symbol_iterator Halide::Internal::Elf::Object::add_symbol ( const std::string &  name)

The documentation for this class was generated from the following file: