2002-07-09 16:24:59 +04:00
|
|
|
/*
|
2006-01-06 06:48:11 +03:00
|
|
|
* Copyright 2003-2006, Axel Dörfler, axeld@pinc-software.de.
|
2005-03-14 03:53:59 +03:00
|
|
|
* Distributed under the terms of the MIT License.
|
|
|
|
*
|
|
|
|
* Copyright 2002, Manuel J. Petit. All rights reserved.
|
|
|
|
* Distributed under the terms of the NewOS License.
|
|
|
|
*/
|
2006-03-30 20:29:53 +04:00
|
|
|
#ifndef RUNTIME_LOADER_H
|
|
|
|
#define RUNTIME_LOADER_H
|
2002-07-09 16:24:59 +04:00
|
|
|
|
|
|
|
|
|
|
|
#include <user_runtime.h>
|
2006-01-06 06:48:11 +03:00
|
|
|
#include <runtime_loader.h>
|
2002-07-09 16:24:59 +04:00
|
|
|
|
2006-03-30 20:29:53 +04:00
|
|
|
|
2005-03-21 22:11:12 +03:00
|
|
|
int runtime_loader(void *arg);
|
2005-06-14 15:23:29 +04:00
|
|
|
int open_executable(char *name, image_type type, const char *rpath);
|
|
|
|
status_t test_executable(const char *path, uid_t user, gid_t group, char *starter);
|
2002-07-09 16:24:59 +04:00
|
|
|
|
2006-01-06 06:48:11 +03:00
|
|
|
void terminate_program(void);
|
2003-01-12 19:51:15 +03:00
|
|
|
image_id load_program(char const *path, void **entry);
|
2005-03-12 03:00:04 +03:00
|
|
|
status_t unload_library(image_id imageID, bool addOn);
|
|
|
|
image_id load_library(char const *path, uint32 flags, bool addOn);
|
2003-01-12 19:51:15 +03:00
|
|
|
status_t get_nth_symbol(image_id imageID, int32 num, char *nameBuffer, int32 *_nameLength,
|
|
|
|
int32 *_type, void **_location);
|
|
|
|
status_t get_symbol(image_id imageID, char const *symbolName, int32 symbolType,
|
|
|
|
void **_location);
|
2006-01-06 06:48:11 +03:00
|
|
|
int resolve_symbol(image_t *image, struct Elf32_Sym *sym, addr_t *sym_addr);
|
|
|
|
|
2003-01-12 19:51:15 +03:00
|
|
|
|
2005-06-14 15:23:29 +04:00
|
|
|
status_t elf_verify_header(void *header, int32 length);
|
|
|
|
void rldelf_init(void);
|
|
|
|
void rldexport_init(void);
|
2003-01-12 19:51:15 +03:00
|
|
|
|
|
|
|
// RLD heap
|
2005-03-14 03:53:59 +03:00
|
|
|
void rldheap_init(void);
|
2002-07-09 16:24:59 +04:00
|
|
|
void *rldalloc(size_t);
|
2005-03-14 03:53:59 +03:00
|
|
|
void rldfree(void *p);
|
2002-07-09 16:24:59 +04:00
|
|
|
|
2006-01-06 06:48:11 +03:00
|
|
|
// arch dependent prototypes
|
|
|
|
status_t arch_relocate_image(image_t *image);
|
|
|
|
void arch_call_init(image_t *image);
|
|
|
|
void arch_call_term(image_t *image);
|
|
|
|
|
2005-06-14 15:23:29 +04:00
|
|
|
extern struct uspace_program_args *gProgramArgs;
|
2006-01-06 06:48:11 +03:00
|
|
|
extern struct rld_export gRuntimeLoader;
|
2005-06-14 15:23:29 +04:00
|
|
|
|
2006-03-30 20:29:53 +04:00
|
|
|
#endif /* RUNTIME_LOADER_H */
|