LIEF: Library to Instrument Executable Formats Version 1.0.0
Loading...
Searching...
No Matches
LIEF::ELF::SymbolVersionRequirement Class Reference

Class which represents an entry in the DT_VERNEED or .gnu.version_r table. More...

#include <SymbolVersionRequirement.hpp>

Inheritance diagram for LIEF::ELF::SymbolVersionRequirement:
Collaboration diagram for LIEF::ELF::SymbolVersionRequirement:

Public Types

using aux_requirement_t
using it_aux_requirement
using it_const_aux_requirement
Public Types inherited from LIEF::Object
template<class T>
using output_t = add_pointer_t<decay_t<T>>
template<class T>
using output_const_t = add_pointer_t<add_const_t<decay_t<T>>>

Public Member Functions

 SymbolVersionRequirement ()=default
 SymbolVersionRequirement (const details::Elf64_Verneed &header)
 SymbolVersionRequirement (const details::Elf32_Verneed &header)
 ~SymbolVersionRequirement () override=default
SymbolVersionRequirementoperator= (SymbolVersionRequirement other)
 SymbolVersionRequirement (const SymbolVersionRequirement &other)
void swap (SymbolVersionRequirement &other)
uint16_t version () const
 Version revision.
size_t cnt () const
 Number of auxiliary entries.
it_aux_requirement auxiliary_symbols ()
 Auxiliary entries as an iterator over SymbolVersionAuxRequirement.
it_const_aux_requirement auxiliary_symbols () const
const std::string & name () const
 Return the library name associated with this requirement (e.g. libc.so.6).
void version (uint16_t version)
void name (const std::string &name)
SymbolVersionAuxRequirementadd_aux_requirement (const SymbolVersionAuxRequirement &aux_requirement)
 Add a version auxiliary requirement to the existing list.
const SymbolVersionAuxRequirementfind_aux (const std::string &name) const
 Try to find the SymbolVersionAuxRequirement with the given name (e.g. GLIBC_2.27).
SymbolVersionAuxRequirementfind_aux (const std::string &name)
bool remove_aux_requirement (const std::string &name)
 Try to remove the auxiliary requirement symbol with the given name. The function returns true if the operation succeed, false otherwise.
bool remove_aux_requirement (SymbolVersionAuxRequirement &aux)
 Try to remove the given auxiliary requirement symbol. The function returns true if the operation succeed, false otherwise.
void accept (Visitor &visitor) const override
Public Member Functions inherited from LIEF::Object
 Object ()
 Object (const Object &other)
Objectoperator= (const Object &other)
 Object (Object &&other) noexcept=default
Objectoperator= (Object &&other) noexcept=default
template<class T>
output_t< T > as ()
template<class T>
output_const_t< T > as () const
virtual bool operator== (const Object &other) const
virtual bool operator!= (const Object &other) const
virtual ~Object ()

Detailed Description

Class which represents an entry in the DT_VERNEED or .gnu.version_r table.

Member Typedef Documentation

◆ aux_requirement_t

Initial value:
std::vector<std::unique_ptr<SymbolVersionAuxRequirement>>

◆ it_aux_requirement

Initial value:
Iterator which returns reference on container's values.
Definition iterators.hpp:46

◆ it_const_aux_requirement

Initial value:
Definition SymbolVersionAuxRequirement.hpp:35
std::vector< std::unique_ptr< SymbolVersionAuxRequirement > > aux_requirement_t
Definition SymbolVersionRequirement.hpp:44
ref_iterator< CT, U, typename decay_t< CT >::const_iterator > const_ref_iterator
Iterator which return const ref on container's values.
Definition iterators.hpp:269

Constructor & Destructor Documentation

◆ SymbolVersionRequirement() [1/4]

LIEF::ELF::SymbolVersionRequirement::SymbolVersionRequirement ( )
default

◆ SymbolVersionRequirement() [2/4]

LIEF::ELF::SymbolVersionRequirement::SymbolVersionRequirement ( const details::Elf64_Verneed & header)

◆ SymbolVersionRequirement() [3/4]

LIEF::ELF::SymbolVersionRequirement::SymbolVersionRequirement ( const details::Elf32_Verneed & header)

◆ ~SymbolVersionRequirement()

LIEF::ELF::SymbolVersionRequirement::~SymbolVersionRequirement ( )
overridedefault

◆ SymbolVersionRequirement() [4/4]

LIEF::ELF::SymbolVersionRequirement::SymbolVersionRequirement ( const SymbolVersionRequirement & other)

Member Function Documentation

◆ accept()

void LIEF::ELF::SymbolVersionRequirement::accept ( Visitor & visitor) const
overridevirtual

Implements LIEF::Object.

◆ add_aux_requirement()

SymbolVersionAuxRequirement & LIEF::ELF::SymbolVersionRequirement::add_aux_requirement ( const SymbolVersionAuxRequirement & aux_requirement)

Add a version auxiliary requirement to the existing list.

◆ auxiliary_symbols() [1/2]

it_aux_requirement LIEF::ELF::SymbolVersionRequirement::auxiliary_symbols ( )
inline

Auxiliary entries as an iterator over SymbolVersionAuxRequirement.

◆ auxiliary_symbols() [2/2]

it_const_aux_requirement LIEF::ELF::SymbolVersionRequirement::auxiliary_symbols ( ) const
inline

◆ cnt()

size_t LIEF::ELF::SymbolVersionRequirement::cnt ( ) const
inline

Number of auxiliary entries.

◆ find_aux() [1/2]

SymbolVersionAuxRequirement * LIEF::ELF::SymbolVersionRequirement::find_aux ( const std::string & name)
inline

◆ find_aux() [2/2]

const SymbolVersionAuxRequirement * LIEF::ELF::SymbolVersionRequirement::find_aux ( const std::string & name) const

Try to find the SymbolVersionAuxRequirement with the given name (e.g. GLIBC_2.27).

References name().

Referenced by remove_aux_requirement().

◆ name() [1/2]

const std::string & LIEF::ELF::SymbolVersionRequirement::name ( ) const
inline

Return the library name associated with this requirement (e.g. libc.so.6).

Referenced by find_aux(), find_aux(), name(), operator<<, and remove_aux_requirement().

◆ name() [2/2]

void LIEF::ELF::SymbolVersionRequirement::name ( const std::string & name)
inline

References name().

◆ operator=()

SymbolVersionRequirement & LIEF::ELF::SymbolVersionRequirement::operator= ( SymbolVersionRequirement other)

◆ remove_aux_requirement() [1/2]

bool LIEF::ELF::SymbolVersionRequirement::remove_aux_requirement ( const std::string & name)
inline

Try to remove the auxiliary requirement symbol with the given name. The function returns true if the operation succeed, false otherwise.

Warning
this function invalidates all the references (pointers) of SymbolVersionAuxRequirement. Therefore, the user is responsible to ensure that the auxiliary requirement is no longer used in the ELF binary (e.g. in SymbolVersion)

References find_aux(), name(), and remove_aux_requirement().

Referenced by remove_aux_requirement().

◆ remove_aux_requirement() [2/2]

bool LIEF::ELF::SymbolVersionRequirement::remove_aux_requirement ( SymbolVersionAuxRequirement & aux)

Try to remove the given auxiliary requirement symbol. The function returns true if the operation succeed, false otherwise.

Warning
this function invalidates all the references (pointers) of SymbolVersionAuxRequirement. Therefore, the user is responsible to ensure that the auxiliary requirement is no longer used in the ELF binary (e.g. in SymbolVersion)

◆ swap()

void LIEF::ELF::SymbolVersionRequirement::swap ( SymbolVersionRequirement & other)

◆ version() [1/2]

uint16_t LIEF::ELF::SymbolVersionRequirement::version ( ) const
inline

Version revision.

This field should always have the value 1. It will be changed if the versioning implementation has to be changed in an incompatible way.

Referenced by operator<<, and version().

◆ version() [2/2]

void LIEF::ELF::SymbolVersionRequirement::version ( uint16_t version)
inline

References version().


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