XenevaOS
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Functions
loader_elf.c File Reference
#include <loader.h>
#include <Hal/AA64/sched.h>
#include <Mm/kmalloc.h>
#include <Mm/mmfile.h>
#include <Mm/pmmngr.h>
#include <Mm/vmmngr.h>
#include <Drivers/uart.h>
#include <string.h>
#include <_null.h>
Include dependency graph for loader_elf.c:

Classes

struct  _elf64_ehdr_
 
struct  _elf64_phdr_
 

Macros

#define ELF_MAG0   0x7f
 
#define ELFCLASS64   2
 
#define ELFDATA2LSB   1
 
#define ET_EXEC   2
 
#define ET_DYN   3
 
#define EM_AARCH64   183
 
#define PT_LOAD   1
 
#define PT_INTERP   3
 
#define ELF_PAGE   0x400000
 

Typedefs

typedef struct _elf64_ehdr_ Elf64_Ehdr
 
typedef struct _elf64_phdr_ Elf64_Phdr
 

Functions

uint64_t AuLinuxBuildUserStack (AuUserEntry *uentry)
 
int AuLoadElfImage (AuProcess *proc, AuMMFileBack *fb, size_t image_len, int argc, char **argv)
 

Macro Definition Documentation

◆ ELF_MAG0

#define ELF_MAG0   0x7f

Static AArch64 ELF loader for PROCESS_TYPE_LINUX guests. Header, program headers, and PT_LOAD bytes come from the file page cache. No dynamic linker and no contiguous copy of the file.

◆ ELF_PAGE

#define ELF_PAGE   0x400000

◆ ELFCLASS64

#define ELFCLASS64   2

◆ ELFDATA2LSB

#define ELFDATA2LSB   1

◆ EM_AARCH64

#define EM_AARCH64   183

◆ ET_DYN

#define ET_DYN   3

◆ ET_EXEC

#define ET_EXEC   2

◆ PT_INTERP

#define PT_INTERP   3

◆ PT_LOAD

#define PT_LOAD   1

Typedef Documentation

◆ Elf64_Ehdr

typedef struct _elf64_ehdr_ Elf64_Ehdr

◆ Elf64_Phdr

typedef struct _elf64_phdr_ Elf64_Phdr

Function Documentation

◆ AuLinuxBuildUserStack()

uint64_t AuLinuxBuildUserStack ( AuUserEntry *  uentry)

◆ AuLoadElfImage()

int AuLoadElfImage ( AuProcess *  proc,
AuMMFileBack *  fb,
size_t  image_len,
int  argc,
char **  argv 
)