ELFTC_BFD_FIND_TARGET(3)

NAME
elftc_bfd_find_target, elftc_bfd_target_byteorder, elftc_bfd_target_class, elftc_bfd_target_flavor, elftc_bfd_target_machine - binary object descriptor handling

LIBRARY
libelftc

SYNOPSIS
#include <libelftc.h>
struct Elftc_Bfd_Target;
Elftc_Bfd_Target *
elftc_bfd_find_target(const char *target_name);
unsigned int
elftc_bfd_target_class(Elftc_Bfd_Target *target);
unsigned int
elftc_bfd_target_byteorder(Elftc_Bfd_Target *target);
Elftc_Bfd_Target_Flavor
elftc_bfd_target_flavor(Elftc_Bfd_Target *target);
unsigned int
elftc_bfd_target_machine(Elftc_Bfd_Target *target);
unsigned int
elftc_bfd_target_osabi(Elftc_Bfd_Target *target);

DESCRIPTION
Function elftc_bfd_find_target() locates a binary object descriptor corresponding to the descriptor name in argument target_name. Binary object descriptors encapsulate properties of an object format such as its file representation, ELF class, and byte endianness.

Known descriptor names and their properties include:
Name | Object Format | Byte Order | Bit Width
binary | Binary | - | -
efi-app-ia32 | PE | LSB | 32
efi-app-x86_64 | PE | LSB | 64
elf32-avr | ELF | LSB | 32
elf32-big | ELF | MSB | 32
elf32-bigarm | ELF | MSB | 32
elf32-bigmips | ELF | MSB | 32
elf32-i386 | ELF | LSB | 32
elf32-i386-freebsd | ELF | LSB | 32
elf32-ia64-big | ELF | MSB | 32
elf32-little | ELF | LSB | 32
elf32-littlearm | ELF | LSB | 32
elf32-littlemips | ELF | LSB | 32
elf32-powerpc | ELF | MSB | 32
elf32-powerpc-freebsd | ELF | MSB | 32
elf32-powerpcle | ELF | LSB | 32
elf32-riscv | ELF | LSB | 32
elf64-riscv | ELF | LSB | 64
elf64-riscv-freebsd | ELF | LSB | 64
elf32-sh | ELF | MSB | 32
elf32-shl | ELF | LSB | 32
elf32-sh-nbsd | ELF | MSB | 32
elf32-shl-nbsd | ELF | LSB | 32
elf32-shbig-linux | ELF | MSB | 32
elf32-shl-linux | ELF | LSB | 32
elf32-sparc | ELF | MSB | 32
elf32-tradbigmips | ELF | MSB | 32
elf32-tradlittlemips | ELF | LSB | 32
elf64-alpha | ELF | LSB | 64
elf64-alpha-freebsd | ELF | LSB | 64
elf64-big | ELF | MSB | 64
elf64-bigmips | ELF | MSB | 64
elf64-ia64-big | ELF | MSB | 64
elf64-ia64-little | ELF | LSB | 64
elf64-little | ELF | LSB | 64
elf64-littleaarch64 | ELF | LSB | 64
elf64-littlemips | ELF | LSB | 64
elf64-powerpc | ELF | MSB | 64
elf64-powerpc-freebsd | ELF | MSB | 64
elf64-powerpcle | ELF | LSB | 64
elf64-sh64 | ELF | MSB | 64
elf64-sh64l | ELF | LSB | 64
elf64-sh64-nbsd | ELF | MSB | 64
elf64-sh64l-nbsd | ELF | LSB | 64
elf64-sh64big-linux | ELF | MSB | 64
elf64-sh64-linux | ELF | LSB | 64
elf64-sparc | ELF | MSB | 64
elf64-sparc-freebsd | ELF | MSB | 64
elf64-tradbigmips | ELF | MSB | 64
elf64-tradlittlemips | ELF | LSB | 64
elf64-x86-64 | ELF | LSB | 64
elf64-x86-64-freebsd | ELF | LSB | 64
ihex | IHEX | - | -
pei-i386 | PE | LSB | 32
pei-x86-64 | PE | LSB | 64
srec | SREC | - | -
symbolsrec | SREC | - | -

Function elftc_bfd_target_byteorder() returns the ELF byte order associated with target descriptor target.

Function elftc_bfd_target_class() returns the ELF class associated with target descriptor target.

Function elftc_bfd_target_flavor() returns the object format associated with target descriptor target. The known object formats are:
ETF_ELF
    An ELF object.
ETF_BINARY
    Raw binary.
ETF_IHEX
    An object encoded in Intel hex format.
ETF_NONE
    An unknown object format.
ETF_SREC
    An object encoded as S-records.

RETURN VALUES
Function elftc_bfd_find_target() returns a valid pointer to an opaque binary target descriptor if successful, or NULL in case of an error.

Function elftc_bfd_target_byteorder() returns the ELF byte order associated with the target descriptor; one of ELFDATA2MSB or ELFDATA2LSB.

Function elftc_bfd_target_class() returns the ELF class associated with the target descriptor; one of ELFCLASS32 or ELFCLASS64.

Function elftc_bfd_target_machine() returns the ELF architecture associated with the target descriptor.

Function elftc_bfd_target_flavor() returns one of ETF_BINARY, ETF_ELF, ETF_IHEX or ETF_SREC if successful or ETF_NONE in case of error.

EXAMPLES
To return descriptor information associated with target name “elf64-big” use:

    struct Elftc_Bfd_Target *t;
    if ((t = elftc_bfd_find_target("elf64-big")) == NULL)
    	errx(EXIT_FAILURE, "Cannot find target descriptor");
    printf("Class: %s\n", elftc_bfd_target_class(t) == ELFCLASS32 ?
        "ELFCLASS32" : "ELFCLASS64");
    printf("Byteorder: %s\n",
        elftc_bfd_target_byteorder(t) == ELFDATA2LSB ? "LSB" : "MSB");
    printf("Flavor: %d\n", elftc_bfd_target_flavor(t));

SEE ALSO
elf(3)