VSF Documented
Data Structures | Macros | Typedefs | Functions | Variables
vsf_elfloader.c File Reference
#include "service/vsf_service_cfg.h"
#include "../vsf_loader.h"
#include "service/vsf_service.h"

Data Structures

struct  vsf_elfloader_info_t
 
struct  __vsf_elfloader_get_section_t
 
struct  __vsf_elfloader_vaddr2off_t
 

Macros

#define __VSF_ELFLOADER_CLASS_IMPLEMENT
 
#define __VSF_LOADER_CLASS_INHERIT__
 
#define VSF_ELFLOADER_CFG_MAX_SYM_LEN   (32 + 1)
 
#define vsf_elfloader_debug(...)   vsf_trace_debug(__VA_ARGS__)
 
#define vsf_elfloader_debug_buffer(...)   vsf_trace_buffer(VSF_TRACE_DEBUG, __VA_ARGS__)
 

Typedefs

typedef struct vsf_elfloader_info_t vsf_elfloader_info_t
 
typedef struct __vsf_elfloader_get_section_t __vsf_elfloader_get_section_t
 
typedef struct __vsf_elfloader_vaddr2off_t __vsf_elfloader_vaddr2off_t
 

Functions

int vsf_elfloader_arch_relocate_sym (vsf_elfloader_t *elfloader, Elf_Addr tgtaddr, int type, Elf_Addr tgtvalue)
 
int vsf_elfloader_arch_init_plt (vsf_elfloader_t *elfloader, int num)
 
void vsf_elfloader_arch_fini_plt (vsf_elfloader_t *elfloader)
 
int vsf_elfloader_link (vsf_elfloader_t *elfloader, char *symname, Elf_Addr *target)
 
int vsf_elfloader_arch_link (vsf_elfloader_t *elfloader, char *symname, Elf_Addr *target)
 
void vsf_elfloader_cleanup (vsf_elfloader_t *elfloader)
 
int vsf_elfloader_foreach_section (vsf_elfloader_t *elfloader, vsf_loader_target_t *target, void *param, int(*callback)(vsf_elfloader_t *, vsf_loader_target_t *, Elf_Shdr *header, char *name, int index, void *param))
 
int vsf_elfloader_foreach_program_header (vsf_elfloader_t *elfloader, vsf_loader_target_t *target, void *param, int(*callback)(vsf_elfloader_t *, vsf_loader_target_t *, Elf_Phdr *pheader, int index, void *param))
 
int vsf_elfloader_call_init_array (vsf_elfloader_t *elfloader)
 
void vsf_elfloader_call_fini_array (vsf_elfloader_t *elfloader)
 
void * vsf_elfloader_remap (vsf_elfloader_t *elfloader, void *vaddr)
 
int vsf_elfloader_load (vsf_elfloader_t *elfloader, vsf_loader_target_t *target)
 
uint32_t vsf_elfloader_get_section (vsf_elfloader_t *elfloader, vsf_loader_target_t *target, const char *name, Elf_Shdr *header)
 

Variables

const struct vsf_loader_op_t vsf_elfloader_op
 

Macro Definition Documentation

◆ __VSF_ELFLOADER_CLASS_IMPLEMENT

#define __VSF_ELFLOADER_CLASS_IMPLEMENT

◆ __VSF_LOADER_CLASS_INHERIT__

#define __VSF_LOADER_CLASS_INHERIT__

◆ VSF_ELFLOADER_CFG_MAX_SYM_LEN

#define VSF_ELFLOADER_CFG_MAX_SYM_LEN   (32 + 1)

◆ vsf_elfloader_debug

#define vsf_elfloader_debug (   ...)    vsf_trace_debug(__VA_ARGS__)

◆ vsf_elfloader_debug_buffer

#define vsf_elfloader_debug_buffer (   ...)    vsf_trace_buffer(VSF_TRACE_DEBUG, __VA_ARGS__)

Typedef Documentation

◆ vsf_elfloader_info_t

◆ __vsf_elfloader_get_section_t

◆ __vsf_elfloader_vaddr2off_t

Function Documentation

◆ vsf_elfloader_arch_relocate_sym()

int vsf_elfloader_arch_relocate_sym ( vsf_elfloader_t elfloader,
Elf_Addr  tgtaddr,
int  type,
Elf_Addr  tgtvalue 
)

◆ vsf_elfloader_arch_init_plt()

int vsf_elfloader_arch_init_plt ( vsf_elfloader_t elfloader,
int  num 
)

◆ vsf_elfloader_arch_fini_plt()

void vsf_elfloader_arch_fini_plt ( vsf_elfloader_t elfloader)

◆ vsf_elfloader_link()

int vsf_elfloader_link ( vsf_elfloader_t elfloader,
char *  symname,
Elf_Addr target 
)

◆ vsf_elfloader_arch_link()

int vsf_elfloader_arch_link ( vsf_elfloader_t elfloader,
char *  symname,
Elf_Addr target 
)

◆ vsf_elfloader_cleanup()

void vsf_elfloader_cleanup ( vsf_elfloader_t elfloader)

◆ vsf_elfloader_foreach_section()

int vsf_elfloader_foreach_section ( vsf_elfloader_t elfloader,
vsf_loader_target_t target,
void *  param,
int(*)(vsf_elfloader_t *, vsf_loader_target_t *, Elf_Shdr *header, char *name, int index, void *param)  callback 
)

◆ vsf_elfloader_foreach_program_header()

int vsf_elfloader_foreach_program_header ( vsf_elfloader_t elfloader,
vsf_loader_target_t target,
void *  param,
int(*)(vsf_elfloader_t *, vsf_loader_target_t *, Elf_Phdr *pheader, int index, void *param)  callback 
)

◆ vsf_elfloader_call_init_array()

int vsf_elfloader_call_init_array ( vsf_elfloader_t elfloader)

◆ vsf_elfloader_call_fini_array()

void vsf_elfloader_call_fini_array ( vsf_elfloader_t elfloader)

◆ vsf_elfloader_remap()

void * vsf_elfloader_remap ( vsf_elfloader_t elfloader,
void *  vaddr 
)

◆ vsf_elfloader_load()

int vsf_elfloader_load ( vsf_elfloader_t elfloader,
vsf_loader_target_t target 
)

◆ vsf_elfloader_get_section()

uint32_t vsf_elfloader_get_section ( vsf_elfloader_t elfloader,
vsf_loader_target_t target,
const char *  name,
Elf_Shdr header 
)

Variable Documentation

◆ vsf_elfloader_op

const struct vsf_loader_op_t vsf_elfloader_op
Initial value:
= {
.fn_cleanup = (void (*)(vsf_loader_t *))vsf_elfloader_cleanup,
.fn_call_init_array = (int (*)(vsf_loader_t *))vsf_elfloader_call_init_array,
.fn_call_fini_array = (void (*)(vsf_loader_t *))vsf_elfloader_call_fini_array,
.fn_remap = (void * (*)(vsf_loader_t *, void *))vsf_elfloader_remap,
}
Definition vsf_loader.h:176
Definition vsf_loader.h:132
void * vsf_elfloader_remap(vsf_elfloader_t *elfloader, void *vaddr)
Definition vsf_elfloader.c:279
void vsf_elfloader_call_fini_array(vsf_elfloader_t *elfloader)
Definition vsf_elfloader.c:263
int vsf_elfloader_call_init_array(vsf_elfloader_t *elfloader)
Definition vsf_elfloader.c:250
int vsf_elfloader_load(vsf_elfloader_t *elfloader, vsf_loader_target_t *target)
Definition vsf_elfloader.c:458
void vsf_elfloader_cleanup(vsf_elfloader_t *elfloader)
Definition vsf_elfloader.c:150