OpenAMP Library  main
Loading...
Searching...
No Matches
elf_loader.c File Reference
#include <string.h>
#include <metal/alloc.h>
#include <metal/log.h>
#include <openamp/elf_loader.h>
#include <openamp/remoteproc.h>

Functions

static int elf_is_64 (const void *elf_info)
static size_t elf_ehdr_size (const void *elf_info)
static size_t elf_phoff (const void *elf_info)
static size_t elf_phentsize (const void *elf_info)
static int elf_phnum (const void *elf_info)
static size_t elf_shoff (const void *elf_info)
static size_t elf_shentsize (const void *elf_info)
static int elf_shnum (const void *elf_info)
static int elf_shstrndx (const void *elf_info)
static void ** elf_phtable_ptr (void *elf_info)
static void ** elf_shtable_ptr (void *elf_info)
static void ** elf_shstrtab_ptr (void *elf_info)
static int * elf_load_state (void *elf_info)
static void elf_parse_segment (void *elf_info, const void *elf_phdr, unsigned int *p_type, size_t *p_offset, metal_phys_addr_t *p_vaddr, metal_phys_addr_t *p_paddr, size_t *p_filesz, size_t *p_memsz)
static const void * elf_get_segment_from_index (void *elf_info, int index)
static void * elf_get_section_from_name (void *elf_info, const char *name)
static void * elf_get_section_from_index (void *elf_info, int index)
static void elf_parse_section (void *elf_info, void *elf_shdr, unsigned int *sh_type, unsigned int *sh_flags, metal_phys_addr_t *sh_addr, size_t *sh_offset, size_t *sh_size, unsigned int *sh_link, unsigned int *sh_info, unsigned int *sh_addralign, size_t *sh_entsize)
static const void * elf_next_load_segment (void *elf_info, int *nseg, metal_phys_addr_t *da, size_t *noffset, size_t *nfsize, size_t *nmsize)
static size_t elf_info_size (const void *img_data)
int elf_identify (const void *img_data, size_t len)
int elf_load_header (const void *img_data, size_t offset, size_t len, void **img_info, int last_load_state, size_t *noffset, size_t *nlen)
int elf_load (struct remoteproc *rproc, const void *img_data, size_t offset, size_t len, void **img_info, int last_load_state, metal_phys_addr_t *da, size_t *noffset, size_t *nlen, unsigned char *padding, size_t *nmemsize)
void elf_release (void *img_info)
metal_phys_addr_t elf_get_entry (void *elf_info)
int elf_locate_rsc_table (void *elf_info, metal_phys_addr_t *da, size_t *offset, size_t *size)
int elf_get_load_state (void *img_info)

Variables

const struct loader_ops elf_ops

Function Documentation

◆ elf_ehdr_size()

size_t elf_ehdr_size ( const void * elf_info)
static

◆ elf_get_entry()

metal_phys_addr_t elf_get_entry ( void * elf_info)

◆ elf_get_load_state()

int elf_get_load_state ( void * img_info)

◆ elf_get_section_from_index()

void * elf_get_section_from_index ( void * elf_info,
int index )
static

◆ elf_get_section_from_name()

void * elf_get_section_from_name ( void * elf_info,
const char * name )
static

◆ elf_get_segment_from_index()

const void * elf_get_segment_from_index ( void * elf_info,
int index )
static

◆ elf_identify()

int elf_identify ( const void * img_data,
size_t len )

◆ elf_info_size()

size_t elf_info_size ( const void * img_data)
static

◆ elf_is_64()

int elf_is_64 ( const void * elf_info)
static

◆ elf_load()

int elf_load ( struct remoteproc * rproc,
const void * img_data,
size_t offset,
size_t len,
void ** img_info,
int last_load_state,
metal_phys_addr_t * da,
size_t * noffset,
size_t * nlen,
unsigned char * padding,
size_t * nmemsize )

◆ elf_load_header()

int elf_load_header ( const void * img_data,
size_t offset,
size_t len,
void ** img_info,
int last_load_state,
size_t * noffset,
size_t * nlen )

◆ elf_load_state()

int * elf_load_state ( void * elf_info)
static

◆ elf_locate_rsc_table()

int elf_locate_rsc_table ( void * elf_info,
metal_phys_addr_t * da,
size_t * offset,
size_t * size )

◆ elf_next_load_segment()

const void * elf_next_load_segment ( void * elf_info,
int * nseg,
metal_phys_addr_t * da,
size_t * noffset,
size_t * nfsize,
size_t * nmsize )
static

◆ elf_parse_section()

void elf_parse_section ( void * elf_info,
void * elf_shdr,
unsigned int * sh_type,
unsigned int * sh_flags,
metal_phys_addr_t * sh_addr,
size_t * sh_offset,
size_t * sh_size,
unsigned int * sh_link,
unsigned int * sh_info,
unsigned int * sh_addralign,
size_t * sh_entsize )
static

◆ elf_parse_segment()

void elf_parse_segment ( void * elf_info,
const void * elf_phdr,
unsigned int * p_type,
size_t * p_offset,
metal_phys_addr_t * p_vaddr,
metal_phys_addr_t * p_paddr,
size_t * p_filesz,
size_t * p_memsz )
static

◆ elf_phentsize()

size_t elf_phentsize ( const void * elf_info)
static

◆ elf_phnum()

int elf_phnum ( const void * elf_info)
static

◆ elf_phoff()

size_t elf_phoff ( const void * elf_info)
static

◆ elf_phtable_ptr()

void ** elf_phtable_ptr ( void * elf_info)
static

◆ elf_release()

void elf_release ( void * img_info)

◆ elf_shentsize()

size_t elf_shentsize ( const void * elf_info)
static

◆ elf_shnum()

int elf_shnum ( const void * elf_info)
static

◆ elf_shoff()

size_t elf_shoff ( const void * elf_info)
static

◆ elf_shstrndx()

int elf_shstrndx ( const void * elf_info)
static

◆ elf_shstrtab_ptr()

void ** elf_shstrtab_ptr ( void * elf_info)
static

◆ elf_shtable_ptr()

void ** elf_shtable_ptr ( void * elf_info)
static

Variable Documentation

◆ elf_ops

const struct loader_ops elf_ops
Initial value:
= {
.load_header = elf_load_header,
.load_data = elf_load,
.locate_rsc_table = elf_locate_rsc_table,
.release = elf_release,
.get_entry = elf_get_entry,
.get_load_state = elf_get_load_state,
}
int elf_get_load_state(void *img_info)
Definition elf_loader.c:695
metal_phys_addr_t elf_get_entry(void *img_info)
Definition elf_loader.c:650
int elf_load(struct remoteproc *rproc, const void *img_data, size_t offset, size_t len, void **img_info, int last_load_state, metal_phys_addr_t *da, size_t *noffset, size_t *nlen, unsigned char *padding, size_t *nmemsize)
Definition elf_loader.c:534
int elf_load_header(const void *img_data, size_t offset, size_t len, void **img_info, int last_load_state, size_t *noffset, size_t *nlen)
Definition elf_loader.c:395
int elf_locate_rsc_table(void *img_info, metal_phys_addr_t *da, size_t *offset, size_t *size)
Definition elf_loader.c:670
void elf_release(void *img_info)
Definition elf_loader.c:622