sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Loading...
Searching...
No Matches
erl.c File Reference
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/fcntl.h>
#include <sys/unistd.h>
#include <erl.h>
#include <hashtab.h>
#include <recycle.h>

Go to the source code of this file.

Classes

struct  elf_header_t
struct  elf_section_t
struct  elf_symbol_t
struct  elf_reloc_t
struct  elf_rela_t
struct  loosy_t
struct  dependancy_t

Macros

#define DEBUG   1
#define STANDALONE   1
#define FORCE_ALIGN   1
#define dprintf(a...)
#define rprintf(a...)
#define REL_TYPE   1
#define PROGBITS   1
#define NOBITS   8
#define REL   9
#define RELA   4
#define GLOBAL   1
#define WEAK   2
#define NOTYPE   0
#define OBJECT   1
#define FUNC   2
#define SECTION   3
#define R_MIPS_32   2
#define R_MIPS_26   4
#define R_MIPS_HI16   5
#define R_MIPS_LO16   6
#define free_and_return(code)
#define O_BINARY   0

Typedefs

typedef unsigned int u32
typedef signed int s32
typedef int(*) func_t(void)
typedef int(*) start_t(int argc, char **argv)

Functions

struct symbol_t * erl_find_local_symbol (const char *symbol, struct erl_record_t *erl)
struct symbol_t * erl_find_symbol (const char *symbol)
int erl_add_global_symbol (const char *symbol, u32 address)
struct erl_record_t * _init_load_erl_from_file (const char *fname, char *erl_id)
struct erl_record_t * load_erl_from_file (const char *fname, int argc, char **argv)
struct erl_record_t * load_erl_from_mem (u8 *mem, int argc, char **argv)
struct erl_record_t * load_erl_from_mem_to_addr (u8 *mem, u32 addr, int argc, char **argv)
struct erl_record_t * load_erl_from_file_to_addr (const char *fname, u32 addr, int argc, char **argv)
struct erl_record_t * _init_load_erl_from_file_to_addr (const char *fname, u32 addr, char *erl_id)
void r_unload_dependancies (char **d)
int unload_erl (struct erl_record_t *erl)
struct erl_record_t * erl_resolve (u32 address)
struct erl_record_t * find_erl (const char *name)
void erl_flush_symbols (struct erl_record_t *erl)

Variables

char _init_erl_prefix [256] = ""
erl_loader_t _init_load_erl

Detailed Description

The relocatable elf loader/linker.

Definition in file erl.c.

Macro Definition Documentation

◆ DEBUG

#define DEBUG   1

Definition at line 16 of file erl.c.

◆ dprintf

#define dprintf ( a...)
Value:
do { } while(0)

Definition at line 33 of file erl.c.

◆ FORCE_ALIGN

#define FORCE_ALIGN   1

Definition at line 18 of file erl.c.

◆ free_and_return

#define free_and_return ( code)
Value:
if (!elf_mem) { \
if (names) free(names); \
if (strtab_names) free(strtab_names); \
if (sec) free(sec); \
if (sym) free(sym); \
if ((code < 0) && erl_record) destroy_erl_record(erl_record); \
} \
return code

◆ FUNC

#define FUNC   2

Definition at line 196 of file erl.c.

◆ GLOBAL

#define GLOBAL   1

Definition at line 192 of file erl.c.

◆ NOBITS

#define NOBITS   8

Definition at line 189 of file erl.c.

◆ NOTYPE

#define NOTYPE   0

Definition at line 194 of file erl.c.

◆ O_BINARY

#define O_BINARY   0

Definition at line 952 of file erl.c.

◆ OBJECT

#define OBJECT   1

Definition at line 195 of file erl.c.

◆ PROGBITS

#define PROGBITS   1

Definition at line 188 of file erl.c.

◆ R_MIPS_26

#define R_MIPS_26   4

Definition at line 199 of file erl.c.

◆ R_MIPS_32

#define R_MIPS_32   2

Definition at line 198 of file erl.c.

◆ R_MIPS_HI16

#define R_MIPS_HI16   5

Definition at line 200 of file erl.c.

◆ R_MIPS_LO16

#define R_MIPS_LO16   6

Definition at line 201 of file erl.c.

◆ REL

#define REL   9

Definition at line 190 of file erl.c.

◆ REL_TYPE

#define REL_TYPE   1

Definition at line 187 of file erl.c.

◆ RELA

#define RELA   4

Definition at line 191 of file erl.c.

◆ rprintf

#define rprintf ( a...)
Value:
do { } while(0)

Definition at line 34 of file erl.c.

◆ SECTION

#define SECTION   3

Definition at line 197 of file erl.c.

◆ STANDALONE

#define STANDALONE   1

Definition at line 17 of file erl.c.

◆ WEAK

#define WEAK   2

Definition at line 193 of file erl.c.

Typedef Documentation

◆ func_t

typedef int(*) func_t(void)

Definition at line 955 of file erl.c.

◆ s32

typedef signed int s32

Definition at line 68 of file erl.c.

◆ start_t

typedef int(*) start_t(int argc, char **argv)

Definition at line 956 of file erl.c.

◆ u32

typedef unsigned int u32

Definition at line 65 of file erl.c.

Function Documentation

◆ _init_load_erl_from_file()

struct erl_record_t * _init_load_erl_from_file ( const char * fname,
char * erl_id )

Definition at line 1040 of file erl.c.

◆ _init_load_erl_from_file_to_addr()

struct erl_record_t * _init_load_erl_from_file_to_addr ( const char * fname,
u32 addr,
char * erl_id )

Definition at line 1083 of file erl.c.

◆ erl_add_global_symbol()

int erl_add_global_symbol ( const char * symbol,
u32 address )

Definition at line 578 of file erl.c.

◆ erl_find_local_symbol()

struct symbol_t * erl_find_local_symbol ( const char * symbol,
struct erl_record_t * erl )

Definition at line 431 of file erl.c.

◆ erl_find_symbol()

struct symbol_t * erl_find_symbol ( const char * symbol)

Definition at line 447 of file erl.c.

◆ erl_flush_symbols()

void erl_flush_symbols ( struct erl_record_t * erl)

Definition at line 1173 of file erl.c.

◆ erl_resolve()

struct erl_record_t * erl_resolve ( u32 address)

Definition at line 1149 of file erl.c.

◆ find_erl()

struct erl_record_t * find_erl ( const char * name)

Definition at line 1161 of file erl.c.

◆ load_erl_from_file()

struct erl_record_t * load_erl_from_file ( const char * fname,
int argc,
char ** argv )

Definition at line 1058 of file erl.c.

◆ load_erl_from_file_to_addr()

struct erl_record_t * load_erl_from_file_to_addr ( const char * fname,
u32 addr,
int argc,
char ** argv )

Definition at line 1076 of file erl.c.

◆ load_erl_from_mem()

struct erl_record_t * load_erl_from_mem ( u8 * mem,
int argc,
char ** argv )

Definition at line 1062 of file erl.c.

◆ load_erl_from_mem_to_addr()

struct erl_record_t * load_erl_from_mem_to_addr ( u8 * mem,
u32 addr,
int argc,
char ** argv )

Definition at line 1069 of file erl.c.

◆ r_unload_dependancies()

void r_unload_dependancies ( char ** d)

Definition at line 1101 of file erl.c.

◆ unload_erl()

int unload_erl ( struct erl_record_t * erl)

Definition at line 1112 of file erl.c.

Variable Documentation

◆ _init_erl_prefix

char _init_erl_prefix[256] = ""

Definition at line 285 of file erl.c.

◆ _init_load_erl

erl_loader_t _init_load_erl

Definition at line 964 of file erl.c.