26 |
#include <pupa/types.h> |
#include <pupa/types.h> |
27 |
|
|
28 |
#define PUPA_MOD_INIT \ |
#define PUPA_MOD_INIT \ |
29 |
static void pupa_mod_init (void) __attribute__ ((unused)); \ |
static void pupa_mod_init (pupa_dl_t mod) __attribute__ ((unused)); \ |
30 |
static void \ |
static void \ |
31 |
pupa_mod_init (void) |
pupa_mod_init (pupa_dl_t mod) |
32 |
|
|
33 |
#define PUPA_MOD_FINI \ |
#define PUPA_MOD_FINI \ |
34 |
static void pupa_mod_fini (void) __attribute__ ((unused)); \ |
static void pupa_mod_fini (void) __attribute__ ((unused)); \ |
65 |
int ref_count; |
int ref_count; |
66 |
pupa_dl_dep_t dep; |
pupa_dl_dep_t dep; |
67 |
pupa_dl_segment_t segment; |
pupa_dl_segment_t segment; |
68 |
void (*init) (void); |
void (*init) (struct pupa_dl *mod); |
69 |
void (*fini) (void); |
void (*fini) (void); |
70 |
}; |
}; |
71 |
typedef struct pupa_dl *pupa_dl_t; |
typedef struct pupa_dl *pupa_dl_t; |
73 |
pupa_dl_t EXPORT_FUNC(pupa_dl_load_file) (const char *filename); |
pupa_dl_t EXPORT_FUNC(pupa_dl_load_file) (const char *filename); |
74 |
pupa_dl_t EXPORT_FUNC(pupa_dl_load) (const char *name); |
pupa_dl_t EXPORT_FUNC(pupa_dl_load) (const char *name); |
75 |
pupa_dl_t pupa_dl_load_core (void *addr, pupa_size_t size); |
pupa_dl_t pupa_dl_load_core (void *addr, pupa_size_t size); |
76 |
void EXPORT_FUNC(pupa_dl_unload) (pupa_dl_t mod); |
int EXPORT_FUNC(pupa_dl_unload) (pupa_dl_t mod); |
77 |
|
void pupa_dl_unload_unneeded (void); |
78 |
|
void pupa_dl_unload_all (void); |
79 |
|
int EXPORT_FUNC(pupa_dl_ref) (pupa_dl_t mod); |
80 |
|
int EXPORT_FUNC(pupa_dl_unref) (pupa_dl_t mod); |
81 |
|
void EXPORT_FUNC(pupa_dl_iterate) (int (*hook) (pupa_dl_t mod)); |
82 |
pupa_dl_t EXPORT_FUNC(pupa_dl_get) (const char *name); |
pupa_dl_t EXPORT_FUNC(pupa_dl_get) (const char *name); |
83 |
pupa_err_t EXPORT_FUNC(pupa_dl_register_symbol) (const char *name, void *addr, |
pupa_err_t EXPORT_FUNC(pupa_dl_register_symbol) (const char *name, void *addr, |
84 |
pupa_dl_t mod); |
pupa_dl_t mod); |
85 |
void *EXPORT_FUNC(pupa_dl_resolve_symbol) (const char *name); |
void *EXPORT_FUNC(pupa_dl_resolve_symbol) (const char *name); |
86 |
void pupa_dl_init (const char *dir); |
void pupa_dl_set_prefix (const char *dir); |
87 |
|
const char *pupa_dl_get_prefix (void); |
88 |
|
|
89 |
int pupa_arch_dl_check_header (void *ehdr, pupa_size_t size); |
int pupa_arch_dl_check_header (void *ehdr, pupa_size_t size); |
90 |
pupa_err_t pupa_arch_dl_relocate_symbols (pupa_dl_t mod, void *ehdr); |
pupa_err_t pupa_arch_dl_relocate_symbols (pupa_dl_t mod, void *ehdr); |