LIEF: Library to Instrument Executable Formats Version 0.17.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 = std::vector<std::unique_ptr<SymbolVersionAuxRequirement>>
using it_aux_requirement = ref_iterator<aux_requirement_t&, SymbolVersionAuxRequirement*>
using it_const_aux_requirement = const_ref_iterator<const aux_requirement_t&, const SymbolVersionAuxRequirement*>
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

◆ it_aux_requirement

◆ it_const_aux_requirement

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.

References LIEF_API.

◆ 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: