libabigail
|
This contains the definitions of the ELF utilities for the dwarf reader. More...
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <limits.h>
#include <elfutils/libdwfl.h>
#include <sstream>
#include "abg-elf-helpers.h"
#include "abg-tools-utils.h"
Go to the source code of this file.
Namespaces | |
abigail | |
Toplevel namespace for libabigail. | |
Functions | |
bool | address_is_in_opd_section (Elf *elf_handle, Dwarf_Addr addr) |
Return true if an address is in the ".opd" section that is present on the ppc64 platform. More... | |
bool | address_is_in_section (Dwarf_Addr addr, Elf_Scn *section) |
Test if a given address is in a given section. More... | |
bool | architecture_is_arm32 (Elf *elf_handle) |
Test if the architecture of the current binary is arm32. More... | |
bool | architecture_is_arm64 (Elf *elf_handle) |
Test if the architecture of the current binary is arm64. More... | |
bool | architecture_is_big_endian (Elf *elf_handle) |
Test if the endianness of the current binary is Big Endian. More... | |
bool | architecture_is_ppc32 (Elf *elf_handle) |
Test if the architecture of the current binary is ppc32. More... | |
bool | architecture_is_ppc64 (Elf *elf_handle) |
Test if the architecture of the current binary is ppc64. More... | |
dwfl_sptr | create_new_dwfl_handle (Dwfl_Callbacks &cb) |
std::string | e_machine_to_string (GElf_Half e_machine) |
Convert the value of the e_machine field of GElf_Ehdr into a string. This is to get a string representing the architecture of the elf file at hand. More... | |
Elf_Scn * | find_bss_section (Elf *elf_handle) |
Find and return the .bss section. More... | |
Elf_Scn * | find_data1_section (Elf *elf_handle) |
Find and return the .data1 section. More... | |
Elf_Scn * | find_data_section (Elf *elf_handle) |
Find and return the .data section. More... | |
Elf_Scn * | find_dynsym_section (Elf *elf_handle) |
Find and return the .symtab section. More... | |
hash_table_kind | find_hash_table_section_index (Elf *elf_handle, size_t &ht_section_index, size_t &symtab_section_index) |
Get the offset offset of the hash table section. More... | |
Elf_Scn * | find_ksymtab_gpl_section (Elf *elf_handle) |
Return the __ksymtab_gpl section of a linux kernel ELF file (either a vmlinux binary or a kernel module). More... | |
Elf_Scn * | find_ksymtab_section (Elf *elf_handle) |
Return the __ksymtab section of a linux kernel ELF file (either a vmlinux binary or a kernel module). More... | |
Elf_Scn * | find_ksymtab_strings_section (Elf *elf_handle) |
Find the __ksymtab_strings section of a Linux kernel binary. More... | |
Elf_Scn * | find_opd_section (Elf *elf_handle) |
Return the "Official Procedure descriptors section." This section is named .opd, and is usually present only on PPC64 ELFv1 binaries. More... | |
Elf_Scn * | find_relocation_section (Elf *elf_handle, Elf_Scn *target_section) |
Return the .rel{a,} section corresponding to a given section. More... | |
Elf_Scn * | find_rodata_section (Elf *elf_handle) |
Find and return the .rodata section. More... | |
Elf_Scn * | find_section (Elf *elf_handle, const std::string &name, Elf64_Word section_type) |
Find and return a section by its name and its type. More... | |
Elf_Scn * | find_section (Elf *elf_handle, Elf64_Word section_type) |
Find and return a section by its type. More... | |
Elf_Scn * | find_section_by_name (Elf *elf_handle, const std::string &name) |
Find and return a section by its name. More... | |
Elf_Scn * | find_strtab_for_symtab_section (Elf *elf_handle, Elf_Scn *symtab_section) |
Return the string table used by the given symbol table. More... | |
Elf_Scn * | find_symbol_table_section (Elf *elf_handle) |
Find the symbol table. More... | |
bool | find_symbol_table_section_index (Elf *elf_handle, size_t &symtab_index) |
Find the index (in the section headers table) of the symbol table section. More... | |
Elf_Scn * | find_symtab_section (Elf *elf_handle) |
Find and return the .symtab section. More... | |
Elf_Scn * | find_text_section (Elf *elf_handle) |
Find and return the .text section. More... | |
unsigned char | get_architecture_word_size (Elf *elf_handle) |
Return the size of a word for the current architecture. More... | |
bool | get_binary_load_address (Elf *elf_handle, GElf_Addr &load_address) |
Get the address at which a given binary is loaded in memory. More... | |
bool | get_crc_for_symbol (Elf *elf_handle, GElf_Sym *crc_symbol, uint32_t &crc_value) |
Return the CRC from the "__crc_" symbol. More... | |
bool | get_soname_of_elf_file (const string &path, string &soname) |
Fetch the SONAME ELF property from an ELF binary file. More... | |
bool | get_symbol_versionning_sections (Elf *elf_handle, Elf_Scn *&versym_section, Elf_Scn *&verdef_section, Elf_Scn *&verneed_section) |
Return the SHT_GNU_versym, SHT_GNU_verdef and SHT_GNU_verneed sections that are involved in symbol versionning. More... | |
bool | get_version_definition_for_versym (Elf *elf_handle, GElf_Versym *versym, Elf_Scn *verdef_section, elf_symbol::version &version) |
Get the version definition (from the SHT_GNU_verdef section) of a given symbol represented by a pointer to GElf_Versym. More... | |
bool | get_version_for_symbol (Elf *elf_handle, size_t symbol_index, bool get_def_version, elf_symbol::version &version) |
Return the version for a symbol that is at a given index in its SHT_SYMTAB section. More... | |
bool | get_version_needed_for_versym (Elf *elf_handle, GElf_Versym *versym, Elf_Scn *verneed_section, elf_symbol::version &version) |
Get the version needed (from the SHT_GNU_verneed section) to resolve an undefined symbol represented by a pointer to GElf_Versym. More... | |
const Dwfl_Callbacks & | initialize_dwfl_callbacks (Dwfl_Callbacks &cb, char **debug_info_root_path) |
bool | is_dso (Elf *elf_handle) |
Test if the elf file being read is a dynamic shared / object. More... | |
bool | is_executable (Elf *elf_handle) |
Test if the elf file being read is an executable. More... | |
bool | is_linux_kernel (Elf *elf_handle) |
Test if the ELF binary denoted by a given ELF handle is a Linux Kernel binary (either vmlinux or a kernel module). More... | |
bool | is_linux_kernel_module (Elf *elf_handle) |
Test if the ELF binary denoted by a given ELF handle is a Linux Kernel Module. More... | |
bool | lookup_data_tag_from_dynamic_segment (Elf *elf, Elf64_Sxword data_tag, vector< string > &dt_tag_data) |
Get data tag information of an ELF file by looking up into its dynamic segment. More... | |
GElf_Addr | lookup_ppc64_elf_fn_entry_point_address (Elf *elf_handle, GElf_Addr fn_desc_address) |
Lookup the address of the function entry point that corresponds to the address of a given function descriptor. More... | |
GElf_Addr | maybe_adjust_et_rel_sym_addr_to_abs_addr (Elf *elf_handle, GElf_Sym *sym) |
Translate a section-relative symbol address (i.e, symbol value) into an absolute symbol address by adding the address of the section the symbol belongs to, to the address value. More... | |
template<typename T > | |
bool | read_int_from_array_of_bytes (const uint8_t *bytes, unsigned char number_of_bytes, bool is_big_endian, T &result) |
Read N bytes and convert their value into an integer type T. More... | |
bool | read_uint64_from_array_of_bytes (const uint8_t *bytes, bool is_big_endian, uint64_t &result) |
Read 8 bytes and convert their value into an uint64_t. More... | |
elf_symbol::binding | stb_to_elf_symbol_binding (unsigned char stb) |
Convert an elf symbol binding (given by the ELF{32,64}_ST_BIND macros) into an elf_symbol::binding value. More... | |
elf_symbol::type | stt_to_elf_symbol_type (unsigned char stt) |
Convert an elf symbol type (given by the ELF{32,64}_ST_TYPE macros) into an elf_symbol::type value. More... | |
elf_symbol::visibility | stv_to_elf_symbol_visibility (unsigned char stv) |
Convert an ELF symbol visiblity given by the symbols ->st_other data member as returned by the GELF_ST_VISIBILITY macro into a elf_symbol::visiblity value. More... | |
This contains the definitions of the ELF utilities for the dwarf reader.
Definition in file abg-elf-helpers.cc.
bool address_is_in_opd_section | ( | Elf * | elf_handle, |
Dwarf_Addr | addr | ||
) |
Return true if an address is in the ".opd" section that is present on the ppc64 platform.
addr | the address to consider. |
addr
designates a word that is in the ".opd" section. Definition at line 1377 of file abg-elf-helpers.cc.
bool abigail::elf_helpers::address_is_in_section | ( | Dwarf_Addr | addr, |
Elf_Scn * | section | ||
) |
Test if a given address is in a given section.
addr | the address to consider. |
section | the section to consider. |
addr
is in section section
. Definition at line 1355 of file abg-elf-helpers.cc.
bool architecture_is_arm32 | ( | Elf * | elf_handle | ) |
Test if the architecture of the current binary is arm32.
elf_handle | the ELF handle to consider. |
Definition at line 991 of file abg-elf-helpers.cc.
bool architecture_is_arm64 | ( | Elf * | elf_handle | ) |
Test if the architecture of the current binary is arm64.
elf_handle | the ELF handle to consider. |
Definition at line 1004 of file abg-elf-helpers.cc.
bool architecture_is_big_endian | ( | Elf * | elf_handle | ) |
Test if the endianness of the current binary is Big Endian.
https://en.wikipedia.org/wiki/Endianness.
elf_handle | the ELF handle to consider. |
Definition at line 1023 of file abg-elf-helpers.cc.
bool architecture_is_ppc32 | ( | Elf * | elf_handle | ) |
Test if the architecture of the current binary is ppc32.
elf_handle | the ELF handle to consider. |
Definition at line 978 of file abg-elf-helpers.cc.
bool architecture_is_ppc64 | ( | Elf * | elf_handle | ) |
Test if the architecture of the current binary is ppc64.
elf_handle | the ELF handle to consider. |
Definition at line 965 of file abg-elf-helpers.cc.
std::string e_machine_to_string | ( | GElf_Half | e_machine | ) |
Convert the value of the e_machine field of GElf_Ehdr into a string. This is to get a string representing the architecture of the elf file at hand.
e_machine | the value of GElf_Ehdr::e_machine. |
Definition at line 121 of file abg-elf-helpers.cc.
Elf_Scn * find_bss_section | ( | Elf * | elf_handle | ) |
Find and return the .bss section.
elf_handle. |
Definition at line 529 of file abg-elf-helpers.cc.
Elf_Scn * find_data1_section | ( | Elf * | elf_handle | ) |
Find and return the .data1 section.
elf_handle | the elf handle to use. |
Definition at line 556 of file abg-elf-helpers.cc.
Elf_Scn * find_data_section | ( | Elf * | elf_handle | ) |
Find and return the .data section.
elf_handle | the elf handle to use. |
Definition at line 547 of file abg-elf-helpers.cc.
Elf_Scn * find_dynsym_section | ( | Elf * | elf_handle | ) |
Find and return the .symtab section.
elf_handle | the elf handle to use. |
Definition at line 408 of file abg-elf-helpers.cc.
hash_table_kind find_hash_table_section_index | ( | Elf * | elf_handle, |
size_t & | ht_section_index, | ||
size_t & | symtab_section_index | ||
) |
Get the offset offset of the hash table section.
elf_handle | the elf handle to use. |
ht_section_offset | this is set to the resulting offset of the hash table section. This is set iff the function returns true. |
symtab_section_offset | the offset of the section of the symbol table the hash table refers to. |
Definition at line 479 of file abg-elf-helpers.cc.
Elf_Scn * find_ksymtab_gpl_section | ( | Elf * | elf_handle | ) |
Return the __ksymtab_gpl section of a linux kernel ELF file (either a vmlinux binary or a kernel module).
elf_handle | the elf handle to consider. |
Definition at line 635 of file abg-elf-helpers.cc.
Elf_Scn * find_ksymtab_section | ( | Elf * | elf_handle | ) |
Return the __ksymtab section of a linux kernel ELF file (either a vmlinux binary or a kernel module).
elf_handle | the elf handle to consider. |
Definition at line 625 of file abg-elf-helpers.cc.
Elf_Scn * find_ksymtab_strings_section | ( | Elf * | elf_handle | ) |
Find the __ksymtab_strings section of a Linux kernel binary.
elf_handle | the elf handle to use. |
elf_handle
, or nil if such a section could not be found. Definition at line 646 of file abg-elf-helpers.cc.
Elf_Scn * find_opd_section | ( | Elf * | elf_handle | ) |
Return the "Official Procedure descriptors section." This section is named .opd, and is usually present only on PPC64 ELFv1 binaries.
elf_handle | the elf handle to consider. |
Definition at line 567 of file abg-elf-helpers.cc.
Elf_Scn * find_relocation_section | ( | Elf * | elf_handle, |
Elf_Scn * | target_section | ||
) |
Return the .rel{a,} section corresponding to a given section.
elf_handle | the elf handle to consider. |
target_section | the section to search the relocation section for |
Definition at line 661 of file abg-elf-helpers.cc.
Elf_Scn * find_rodata_section | ( | Elf * | elf_handle | ) |
Find and return the .rodata section.
elf_handle. |
Definition at line 538 of file abg-elf-helpers.cc.
Elf_Scn * find_section | ( | Elf * | elf_handle, |
const std::string & | name, | ||
Elf64_Word | section_type | ||
) |
Find and return a section by its name and its type.
elf_handle | the elf handle to use. |
name | the name of the section. |
section_type | the type of the section. This is the Elf32_Shdr::sh_type (or Elf64_Shdr::sh_type) data member. Examples of values of this parameter are SHT_PROGBITS or SHT_NOBITS. |
Definition at line 345 of file abg-elf-helpers.cc.
Elf_Scn * find_section | ( | Elf * | elf_handle, |
Elf64_Word | section_type | ||
) |
Find and return a section by its type.
elf_handle | the elf handle to use. |
section_type | the type of the section. This is the Elf32_Shdr::sh_type (or Elf64_Shdr::sh_type) data member. Examples of values of this parameter are SHT_PROGBITS or SHT_NOBITS. |
Definition at line 378 of file abg-elf-helpers.cc.
Elf_Scn * find_section_by_name | ( | Elf * | elf_handle, |
const std::string & | name | ||
) |
Find and return a section by its name.
elf_handle | the elf handle to use. |
name | the section name. |
Definition at line 310 of file abg-elf-helpers.cc.
Elf_Scn * find_strtab_for_symtab_section | ( | Elf * | elf_handle, |
Elf_Scn * | symtab_section | ||
) |
Return the string table used by the given symbol table.
elf_handle | the elf handle to use. |
symtab_section | section containing a symbol table. |
Definition at line 694 of file abg-elf-helpers.cc.
Elf_Scn * find_symbol_table_section | ( | Elf * | elf_handle | ) |
Find the symbol table.
If we are looking at a relocatable or executable file, this function will return the .symtab symbol table (of type SHT_SYMTAB). But if we are looking at a DSO it returns the .dynsym symbol table (of type SHT_DYNSYM).
elf_handle | the elf handle to consider. |
symtab | the symbol table found. |
Definition at line 426 of file abg-elf-helpers.cc.
bool find_symbol_table_section_index | ( | Elf * | elf_handle, |
size_t & | symtab_index | ||
) |
Find the index (in the section headers table) of the symbol table section.
If we are looking at a relocatable or executable file, this function will return the index for the .symtab symbol table (of type SHT_SYMTAB). But if we are looking at a DSO it returns the index for the .dynsym symbol table (of type SHT_DYNSYM).
elf_handle | the elf handle to use. |
symtab_index | the index of the symbol_table, that was found. |
Definition at line 458 of file abg-elf-helpers.cc.
Elf_Scn * find_symtab_section | ( | Elf * | elf_handle | ) |
Find and return the .symtab section.
elf_handle | the elf handle to use. |
Definition at line 397 of file abg-elf-helpers.cc.
Elf_Scn * find_text_section | ( | Elf * | elf_handle | ) |
Find and return the .text section.
elf_handle | the elf handle to use. |
Definition at line 520 of file abg-elf-helpers.cc.
unsigned char get_architecture_word_size | ( | Elf * | elf_handle | ) |
Return the size of a word for the current architecture.
elf_handle | the ELF handle to consider. |
Definition at line 1267 of file abg-elf-helpers.cc.
bool get_binary_load_address | ( | Elf * | elf_handle, |
GElf_Addr & | load_address | ||
) |
Get the address at which a given binary is loaded in memory.
elf_handle | the elf handle for the binary to consider. |
load_address | the address where the binary is loaded. This is set by the function iff it returns true. |
load_address
to it. Definition at line 1225 of file abg-elf-helpers.cc.
bool get_crc_for_symbol | ( | Elf * | elf_handle, |
GElf_Sym * | crc_symbol, | ||
uint32_t & | crc_value | ||
) |
Return the CRC from the "__crc_" symbol.
elf_handle | the elf handle to use. |
crc_symbol | symbol containing CRC value. |
crc_value | the CRC found for crc_symbol . |
crc_symbol
. Definition at line 921 of file abg-elf-helpers.cc.
bool get_soname_of_elf_file | ( | const string & | path, |
string & | soname | ||
) |
Fetch the SONAME ELF property from an ELF binary file.
path | The path to the elf file to consider. |
soname | out parameter. Set to the SONAME property of the binary file, if it present in the ELF file. |
return false if an error occured while looking for the SONAME property in the binary, true otherwise.
Definition at line 1499 of file abg-elf-helpers.cc.
bool get_symbol_versionning_sections | ( | Elf * | elf_handle, |
Elf_Scn *& | versym_section, | ||
Elf_Scn *& | verdef_section, | ||
Elf_Scn *& | verneed_section | ||
) |
Return the SHT_GNU_versym, SHT_GNU_verdef and SHT_GNU_verneed sections that are involved in symbol versionning.
elf_handle | the elf handle to use. |
versym_section | the SHT_GNU_versym section found. If the section wasn't found, this is set to nil. |
verdef_section | the SHT_GNU_verdef section found. If the section wasn't found, this is set to nil. |
verneed_section | the SHT_GNU_verneed section found. If the section wasn't found, this is set to nil. |
Definition at line 586 of file abg-elf-helpers.cc.
bool get_version_definition_for_versym | ( | Elf * | elf_handle, |
GElf_Versym * | versym, | ||
Elf_Scn * | verdef_section, | ||
elf_symbol::version & | version | ||
) |
Get the version definition (from the SHT_GNU_verdef section) of a given symbol represented by a pointer to GElf_Versym.
elf_hande | the elf handle to use. |
versym | the symbol to get the version definition for. |
verdef_section | the SHT_GNU_verdef section. |
version | the resulting version definition. This is set iff the function returns true. |
Definition at line 723 of file abg-elf-helpers.cc.
bool get_version_for_symbol | ( | Elf * | elf_handle, |
size_t | symbol_index, | ||
bool | get_def_version, | ||
elf_symbol::version & | version | ||
) |
Return the version for a symbol that is at a given index in its SHT_SYMTAB section.
elf_handle | the elf handle to use. |
symbol_index | the index of the symbol to consider. |
get_def_version | if this is true, it means that that we want the version for a defined symbol; in that case, the version is looked for in a section of type SHT_GNU_verdef. Otherwise, if this parameter is false, this means that we want the version for an undefined symbol; in that case, the version is the needed one for the symbol to be resolved; so the version is looked fo in a section of type SHT_GNU_verneed. |
version | the version found for symbol at symbol_index . |
symbol_index
. Definition at line 857 of file abg-elf-helpers.cc.
bool get_version_needed_for_versym | ( | Elf * | elf_handle, |
GElf_Versym * | versym, | ||
Elf_Scn * | verneed_section, | ||
elf_symbol::version & | version | ||
) |
Get the version needed (from the SHT_GNU_verneed section) to resolve an undefined symbol represented by a pointer to GElf_Versym.
elf_hande | the elf handle to use. |
versym | the symbol to get the version definition for. |
verneed_section | the SHT_GNU_verneed section. |
version | the resulting version definition. This is set iff the function returns true. |
Definition at line 784 of file abg-elf-helpers.cc.
bool is_dso | ( | Elf * | elf_handle | ) |
Test if the elf file being read is a dynamic shared / object.
elf_handle | the ELF handle to consider. |
Definition at line 1300 of file abg-elf-helpers.cc.
bool is_executable | ( | Elf * | elf_handle | ) |
Test if the elf file being read is an executable.
elf_handle | the ELF handle to consider. |
Definition at line 1287 of file abg-elf-helpers.cc.
bool is_linux_kernel | ( | Elf * | elf_handle | ) |
Test if the ELF binary denoted by a given ELF handle is a Linux Kernel binary (either vmlinux or a kernel module).
elf_handle | the ELF handle to consider. |
elf_handle
is a Linux kernel binary Definition at line 1207 of file abg-elf-helpers.cc.
bool is_linux_kernel_module | ( | Elf * | elf_handle | ) |
Test if the ELF binary denoted by a given ELF handle is a Linux Kernel Module.
elf_handle | the ELF handle to consider. |
elf_handle
is a Linux kernel module. Definition at line 1191 of file abg-elf-helpers.cc.
bool lookup_data_tag_from_dynamic_segment | ( | Elf * | elf, |
Elf64_Sxword | data_tag, | ||
vector< string > & | dt_tag_data | ||
) |
Get data tag information of an ELF file by looking up into its dynamic segment.
elf | the elf handle to use for the query. |
dt_tag | data tag to look for in dynamic segment |
dt_tag_data | vector of found information for a given data_tag |
data_tag
was found Definition at line 1397 of file abg-elf-helpers.cc.
GElf_Addr lookup_ppc64_elf_fn_entry_point_address | ( | Elf * | elf_handle, |
GElf_Addr | fn_desc_address | ||
) |
Lookup the address of the function entry point that corresponds to the address of a given function descriptor.
On PPC64, a function pointer is the address of a function descriptor. Function descriptors are located in the .opd section. Each function descriptor is a triplet of three addresses, each one on 64 bits. Among those three address only the first one is of any interest to us: the address of the entry point of the function.
This function returns the address of the entry point of the function whose descriptor's address is given.
http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi.html#FUNC-DES
fn_desc_address | the address of the function descriptor to consider. |
fn_desc_address
. If there is no .opd section (e.g because we are not on ppc64) or more generally if the function descriptor could not be found then this function just returns the address of the fuction descriptor. Definition at line 1142 of file abg-elf-helpers.cc.
GElf_Addr maybe_adjust_et_rel_sym_addr_to_abs_addr | ( | Elf * | elf_handle, |
GElf_Sym * | sym | ||
) |
Translate a section-relative symbol address (i.e, symbol value) into an absolute symbol address by adding the address of the section the symbol belongs to, to the address value.
This is useful when looking at symbol values coming from relocatable files (of ET_REL kind). If the binary is not ET_REL, then the function does nothing and returns the input address unchanged.
elf_handle | the elf handle for the binary to consider. |
sym | the symbol whose address to possibly needs to be translated. |
sym
is from an ET_REL binary. Otherwise, return the address of sym
, unchanged. Definition at line 1325 of file abg-elf-helpers.cc.
bool abigail::elf_helpers::read_int_from_array_of_bytes | ( | const uint8_t * | bytes, |
unsigned char | number_of_bytes, | ||
bool | is_big_endian, | ||
T & | result | ||
) |
Read N bytes and convert their value into an integer type T.
Note that N cannot be bigger than 8 for now. The type passed needs to be at least of the size of number_of_bytes.
bytes | the array of bytes to read the next 8 bytes from. Note that this array must be at least 8 bytes long. |
number_of_bytes | the number of bytes to read. This number cannot be bigger than 8. |
is_big_endian | if true, read the 8 bytes in Big Endian mode, otherwise, read them in Little Endian. |
result | where to store the resuting integer that was read. |
true | if the 8 bytes could be read, false otherwise. |
Definition at line 1056 of file abg-elf-helpers.cc.
bool abigail::elf_helpers::read_uint64_from_array_of_bytes | ( | const uint8_t * | bytes, |
bool | is_big_endian, | ||
uint64_t & | result | ||
) |
Read 8 bytes and convert their value into an uint64_t.
bytes | the array of bytes to read the next 8 bytes from. Note that this array must be at least 8 bytes long. |
result | where to store the resuting uint64_t that was read. |
is_big_endian | if true, read the 8 bytes in Big Endian mode, otherwise, read them in Little Endian. |
true | if the 8 bytes could be read, false otherwise. |
Definition at line 1108 of file abg-elf-helpers.cc.
elf_symbol::binding stb_to_elf_symbol_binding | ( | unsigned char | stb | ) |
Convert an elf symbol binding (given by the ELF{32,64}_ST_BIND macros) into an elf_symbol::binding value.
Note that this function aborts when given an unexpected value.
the | symbol binding value to convert. |
Definition at line 70 of file abg-elf-helpers.cc.
elf_symbol::type stt_to_elf_symbol_type | ( | unsigned char | stt | ) |
Convert an elf symbol type (given by the ELF{32,64}_ST_TYPE macros) into an elf_symbol::type value.
Note that this function aborts when given an unexpected value.
the | symbol type value to convert. |
Definition at line 34 of file abg-elf-helpers.cc.
elf_symbol::visibility stv_to_elf_symbol_visibility | ( | unsigned char | stv | ) |
Convert an ELF symbol visiblity given by the symbols ->st_other data member as returned by the GELF_ST_VISIBILITY macro into a elf_symbol::visiblity value.
stv | the value of the ->st_other data member of the ELF symbol. |
Definition at line 96 of file abg-elf-helpers.cc.