GEL  0.99
plugsys0.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <gel/error.h>
#include <gel/gel_plugin.h>
#include <gel/gel_elf.h>
#include "gel_mem.h"

Macros

#define ALIGN(v, p2)   ((v + (1 << p2) - 1) & ~((1 << p2) - 1))
 
#define TRACE   /*fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);*/
 
#define CONTAINS(b, a)   ((b)->exec_begin <= (a) && (a) < (b)->exec_begin + (b)->exec_size)
 
#define MARK
 
#define STACKSIZE_THISDEFAULT   65536
 
#define STACKADDR_THISDEFAULT   0xc0000000
 

Functions

gel_block_t ** plugin_image_map (gel_env_t *env, gel_file_t *f, gel_file_t **tab, u32_t *num)
 
int plugin_image_load (gel_env_t *env, gel_block_t **tab, u32_t num, vaddr_t *stack_pointer)
 

Variables

int gel_errno
 
sys_plugin_t null_plugin_sys
 

Macro Definition Documentation

◆ ALIGN

#define ALIGN (   v,
  p2 
)    ((v + (1 << p2) - 1) & ~((1 << p2) - 1))

◆ CONTAINS

#define CONTAINS (   b,
 
)    ((b)->exec_begin <= (a) && (a) < (b)->exec_begin + (b)->exec_size)

◆ MARK

#define MARK

◆ STACKADDR_THISDEFAULT

#define STACKADDR_THISDEFAULT   0xc0000000

◆ STACKSIZE_THISDEFAULT

#define STACKSIZE_THISDEFAULT   65536

◆ TRACE

#define TRACE   /*fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);*/

Function Documentation

◆ plugin_image_load()

int plugin_image_load ( gel_env_t env,
gel_block_t **  tab,
u32_t  num,
vaddr_t stack_pointer 
)

Cette fonction charge les donnees des gel_file_t (elements de tab[]) qu'elle recoit en parametre, aux adresse virtuelles decid�es anterieurement par plugin_image_map

Pour l'allocation memoire des blocks : 2 cas se presentent

  • 1 : bloc->data est defini, on copie directement le bloc a cette adresse
  • 2 : bloc->data == NULL, on implante le bloc dans un emplacement memoire alloue par malloc

/!\ cette fonction doit �tre appelee apres l'appel de "plugin_image_map"

Parameters
envL'environnement
tabTableau des blocs a charger (est egal au tableau retourn� par plugin_image_map)
numnom�bre de blocs
stack_pointerpointeur vers l'addresse virtuelle du sommet de pile (si pas de pile la valeur pointee doit etre negative
Returns
-1 si une erreur est rencontree, 0 sinon

◆ plugin_image_map()

gel_block_t** plugin_image_map ( gel_env_t env,
gel_file_t f,
gel_file_t **  tab,
u32_t num 
)

Cette fonction charge les informations (adresses virtuelles, tailles...) des fichiers gel_file_t (f et elements de tab[]) qu'elle recoit en parametre elle decide des adresse virtuelles compatible avec le systeme d'exploitation La fonction peut aussi creer des blocs supplementaires, comme par exemple pour la pile.

Parameters
envL'environnement
fL'executable
tabTableau des librairies dont l'executable depend
numPointeur sur le nombre de blocs/futur blocs (sans compter le bloc de l'executable f). Peut etre modifie par la fonction.
Returns
Le tableau des blocs nouvellement crees.

Variable Documentation

◆ null_plugin_sys

sys_plugin_t null_plugin_sys
Initial value:
= {
0,
1,
NULL,
}
int plugin_image_load(gel_env_t *env, gel_block_t **tab, u32_t num, vaddr_t *stack_pointer)
Definition: plugsys0.c:445
gel_block_t ** plugin_image_map(gel_env_t *env, gel_file_t *f, gel_file_t **tab, u32_t *num)
Definition: plugsys0.c:306

Null plugin for architecture.