SyterKit 0.4.0.x
SyterKit is a bare-metal framework
Loading...
Searching...
No Matches
Functions | Variables
elf32.c File Reference
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#include <types.h>
#include <elf.h>
#include <elf_helpers.h>
#include <elf_loader.h>
#include <log.h>
Include dependency graph for elf32.c:

Functions

void print_elf32_ehdr (Elf32_Ehdr *header)
 
phys_addr_t elf32_get_entry_addr (phys_addr_t base)
 Get the entry address from the ELF32 file header.
 
static phys_addr_t set_img_va_to_pa (phys_addr_t vaddr, vaddr_range_t *map, uint32_t size)
 Map virtual address to physical address.
 
int load_elf32_image (phys_addr_t img_addr)
 Loads an ELF32 image into memory starting at 'img_addr'.
 
int load_elf32_image_remap (phys_addr_t img_addr, vaddr_map_t *map)
 Loads an ELF32 image into memory starting at 'img_addr', with remap va to pa.
 
static Elf32_Shdrelf32_find_segment (phys_addr_t elf_addr, const char *seg_name)
 
void * elf32_find_segment_offset (phys_addr_t elf_addr, const char *seg_name)
 
void * elf32_find_segment_addr (phys_addr_t elf_addr, const char *seg_name)
 

Variables

static vaddr_map_t default_addr_mapping
 

Function Documentation

◆ elf32_find_segment()

static Elf32_Shdr * elf32_find_segment ( phys_addr_t  elf_addr,
const char *  seg_name 
)
static

◆ elf32_find_segment_addr()

void * elf32_find_segment_addr ( phys_addr_t  elf_addr,
const char *  seg_name 
)

◆ elf32_find_segment_offset()

void * elf32_find_segment_offset ( phys_addr_t  elf_addr,
const char *  seg_name 
)

◆ elf32_get_entry_addr()

phys_addr_t elf32_get_entry_addr ( phys_addr_t  base)

Get the entry address from the ELF32 file header.

Extracts the entry address from an ELF32 image loaded at 'base'.

Parameters
baseBase address of the ELF32 file
Returns
Entry address

◆ load_elf32_image()

int load_elf32_image ( phys_addr_t  img_addr)

Loads an ELF32 image into memory starting at 'img_addr'.

Parameters
img_addrThe starting address to load the ELF32 image.
Returns
0 if successful, -1 otherwise.

◆ load_elf32_image_remap()

int load_elf32_image_remap ( phys_addr_t  img_addr,
vaddr_map_t map 
)

Loads an ELF32 image into memory starting at 'img_addr', with remap va to pa.

Parameters
img_addrThe starting address to load the ELF32 image.
mapThe address mapping table.
Returns
0 if successful, -1 otherwise.

◆ print_elf32_ehdr()

void print_elf32_ehdr ( Elf32_Ehdr header)

◆ set_img_va_to_pa()

static phys_addr_t set_img_va_to_pa ( phys_addr_t  vaddr,
vaddr_range_t map,
uint32_t  size 
)
static

Map virtual address to physical address.

Parameters
vaddrVirtual address to be mapped
mapMapping table containing virtual address range and corresponding physical address range
sizeSize of the mapping table
Returns
Mapped physical address

Variable Documentation

◆ default_addr_mapping

vaddr_map_t default_addr_mapping
static
Initial value:
= {
.range = (vaddr_range_t *) NULL,
.range_size = 0,
}
#define NULL
Definition stddef.h:7
The structure vaddr_range_t represents the mapping between a virtual address range and the starting p...
Definition elf_loader.h:13