Subversion Repositories HelenOS

Rev

Rev 3170 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3170 Rev 3552
Line 40... Line 40...
40
#include <sys/types.h>
40
#include <sys/types.h>
41
#include <loader/pcb.h>
41
#include <loader/pcb.h>
42
 
42
 
43
#include "elf.h"
43
#include "elf.h"
44
 
44
 
-
 
45
typedef enum {
-
 
46
    /** Leave all segments in RW access mode. */
-
 
47
    ELDF_RW = 1
-
 
48
} eld_flags_t;
-
 
49
 
45
/**
50
/**
46
 * Some data extracted from the headers are stored here
51
 * Some data extracted from the headers are stored here
47
 */
52
 */
48
typedef struct {
53
typedef struct {
49
    /** Entry point */
54
    /** Entry point */
Line 64... Line 69...
64
    int fd;
69
    int fd;
65
 
70
 
66
    /** Difference between run-time addresses and link-time addresses */
71
    /** Difference between run-time addresses and link-time addresses */
67
    uintptr_t bias;
72
    uintptr_t bias;
68
 
73
 
-
 
74
    /** Flags passed to the ELF loader. */
-
 
75
    eld_flags_t flags;
-
 
76
 
69
    /** A copy of the ELF file header */
77
    /** A copy of the ELF file header */
70
    elf_header_t *header;
78
    elf_header_t *header;
71
 
79
 
72
    /** Store extracted info here */
80
    /** Store extracted info here */
73
    elf_info_t *info;
81
    elf_info_t *info;
74
} elf_ld_t;
82
} elf_ld_t;
75
 
83
 
76
int elf_load_file(char *file_name, size_t so_bias, elf_info_t *info);
84
int elf_load_file(char *file_name, size_t so_bias, eld_flags_t flags,
-
 
85
    elf_info_t *info);
77
void elf_run(elf_info_t *info, pcb_t *pcb);
86
void elf_run(elf_info_t *info, pcb_t *pcb);
78
void elf_create_pcb(elf_info_t *info, pcb_t *pcb);
87
void elf_create_pcb(elf_info_t *info, pcb_t *pcb);
79
 
88
 
80
#endif
89
#endif
81
 
90