Module goblin::elf::symver[][src]

Expand description

Symbol versioning

Implementation of the GNU symbol versioning extension according to LSB Core Specification - Symbol Versioning.

Examples

List the dependencies of an ELF file that have version needed information along with the versions needed for each dependency.

use goblin::error::Error;

pub fn show_verneed(bytes: &[u8]) -> Result<(), Error> {
    let binary = goblin::elf::Elf::parse(&bytes)?;

    if let Some(verneed) = binary.verneed {
        for need_file in verneed.iter() {
            println!(
                "Depend on {:?} with version(s):",
                binary.dynstrtab.get_at(need_file.vn_file)
            );
            for need_ver in need_file.iter() {
                println!("{:?}", binary.dynstrtab.get_at(need_ver.vna_name));
            }
        }
    }

    Ok(())
}

List the version defined information of an ELF file, effectively listing the version defined by this ELF file.

use goblin::error::Error;

pub fn show_verdef(bytes: &[u8]) -> Result<(), Error> {
    let binary = goblin::elf::Elf::parse(&bytes)?;

    if let Some(verdef) = &binary.verdef {
        for def in verdef.iter() {
            for (n, aux) in def.iter().enumerate() {
                let name = binary.dynstrtab.get_at(aux.vda_name);
                match n {
                    0 => print!("Name: {:?}", name),
                    1 => print!(" Parent: {:?}", name),
                    _ => print!(", {:?}", name),
                }
            }
            print!("\n");
        }
    }

    Ok(())
}

Structs

Iterator over the Verdaux entries for an specific Verdef entry.

An ELF Version Definition entry .

Iterator over the Verdef entries from the SHT_GNU_VERDEF section.

Helper struct to iterate over Version Definition and Version Definition Auxiliary entries.

An ELF Version Need Auxiliary entry.

Iterator over the Vernaux entries for an specific Verneed entry.

An ELF Version Need entry .

Iterator over the Verneed entries from the SHT_GNU_VERNEED section.

Helper struct to iterate over Version Needed and Version Needed Auxiliary entries.

An ELF Symbol Version entry.

Iterator over the Versym entries from the SHT_GNU_VERSYM section.

Helper struct to iterate over Symbol Version entries.

Constants

Bitmask to check hidden bit, see Versym::is_hidden.

Bitmask to get version information, see Versym::version.

Bitmask to check base flag in Verdef::vd_flags.

Bitmask to check info flag in Verdef::vd_flags.

Bitmask to check weak flag in Verdef::vd_flags.

Constant describing a global symbol, see Versym::is_global.

Constant describing a local symbol, see Versym::is_local.