23 #ifndef __CLRX_ELFBINARIES_H__
24 #define __CLRX_ELFBINARIES_H__
26 #include <CLRX/Config.h>
33 #include <CLRX/amdbin/Elf.h>
98 template<
typename Types>
156 operator bool()
const
172 {
return *
reinterpret_cast<const typename Types::Ehdr*
>(
binaryCode); }
176 {
return *
reinterpret_cast<typename Types::Ehdr*
>(
binaryCode); }
185 const typename Types::Ehdr& ehdr =
getHeader();
186 return *
reinterpret_cast<const typename Types::Shdr*
>(
binaryCode +
187 ULEV(ehdr.e_shoff) + size_t(
ULEV(ehdr.e_shentsize))*index);
193 const typename Types::Ehdr& ehdr =
getHeader();
194 return *
reinterpret_cast<typename Types::Shdr*
>(
binaryCode +
195 ULEV(ehdr.e_shoff) + size_t(
ULEV(ehdr.e_shentsize))*index);
205 const typename Types::Ehdr& ehdr =
getHeader();
206 return *
reinterpret_cast<const typename Types::Phdr*
>(
binaryCode +
207 ULEV(ehdr.e_phoff) + size_t(
ULEV(ehdr.e_phentsize))*index);
213 const typename Types::Ehdr& ehdr =
getHeader();
214 return *
reinterpret_cast<typename Types::Phdr*
>(
binaryCode +
215 ULEV(ehdr.e_phoff) + size_t(
ULEV(ehdr.e_phentsize))*index);
227 const typename Types::Sym&
getSymbol(
typename Types::Size index)
const
229 return *
reinterpret_cast<const typename Types::Sym*
>(
symbolTable +
234 typename Types::Sym&
getSymbol(
typename Types::Size index)
236 return *
reinterpret_cast<typename Types::Sym*
>(
241 const typename Types::Sym&
getDynSymbol(
typename Types::Size index)
const
243 return *
reinterpret_cast<const typename Types::Sym*
>(
dynSymTable +
250 return *
reinterpret_cast<typename Types::Sym*
>(
dynSymTable +
257 const typename Types::Sym& sym =
getSymbol(index);
285 throw Exception(std::string(
"Can't find Elf")+Types::bitName+
" Section");
312 throw Exception(std::string(
"Can't find Elf")+Types::bitName+
" Symbol");
322 throw Exception(std::string(
"Can't find Elf")+Types::bitName+
" DynSymbol");
335 const typename Types::Sym&
getSymbol(
const char* name)
const
373 extern template class ElfBinaryTemplate<Elf32Types>;
374 extern template class ElfBinaryTemplate<Elf64Types>;
377 extern bool isElfBinary(
size_t binarySize,
const cxbyte* binary);
404 template<
typename Types>
426 ELFSECTID_START = UINT_MAX-255,
427 ELFSECTID_SHSTRTAB = ELFSECTID_START,
437 ELFSECTID_STD_MAX = ELFSECTID_COMMENT,
438 ELFSECTID_OTHER_BUILTIN = ELFSECTID_STD_MAX+1,
439 ELFSECTID_NULL = UINT_MAX-2,
440 ELFSECTID_ABS = UINT_MAX-1,
441 ELFSECTID_UNDEF = UINT_MAX
471 extern uint16_t
convertSectionId(cxuint sectionIndex,
const uint16_t* builtinSections,
472 cxuint maxBuiltinSection, cxuint extraSectionIndex);
475 template<
typename Types>
506 const cxbyte* _data,
typename Types::Word _align)
508 align(_align), data(_data)
515 align(_align), dataGen(contentGen)
520 const cxbyte* _data,
typename Types::Word _align)
521 : type(_type), dataFromPointer(true), size(_size),
522 align(_align), data(_data)
528 : type(_type), dataFromPointer(false), size(_size),
529 align(_align), dataGen(contentGen)
534 typename Types::Word _align,
const char* _name, uint32_t _type,
535 typename Types::SectionFlags _flags, uint32_t _link = 0, uint32_t _info = 0,
536 typename Types::Word _addrBase = 0,
537 typename Types::Word _entSize = 0,
bool _zeroOffset =
false)
539 align(_align), data(_data)
541 section = {_name, _type, _flags, _link, _info, _addrBase, _entSize, _zeroOffset};
546 typename Types::Word _align,
const char* inName, uint32_t _type,
547 typename Types::SectionFlags _flags, uint32_t _link = 0, uint32_t _info = 0,
548 typename Types::Word _addrBase = 0,
549 typename Types::Word _entSize = 0,
bool _zeroOffset =
false)
551 align(_align), dataGen(_data)
553 section = {inName, _type, _flags, _link, _info, _addrBase, _entSize, _zeroOffset};
563 cxuint maxBuiltinSection, cxuint startExtraIndex)
565 align(binSection.align), data(binSection.data)
568 typename Types::SectionFlags(binSection.
flags),
570 maxBuiltinSection, startExtraIndex)),
571 binSection.
info, 0,
typename Types::Word(binSection.
entSize) };
577 sizeof(
typename Types::Word)); }
582 sizeof(
typename Types::Word)); }
586 {
return ElfRegionTemplate(0, (
const cxbyte*)
nullptr, 1,
".strtab", SHT_STRTAB, 0); }
595 {
return ElfRegionTemplate(0, (
const cxbyte*)
nullptr, 1,
".shstrtab", SHT_STRTAB, 0); }
599 {
return ElfRegionTemplate(0, (
const cxbyte*)
nullptr,
sizeof(
typename Types::Word),
600 ".symtab", SHT_SYMTAB, 0); }
604 {
return ElfRegionTemplate(0, (
const cxbyte*)
nullptr,
sizeof(
typename Types::Word),
605 ".dynsym", SHT_DYNSYM, 0); }
614 template<
typename Types>
633 template<
typename Types>
646 cxbyte _info, cxbyte _other,
bool _valueIsAddr,
647 typename Types::Word _value,
typename Types::Word _size)
648 : name(_name), sectionIndex(_sectionIndex), info(_info), other(_other),
649 valueIsAddr(_valueIsAddr), value(_value), size(_size)
659 cxuint maxBuiltinSection, cxuint startExtraIndex)
663 maxBuiltinSection, startExtraIndex);
664 info = binSymbol.
info;
665 other = binSymbol.
other;
667 value = binSymbol.
value;
668 size = binSymbol.
size;
678 template<
typename Types>
683 bool addNullSym, addNullDynSym;
685 cxuint addrStartRegion;
686 uint16_t shStrTab, strTab, dynStr;
687 cxuint shdrTabRegion, phdrTabRegion;
688 uint16_t sectionsNum;
689 typename Types::Word size;
691 std::vector<ElfRegionTemplate<Types> > regions;
692 std::unique_ptr<typename Types::Word[]> regionOffsets;
693 std::unique_ptr<typename Types::Word[]> regionAddresses;
694 std::unique_ptr<cxuint[]> sectionRegions;
695 std::vector<ElfProgramHeaderTemplate<Types> > progHeaders;
696 std::vector<ElfSymbolTemplate<Types> > symbols;
697 std::vector<ElfSymbolTemplate<Types> > dynSymbols;
711 bool addNullSym =
true,
bool addNullDynSym =
true,
712 bool addNullSection =
true, cxuint addrCountingFromRegion = 0);
716 { this->header = header; }
725 { symbols.push_back(symbol); }
728 { dynSymbols.push_back(symbol); }
731 uint64_t countSize();
744 extern template class ElfBinaryGenTemplate<Elf32Types>;
745 extern template class ElfBinaryGenTemplate<Elf64Types>;
const char * getDynSymbolName(typename Types::Size index) const
get dynamic symbol name with specified index
Definition: ElfBinaries.h:262
const Types::Sym & getDynSymbol(typename Types::Size index) const
get dynamic symbol with specified index
Definition: ElfBinaries.h:241
const Types::Shdr & getSectionHeader(uint16_t index) const
get section header with specified index
Definition: ElfBinaries.h:183
uint32_t link
section link
Definition: ElfBinaries.h:497
ElfSymbolTemplate(const BinSymbol &binSymbol, const uint16_t *builtinSections, cxuint maxBuiltinSection, cxuint startExtraIndex)
constructor for extra symbol
Definition: ElfBinaries.h:658
uint32_t Word
word size in ELF
Definition: ElfBinaries.h:66
SymbolIndexMap::const_iterator getDynSymbolIterEnd() const
get end iterator of dynamic symbol index map
Definition: ElfBinaries.h:303
Elf64_Sym Sym
symbol header
Definition: ElfBinaries.h:87
Elf64_Ehdr Ehdr
ELF header.
Definition: ElfBinaries.h:84
const cxbyte * data
data content
Definition: ElfBinaries.h:449
cxbyte info
info
Definition: ElfBinaries.h:466
Types::Shdr & getSectionHeader(const char *name)
get section header with specified name
Definition: ElfBinaries.h:331
creation flags for ELF binaries
Definition: ElfBinaries.h:59
ELF binary class.
Definition: ElfBinaries.h:99
uint16_t getSectionIndex(const char *name) const
get section index with specified name
uint32_t type
section type
Definition: ElfBinaries.h:451
uint32_t Flags
type for declaring various flags
Definition: Utilities.h:97
static const Word nobase
address with zero base
Definition: ElfBinaries.h:91
const Types::Ehdr & getHeader() const
get ELF binary header
Definition: ElfBinaries.h:171
const T * begin() const
get iterator to first element
Definition: Containers.h:243
Types::Size getDynSymbolIndex(const char *name) const
get dynamic symbol index with specified name (requires dynamic symbol index map)
Iter binaryMapFind(Iter begin, Iter end, const typename std::iterator_traits< Iter >::value_type::first_type &k)
binary find helper for array-map
Definition: Containers.h:379
size_t binaryCodeSize
binary code size
Definition: ElfBinaries.h:108
ElfRegionType type
type of region
Definition: ElfBinaries.h:478
fast and direct output buffer
Definition: InputOutput.h:350
const char * c_str() const
return C-style string pointer
Definition: CString.h:245
uint32_t info
section info
Definition: ElfBinaries.h:498
template of ElfRegion
Definition: ElfBinaries.h:476
static ElfRegionTemplate shstrtabSection()
get .shstrtab section
Definition: ElfBinaries.h:594
uint64_t flags
section flags
Definition: ElfBinaries.h:452
void addDynSymbol(const ElfSymbolTemplate< Types > &symbol)
add dynamic symbol
Definition: ElfBinaries.h:727
Types::Sym & getSymbol(typename Types::Size index)
get symbol with specified index
Definition: ElfBinaries.h:234
uint64_t value
symbol value
Definition: ElfBinaries.h:462
const Types::Sym & getDynSymbol(const char *name) const
get dynamic symbol with specified name (requires dynamic symbol index map)
Definition: ElfBinaries.h:343
uint64_t size
symbol size
Definition: ElfBinaries.h:463
bool hasSectionMap() const
returns true if object has a section's index map
Definition: ElfBinaries.h:140
bool valueIsAddr
true if value should be treats as address
Definition: ElfBinaries.h:640
ELF 32-bit types.
Definition: ElfBinaries.h:63
ElfRegionTemplate< Elf32Types > ElfRegion32
32-bit region (for 32-bit elf)
Definition: ElfBinaries.h:609
class ElfBinaryTemplate< Elf64Types > ElfBinary64
type for 64-bit ELF binary
Definition: ElfBinaries.h:382
create map of sections
Definition: ElfBinaries.h:56
static const Word nobase
address with zero base
Definition: ElfBinaries.h:75
ElfRegionTemplate(ElfRegionType _type, typename Types::Word _size, const cxbyte *_data, typename Types::Word _align)
constructor for region
Definition: ElfBinaries.h:519
cxbyte * binaryCode
pointer to binary code
Definition: ElfBinaries.h:109
static ElfRegionTemplate sectionHeaderTable()
get program header table region
Definition: ElfBinaries.h:580
SymbolIndexMap::const_iterator getSymbolIterEnd() const
get end iterator of symbol index map
Definition: ElfBinaries.h:299
symbol structure to external usage (fo example in the binary generator input)
Definition: ElfBinaries.h:459
cxbyte info
info
Definition: ElfBinaries.h:638
Types::Size dynSymbolsNum
dynamic symbols number
Definition: ElfBinaries.h:120
Types::Word addrBase
section address base
Definition: ElfBinaries.h:499
bool dataFromPointer
true if content from pointer, otherwise will be generated from class
Definition: ElfBinaries.h:481
CString name
name of section
Definition: ElfBinaries.h:447
uint64_t align
region alignment
Definition: ElfBinaries.h:450
Elf64_Shdr Shdr
Section header.
Definition: ElfBinaries.h:85
Array< std::pair< const char *, size_t > > SymbolIndexMap
symbol index map
Definition: ElfBinaries.h:105
static ElfRegionTemplate programHeaderTable()
get program header table region
Definition: ElfBinaries.h:575
const cxbyte * getSectionContent(uint16_t index) const
get section content pointer
Definition: ElfBinaries.h:351
Types::Size symbolsNum
symbols number
Definition: ElfBinaries.h:119
an array class
Definition: Containers.h:38
Elf32_Sym Sym
symbol header
Definition: ElfBinaries.h:71
Types::Word entSize
entries size
Definition: ElfBinaries.h:500
uint16_t convertSectionId(cxuint sectionIndex, const uint16_t *builtinSections, cxuint maxBuiltinSection, cxuint extraSectionIndex)
convert section id to elf section id
static ElfRegionTemplate symtabSection()
get symtab section
Definition: ElfBinaries.h:598
ElfHeaderTemplate< Elf64Types > ElfHeader64
64-bit elf header
Definition: ElfBinaries.h:422
cxbyte * getBinaryCode()
get binary code
Definition: ElfBinaries.h:167
const std::pair< const char *, size_t > * const_iterator
type of constant iterator
Definition: Containers.h:42
void generate(std::ostream &os)
generate binary
Definition: ElfBinaries.h:737
const Types::Sym & getSymbol(const char *name) const
get symbol with specified name (requires symbol index map)
Definition: ElfBinaries.h:335
Types::Phdr & getProgramHeader(uint16_t index)
get program header with specified index
Definition: ElfBinaries.h:211
Types::Size getSymbolIndex(const char *name) const
get symbol index with specified name (requires symbol index map)
CString name
name
Definition: ElfBinaries.h:461
Types::Sym & getSymbol(const char *name)
get symbol with specified name (requires symbol index map)
Definition: ElfBinaries.h:339
ELF binary generator.
Definition: ElfBinaries.h:679
uint32_t info
section info
Definition: ElfBinaries.h:454
const char * getSymbolName(typename Types::Size index) const
get symbol name with specified index
Definition: ElfBinaries.h:255
uint32_t type
section type
Definition: ElfBinaries.h:495
section structure to external usage (for example in the binary generator input)
Definition: ElfBinaries.h:445
const Types::Sym & getSymbol(typename Types::Size index) const
get symbol with specified index
Definition: ElfBinaries.h:227
void addSymbol(const ElfSymbolTemplate< Types > &symbol)
add symbol
Definition: ElfBinaries.h:724
uint16_t getSectionHeadersNum() const
get section headers number
Definition: ElfBinaries.h:179
cxbyte * symbolStringTable
pointer to symbol's string table
Definition: ElfBinaries.h:111
Types::Sym & getDynSymbol(typename Types::Size index)
get dynamic symbol with specified index
Definition: ElfBinaries.h:248
elf region content generator for elf region
Definition: ElfBinaries.h:394
const char * name
name
Definition: ElfBinaries.h:636
const char * getSectionName(uint16_t index) const
get section name with specified index
Definition: ElfBinaries.h:269
ElfSymbolTemplate< Elf64Types > ElfSymbol64
64-bit elf symbol
Definition: ElfBinaries.h:675
ElfRegionTemplate(ElfRegionType _type, typename Types::Word _size, const ElfRegionContent *contentGen, typename Types::Word _align)
constructor for region with content generator
Definition: ElfBinaries.h:526
ElfRegionTemplate< Elf64Types > ElfRegion64
64-bit region (for 64-bit elf)
Definition: ElfBinaries.h:611
if set in field then field has been ignored
Definition: ElfBinaries.h:51
const char * name
section name
Definition: ElfBinaries.h:494
static const char * bitName
bitness name
Definition: ElfBinaries.h:74
SectionIndexMap::const_iterator getSectionIter(const char *name) const
get section iterator with specified name (requires section index map)
Definition: ElfBinaries.h:280
const Types::Shdr & getSectionHeader(const char *name) const
get section header with specified name
Definition: ElfBinaries.h:327
SymbolIndexMap symbolIndexMap
symbol's index map
Definition: ElfBinaries.h:116
ElfProgramHeaderTemplate< Elf64Types > ElfProgramHeader64
64-bit elf program header
Definition: ElfBinaries.h:630
SymbolIndexMap::const_iterator getSymbolIter(const char *name) const
get symbol iterator with specified name (requires symbol index map)
Definition: ElfBinaries.h:307
size_t entSize
entries size
Definition: ElfBinaries.h:455
const cxbyte * getSectionContent(const char *name) const
get section content pointer
Definition: ElfBinaries.h:365
void setHeader(const ElfHeaderTemplate< Types > &header)
set elf header
Definition: ElfBinaries.h:715
static const char * bitName
bitness name
Definition: ElfBinaries.h:90
create map of dynamic symbols
Definition: ElfBinaries.h:58
Types::Ehdr & getHeader()
get ELF binary header
Definition: ElfBinaries.h:175
Flags creationFlags
creation flags holder
Definition: ElfBinaries.h:107
bool hasDynSymbolMap() const
returns true if object has a dynamic symbol's index map
Definition: ElfBinaries.h:148
uint16_t symbolEntSize
symbol entry size in a symbol's table
Definition: ElfBinaries.h:121
size_t size
size of content
Definition: ElfBinaries.h:448
uint16_t dynSymEntSize
dynamic symbol entry size in a dynamic symbol's table
Definition: ElfBinaries.h:122
ElfRegionTemplate(typename Types::Word _size, const cxbyte *_data, typename Types::Word _align, const char *_name, uint32_t _type, typename Types::SectionFlags _flags, uint32_t _link=0, uint32_t _info=0, typename Types::Word _addrBase=0, typename Types::Word _entSize=0, bool _zeroOffset=false)
constructor for section
Definition: ElfBinaries.h:533
static const cxuint bitness
ELF bitness.
Definition: ElfBinaries.h:89
cxbyte other
other
Definition: ElfBinaries.h:467
size_t getSize() const
get size of binaries
Definition: ElfBinaries.h:152
bool isElfBinary(size_t binarySize, const cxbyte *binary)
check whether binary data is is ELF binary
bool valueIsAddr
true if value should be treats as address
Definition: ElfBinaries.h:465
uint32_t Size
size used to return size value
Definition: ElfBinaries.h:65
uint64_t SectionFlags
section flags
Definition: ElfBinaries.h:83
ElfProgramHeaderTemplate< Elf32Types > ElfProgramHeader32
32-bit elf program header
Definition: ElfBinaries.h:628
inlines for accessing memory words in LittleEndian and unaligned
const cxbyte * data
content from pointer
Definition: ElfBinaries.h:490
if set in field then field has been filled later
Definition: ElfBinaries.h:50
ElfSymbolTemplate(const char *_name, uint16_t _sectionIndex, cxbyte _info, cxbyte _other, bool _valueIsAddr, typename Types::Word _value, typename Types::Word _size)
constructor (to replace initializer list construction)
Definition: ElfBinaries.h:645
ELF symbol template.
Definition: ElfBinaries.h:634
Types::Word align
region alignment
Definition: ElfBinaries.h:487
Types::Size getDynSymbolsNum() const
get dynamic symbols number
Definition: ElfBinaries.h:223
cxbyte * dynSymTable
pointer to dynamic symbol table
Definition: ElfBinaries.h:114
ElfHeaderTemplate< Elf32Types > ElfHeader32
32-bit elf header
Definition: ElfBinaries.h:420
SymbolIndexMap dynSymIndexMap
dynamic symbol's index map
Definition: ElfBinaries.h:117
uint16_t getProgramHeadersNum() const
get program headers number
Definition: ElfBinaries.h:199
Elf64_Phdr Phdr
program header
Definition: ElfBinaries.h:86
cxbyte * getSectionContent(const char *name)
get section content pointer
Definition: ElfBinaries.h:369
bool hasSymbolMap() const
returns true if object has a symbol's index map
Definition: ElfBinaries.h:144
Flags getCreationFlags() const
get creation flags
Definition: ElfBinaries.h:136
utilities for other libraries and programs
uint16_t sectionIndex
section index for which symbol is
Definition: ElfBinaries.h:637
ElfRegionType
type of Elf region
Definition: ElfBinaries.h:385
uint32_t SectionFlags
section flags
Definition: ElfBinaries.h:67
const cxbyte * getBinaryCode() const
get binary code
Definition: ElfBinaries.h:164
exception class
Definition: Utilities.h:58
cxbyte * sectionStringTable
pointer to section's string table
Definition: ElfBinaries.h:110
cxbyte other
other
Definition: ElfBinaries.h:639
const Types::Phdr & getProgramHeader(uint16_t index) const
get program header with specified index
Definition: ElfBinaries.h:203
Types::Word size
region size
Definition: ElfBinaries.h:486
static ElfRegionTemplate strtabSection()
get .strtab section
Definition: ElfBinaries.h:585
class ElfBinaryGenTemplate< Elf32Types > ElfBinaryGen32
type for 32-bit ELF binary generator
Definition: ElfBinaries.h:748
cxuint linkId
link section id (ELFSECTID_* or an extra section index)
Definition: ElfBinaries.h:453
static ElfRegionTemplate dynstrSection()
get .dynstr section
Definition: ElfBinaries.h:589
cxbyte * getSectionContent(uint16_t index)
get section content pointer
Definition: ElfBinaries.h:358
Elf32_Ehdr Ehdr
ELF header.
Definition: ElfBinaries.h:68
Types::Word size
symbol size
Definition: ElfBinaries.h:642
Types::Size getSymbolsNum() const
get symbols number
Definition: ElfBinaries.h:219
SectionIndexMap sectionIndexMap
section's index map
Definition: ElfBinaries.h:115
Types::Shdr & getSectionHeader(uint16_t index)
get section header with specified index
Definition: ElfBinaries.h:191
create map of symbols
Definition: ElfBinaries.h:57
const ElfRegionContent * dataGen
content generator pointer
Definition: ElfBinaries.h:491
cxuint sectionId
section id (ELFSECTID_* or an extra section index)
Definition: ElfBinaries.h:464
static const cxbyte ELFCLASS
ELF class.
Definition: ElfBinaries.h:72
ElfSymbolTemplate< Elf32Types > ElfSymbol32
32-bit elf symbol
Definition: ElfBinaries.h:673
class ElfBinaryTemplate< Elf32Types > ElfBinary32
type for 32-bit ELF binary
Definition: ElfBinaries.h:380
ElfRegionTemplate(typename Types::Word _size, const ElfRegionContent *contentGen, typename Types::Word _align)
constructor for user region with content generator
Definition: ElfBinaries.h:512
function class that returns true if first C string is less than second
Definition: Utilities.h:298
Types::SectionFlags flags
section flags
Definition: ElfBinaries.h:496
SymbolIndexMap::const_iterator getDynSymbolIter(const char *name) const
get dynamic symbol iterator with specified name (requires dynamic symbol index map) ...
Definition: ElfBinaries.h:317
cxbyte * dynSymStringTable
pointer to dynamic symbol's string table
Definition: ElfBinaries.h:113
Array< std::pair< const char *, size_t > > SectionIndexMap
section index map
Definition: ElfBinaries.h:103
static const cxbyte ELFCLASS
ELF class.
Definition: ElfBinaries.h:88
ElfRegionTemplate(typename Types::Word _size, const ElfRegionContent *_data, typename Types::Word _align, const char *inName, uint32_t _type, typename Types::SectionFlags _flags, uint32_t _link=0, uint32_t _info=0, typename Types::Word _addrBase=0, typename Types::Word _entSize=0, bool _zeroOffset=false)
constructor for section with generator
Definition: ElfBinaries.h:545
Types::Sym & getDynSymbol(const char *name)
get dynamic symbol with specified name (requires dynamic symbol index map)
Definition: ElfBinaries.h:347
Types::Word value
symbol value
Definition: ElfBinaries.h:641
Elf32_Shdr Shdr
Section header.
Definition: ElfBinaries.h:69
const T * end() const
get iterator to after last element
Definition: Containers.h:250
SectionIndexMap::const_iterator getSectionIterEnd() const
get end iterator if section index map
Definition: ElfBinaries.h:276
class ElfBinaryGenTemplate< Elf64Types > ElfBinaryGen64
type for 64-bit ELF binary generator
Definition: ElfBinaries.h:750
Elf32_Phdr Phdr
program header
Definition: ElfBinaries.h:70
size_t Size
size used to return size value
Definition: ElfBinaries.h:81
bool operator!() const
returns true if object is uninitialized
Definition: ElfBinaries.h:160
uint8_t ULEV(const uint8_t &t)
convert from/to little endian value from unaligned memory
static ElfRegionTemplate dynsymSection()
get dynsym section
Definition: ElfBinaries.h:603
simple C-string container
Definition: CString.h:38
ELF 32-bit types.
Definition: ElfBinaries.h:79
containers and other utils for other libraries and programs
static const cxuint bitness
ELF bitness.
Definition: ElfBinaries.h:73
cxbyte * symbolTable
pointer to symbol table
Definition: ElfBinaries.h:112
uint64_t Word
word size in ELF
Definition: ElfBinaries.h:82
ElfRegionTemplate(typename Types::Word _size, const cxbyte *_data, typename Types::Word _align)
constructor for user region
Definition: ElfBinaries.h:505
ElfRegionTemplate(const BinSection &binSection, const uint16_t *builtinSections, cxuint maxBuiltinSection, cxuint startExtraIndex)
constructor for external section (BinSection)
Definition: ElfBinaries.h:562