Zephyr API Documentation 3.7.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches

Data Structures

struct  elf32_ehdr
 ELF Header(32-bit) More...
 
struct  elf64_ehdr
 ELF Header(64-bit) More...
 
struct  elf32_shdr
 Section Header(32-bit) More...
 
struct  elf64_shdr
 Section Header(64-bit) More...
 
struct  elf32_sym
 Symbol table entry(32-bit) More...
 
struct  elf64_sym
 Symbol table entry(64-bit) More...
 
struct  elf32_rel
 Relocation entry for 32-bit ELFs. More...
 
struct  elf32_rela
 Relocation entry for 32-bit ELFs with addend. More...
 
struct  elf64_rel
 Relocation entry for 64-bit ELFs. More...
 
struct  elf64_rela
 Relocation entry for 64-bit ELFs with addend. More...
 

Macros

#define EI_NIDENT   16
 ELF identifier block.
 
#define ET_REL   1
 Relocatable (unlinked) ELF.
 
#define ET_EXEC   2
 Executable (without PIC/PIE) ELF.
 
#define ET_DYN   3
 Dynamic (executable with PIC/PIE or shared lib) ELF.
 
#define ET_CORE   4
 Core Dump.
 
#define SHT_NULL   0x0
 ELF section types.
 
#define SHT_PROGBITS   0x1
 Program data.
 
#define SHT_SYMTAB   0x2
 Symbol table.
 
#define SHT_STRTAB   0x3
 String table.
 
#define SHT_RELA   0x4
 Relocation entries with addends.
 
#define SHT_NOBITS   0x8
 Program data with no file image.
 
#define SHT_REL   0x9
 Relocation entries without addends.
 
#define SHT_DYNSYM   0xB
 Dynamic linking symbol table.
 
#define SHT_INIT_ARRAY   0xe
 Array of pointers to init functions.
 
#define SHT_FINI_ARRAY   0xf
 Array of pointers to termination functions.
 
#define SHT_PREINIT_ARRAY   0x10
 Array of pointers to early init functions.
 
#define SHF_WRITE   0x1
 ELF section flags.
 
#define SHF_ALLOC   0x2
 Section is present in memory.
 
#define SHF_EXECINSTR   0x4
 Section contains executable instructions.
 
#define SHF_BASIC_TYPE_MASK   (SHF_WRITE | SHF_ALLOC | SHF_EXECINSTR)
 
#define SHN_UNDEF   0
 ELF section numbers.
 
#define SHN_LORESERVE   0xff00
 Start of reserved section numbers.
 
#define SHN_ABS   0xfff1
 Special value for absolute symbols.
 
#define SHN_COMMON   0xfff2
 Common block.
 
#define SHN_HIRESERVE   0xffff
 End of reserved section numbers.
 
#define STT_NOTYPE   0
 Symbol table entry types.
 
#define STT_OBJECT   1
 Data or object.
 
#define STT_FUNC   2
 Function.
 
#define STT_SECTION   3
 Section.
 
#define STT_FILE   4
 File name.
 
#define STT_COMMON   5
 Common block.
 
#define STT_LOOS   10
 Start of OS specific.
 
#define STT_HIOS   12
 End of OS specific.
 
#define STT_LOPROC   13
 Start of processor specific.
 
#define STT_HIPROC   15
 End of processor specific.
 
#define STB_LOCAL   0
 Symbol table entry bindings.
 
#define STB_GLOBAL   1
 Global symbol.
 
#define STB_WEAK   2
 Weak symbol.
 
#define STB_LOOS   10
 Start of OS specific.
 
#define STB_HIOS   12
 End of OS specific.
 
#define STB_LOPROC   13
 Start of processor specific.
 
#define STB_HIPROC   15
 End of processor specific.
 
#define ELF32_ST_BIND(i)
 Symbol binding from 32bit st_info.
 
#define ELF32_ST_TYPE(i)
 Symbol type from 32bit st_info.
 
#define ELF64_ST_BIND(i)
 Symbol binding from 32bit st_info.
 
#define ELF64_ST_TYPE(i)
 Symbol type from 32bit st_info.
 
#define ELF32_R_SYM(i)
 Relocation symbol index from r_info.
 
#define ELF32_R_TYPE(i)
 Relocation type from r_info.
 
#define ELF64_R_SYM(i)
 Relocation symbol from r_info.
 
#define ELF64_R_TYPE(i)
 Relocation type from r_info.
 
#define ELF_R_SYM   ELF64_R_SYM
 Machine sized macro alias for obtaining a relocation symbol.
 
#define ELF_R_TYPE   ELF64_R_TYPE
 Machine sized macro alias for obtaining a relocation type.
 
#define ELF_ST_BIND   ELF64_ST_BIND
 Machine sized macro alias for obtaining a symbol bind.
 
#define ELF_ST_TYPE   ELF64_ST_TYPE
 Machine sized macro alias for obtaining a symbol type.
 

Typedefs

typedef uint32_t elf32_addr
 Unsigned program address.
 
typedef uint16_t elf32_half
 Unsigned medium integer.
 
typedef uint32_t elf32_off
 Unsigned file offset.
 
typedef int32_t elf32_sword
 Signed integer.
 
typedef uint32_t elf32_word
 Unsigned integer.
 
typedef uint64_t elf64_addr
 Unsigned program address.
 
typedef uint16_t elf64_half
 Unsigned medium integer.
 
typedef uint64_t elf64_off
 Unsigned file offset.
 
typedef int32_t elf64_sword
 Signed integer.
 
typedef uint32_t elf64_word
 Unsigned integer.
 
typedef int64_t elf64_sxword
 Signed long integer.
 
typedef uint64_t elf64_xword
 Unsigned long integer.
 
typedef struct elf64_ehdr elf_ehdr_t
 Relocation names (should be moved to arch-specific files)
 
typedef struct elf64_shdr elf_shdr_t
 Machine sized section header structure.
 
typedef struct elf64_phdr elf_phdr_t
 Machine sized program header structure.
 
typedef elf64_addr elf_addr
 Machine sized program address.
 
typedef elf64_half elf_half
 Machine sized small integer.
 
typedef elf64_xword elf_word
 Machine sized integer.
 
typedef struct elf64_rel elf_rel_t
 Machine sized relocation struct.
 
typedef struct elf64_rela elf_rela_t
 Machine sized relocation struct with addend.
 
typedef struct elf64_sym elf_sym_t
 Machine sized symbol struct.
 

Detailed Description

Macro Definition Documentation

◆ EI_NIDENT

#define EI_NIDENT   16

#include <zephyr/llext/elf.h>

ELF identifier block.

4 byte magic (.ELF) 1 byte class (Invalid, 32 bit, 64 bit) 1 byte endianness (Invalid, LSB, MSB) 1 byte version (1) 1 byte OS ABI (0 None, 1 HP-UX, 2 NetBSD, 3 Linux) 1 byte ABI (0) 7 bytes padding

◆ ELF32_R_SYM

#define ELF32_R_SYM ( i)

#include <zephyr/llext/elf.h>

Value:
((i) >> 8)

Relocation symbol index from r_info.

Parameters
iValue of r_info

◆ ELF32_R_TYPE

#define ELF32_R_TYPE ( i)

#include <zephyr/llext/elf.h>

Value:
((i) & 0xff)

Relocation type from r_info.

Parameters
iValue of r_info

◆ ELF32_ST_BIND

#define ELF32_ST_BIND ( i)

#include <zephyr/llext/elf.h>

Value:
((i) >> 4)

Symbol binding from 32bit st_info.

Parameters
iValue of st_info

◆ ELF32_ST_TYPE

#define ELF32_ST_TYPE ( i)

#include <zephyr/llext/elf.h>

Value:
((i) & 0xf)

Symbol type from 32bit st_info.

Parameters
iValue of st_info

◆ ELF64_R_SYM

#define ELF64_R_SYM ( i)

#include <zephyr/llext/elf.h>

Value:
((i) >> 32)

Relocation symbol from r_info.

Parameters
iValue of r_info

◆ ELF64_R_TYPE

#define ELF64_R_TYPE ( i)

#include <zephyr/llext/elf.h>

Value:
((i) & 0xffffffff)

Relocation type from r_info.

Parameters
iValue of r_info

◆ ELF64_ST_BIND

#define ELF64_ST_BIND ( i)

#include <zephyr/llext/elf.h>

Value:
((i) >> 4)

Symbol binding from 32bit st_info.

Parameters
iValue of st_info

◆ ELF64_ST_TYPE

#define ELF64_ST_TYPE ( i)

#include <zephyr/llext/elf.h>

Value:
((i) & 0xf)

Symbol type from 32bit st_info.

Parameters
iValue of st_info

◆ ELF_R_SYM

#define ELF_R_SYM   ELF64_R_SYM

#include <zephyr/llext/elf.h>

Machine sized macro alias for obtaining a relocation symbol.

◆ ELF_R_TYPE

#define ELF_R_TYPE   ELF64_R_TYPE

#include <zephyr/llext/elf.h>

Machine sized macro alias for obtaining a relocation type.

◆ ELF_ST_BIND

#define ELF_ST_BIND   ELF64_ST_BIND

#include <zephyr/llext/elf.h>

Machine sized macro alias for obtaining a symbol bind.

◆ ELF_ST_TYPE

#define ELF_ST_TYPE   ELF64_ST_TYPE

#include <zephyr/llext/elf.h>

Machine sized macro alias for obtaining a symbol type.

◆ ET_CORE

#define ET_CORE   4

#include <zephyr/llext/elf.h>

Core Dump.

◆ ET_DYN

#define ET_DYN   3

#include <zephyr/llext/elf.h>

Dynamic (executable with PIC/PIE or shared lib) ELF.

◆ ET_EXEC

#define ET_EXEC   2

#include <zephyr/llext/elf.h>

Executable (without PIC/PIE) ELF.

◆ ET_REL

#define ET_REL   1

#include <zephyr/llext/elf.h>

Relocatable (unlinked) ELF.

◆ SHF_ALLOC

#define SHF_ALLOC   0x2

#include <zephyr/llext/elf.h>

Section is present in memory.

◆ SHF_BASIC_TYPE_MASK

#define SHF_BASIC_TYPE_MASK   (SHF_WRITE | SHF_ALLOC | SHF_EXECINSTR)

#include <zephyr/llext/elf.h>

◆ SHF_EXECINSTR

#define SHF_EXECINSTR   0x4

#include <zephyr/llext/elf.h>

Section contains executable instructions.

◆ SHF_WRITE

#define SHF_WRITE   0x1

#include <zephyr/llext/elf.h>

ELF section flags.

Section is writable

◆ SHN_ABS

#define SHN_ABS   0xfff1

#include <zephyr/llext/elf.h>

Special value for absolute symbols.

◆ SHN_COMMON

#define SHN_COMMON   0xfff2

#include <zephyr/llext/elf.h>

Common block.

◆ SHN_HIRESERVE

#define SHN_HIRESERVE   0xffff

#include <zephyr/llext/elf.h>

End of reserved section numbers.

◆ SHN_LORESERVE

#define SHN_LORESERVE   0xff00

#include <zephyr/llext/elf.h>

Start of reserved section numbers.

◆ SHN_UNDEF

#define SHN_UNDEF   0

#include <zephyr/llext/elf.h>

ELF section numbers.

Undefined section

◆ SHT_DYNSYM

#define SHT_DYNSYM   0xB

#include <zephyr/llext/elf.h>

Dynamic linking symbol table.

◆ SHT_FINI_ARRAY

#define SHT_FINI_ARRAY   0xf

#include <zephyr/llext/elf.h>

Array of pointers to termination functions.

◆ SHT_INIT_ARRAY

#define SHT_INIT_ARRAY   0xe

#include <zephyr/llext/elf.h>

Array of pointers to init functions.

◆ SHT_NOBITS

#define SHT_NOBITS   0x8

#include <zephyr/llext/elf.h>

Program data with no file image.

◆ SHT_NULL

#define SHT_NULL   0x0

#include <zephyr/llext/elf.h>

ELF section types.

Unused section

◆ SHT_PREINIT_ARRAY

#define SHT_PREINIT_ARRAY   0x10

#include <zephyr/llext/elf.h>

Array of pointers to early init functions.

◆ SHT_PROGBITS

#define SHT_PROGBITS   0x1

#include <zephyr/llext/elf.h>

Program data.

◆ SHT_REL

#define SHT_REL   0x9

#include <zephyr/llext/elf.h>

Relocation entries without addends.

◆ SHT_RELA

#define SHT_RELA   0x4

#include <zephyr/llext/elf.h>

Relocation entries with addends.

◆ SHT_STRTAB

#define SHT_STRTAB   0x3

#include <zephyr/llext/elf.h>

String table.

◆ SHT_SYMTAB

#define SHT_SYMTAB   0x2

#include <zephyr/llext/elf.h>

Symbol table.

◆ STB_GLOBAL

#define STB_GLOBAL   1

#include <zephyr/llext/elf.h>

Global symbol.

◆ STB_HIOS

#define STB_HIOS   12

#include <zephyr/llext/elf.h>

End of OS specific.

◆ STB_HIPROC

#define STB_HIPROC   15

#include <zephyr/llext/elf.h>

End of processor specific.

◆ STB_LOCAL

#define STB_LOCAL   0

#include <zephyr/llext/elf.h>

Symbol table entry bindings.

Local symbol

◆ STB_LOOS

#define STB_LOOS   10

#include <zephyr/llext/elf.h>

Start of OS specific.

◆ STB_LOPROC

#define STB_LOPROC   13

#include <zephyr/llext/elf.h>

Start of processor specific.

◆ STB_WEAK

#define STB_WEAK   2

#include <zephyr/llext/elf.h>

Weak symbol.

◆ STT_COMMON

#define STT_COMMON   5

#include <zephyr/llext/elf.h>

Common block.

◆ STT_FILE

#define STT_FILE   4

#include <zephyr/llext/elf.h>

File name.

◆ STT_FUNC

#define STT_FUNC   2

#include <zephyr/llext/elf.h>

Function.

◆ STT_HIOS

#define STT_HIOS   12

#include <zephyr/llext/elf.h>

End of OS specific.

◆ STT_HIPROC

#define STT_HIPROC   15

#include <zephyr/llext/elf.h>

End of processor specific.

◆ STT_LOOS

#define STT_LOOS   10

#include <zephyr/llext/elf.h>

Start of OS specific.

◆ STT_LOPROC

#define STT_LOPROC   13

#include <zephyr/llext/elf.h>

Start of processor specific.

◆ STT_NOTYPE

#define STT_NOTYPE   0

#include <zephyr/llext/elf.h>

Symbol table entry types.

No type

◆ STT_OBJECT

#define STT_OBJECT   1

#include <zephyr/llext/elf.h>

Data or object.

◆ STT_SECTION

#define STT_SECTION   3

#include <zephyr/llext/elf.h>

Section.

Typedef Documentation

◆ elf32_addr

#include <zephyr/llext/elf.h>

Unsigned program address.

◆ elf32_half

#include <zephyr/llext/elf.h>

Unsigned medium integer.

◆ elf32_off

#include <zephyr/llext/elf.h>

Unsigned file offset.

◆ elf32_sword

#include <zephyr/llext/elf.h>

Signed integer.

◆ elf32_word

#include <zephyr/llext/elf.h>

Unsigned integer.

◆ elf64_addr

#include <zephyr/llext/elf.h>

Unsigned program address.

◆ elf64_half

#include <zephyr/llext/elf.h>

Unsigned medium integer.

◆ elf64_off

#include <zephyr/llext/elf.h>

Unsigned file offset.

◆ elf64_sword

#include <zephyr/llext/elf.h>

Signed integer.

◆ elf64_sxword

#include <zephyr/llext/elf.h>

Signed long integer.

◆ elf64_word

#include <zephyr/llext/elf.h>

Unsigned integer.

◆ elf64_xword

#include <zephyr/llext/elf.h>

Unsigned long integer.

◆ elf_addr

#include <zephyr/llext/elf.h>

Machine sized program address.

◆ elf_ehdr_t

typedef struct elf64_ehdr elf_ehdr_t

#include <zephyr/llext/elf.h>

Relocation names (should be moved to arch-specific files)

Dynamic features currently not used by LLEXT Machine sized elf header structure

◆ elf_half

#include <zephyr/llext/elf.h>

Machine sized small integer.

◆ elf_phdr_t

typedef struct elf64_phdr elf_phdr_t

#include <zephyr/llext/elf.h>

Machine sized program header structure.

◆ elf_rel_t

typedef struct elf64_rel elf_rel_t

#include <zephyr/llext/elf.h>

Machine sized relocation struct.

◆ elf_rela_t

typedef struct elf64_rela elf_rela_t

#include <zephyr/llext/elf.h>

Machine sized relocation struct with addend.

◆ elf_shdr_t

typedef struct elf64_shdr elf_shdr_t

#include <zephyr/llext/elf.h>

Machine sized section header structure.

◆ elf_sym_t

typedef struct elf64_sym elf_sym_t

#include <zephyr/llext/elf.h>

Machine sized symbol struct.

◆ elf_word

#include <zephyr/llext/elf.h>

Machine sized integer.