OpenAMP Library  353
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()

static 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()

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

◆ elf_get_section_from_name()

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

◆ elf_get_segment_from_index()

static 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()

static size_t elf_info_size ( const void *  img_data)
static

◆ elf_is_64()

static 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()

static 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()

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

◆ elf_parse_section()

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

◆ elf_parse_segment()

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

◆ elf_phentsize()

static size_t elf_phentsize ( const void *  elf_info)
static

◆ elf_phnum()

static int elf_phnum ( const void *  elf_info)
static

◆ elf_phoff()

static size_t elf_phoff ( const void *  elf_info)
static

◆ elf_phtable_ptr()

static void** elf_phtable_ptr ( void *  elf_info)
static

◆ elf_release()

void elf_release ( void *  img_info)

◆ elf_shentsize()

static size_t elf_shentsize ( const void *  elf_info)
static

◆ elf_shnum()

static int elf_shnum ( const void *  elf_info)
static

◆ elf_shoff()

static size_t elf_shoff ( const void *  elf_info)
static

◆ elf_shstrndx()

static int elf_shstrndx ( const void *  elf_info)
static

◆ elf_shstrtab_ptr()

static void** elf_shstrtab_ptr ( void *  elf_info)
static

◆ elf_shtable_ptr()

static 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,
}
metal_phys_addr_t elf_get_entry(void *elf_info)
Definition: elf_loader.c:650
int elf_locate_rsc_table(void *elf_info, metal_phys_addr_t *da, size_t *offset, size_t *size)
Definition: elf_loader.c:670
int elf_get_load_state(void *img_info)
Definition: elf_loader.c:695
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
void elf_release(void *img_info)
Definition: elf_loader.c:622