runtime loader: Register extended image info with kernel

Add structure extended_image_info which extends image_info by the
fields symbol_table, symbol_hash, string_table.
This commit is contained in:
Ingo Weinhold
2016-04-27 02:16:09 +02:00
parent 82185a52e2
commit 8c6cb8af01
9 changed files with 159 additions and 100 deletions
+8 -3
View File
@@ -7,6 +7,8 @@
#include <image.h>
#include <image_defs.h>
struct image;
@@ -25,7 +27,7 @@ struct image {
struct image* next;
struct image* prev;
struct image* hash_link;
image_info info;
extended_image_info info;
team_id team;
};
@@ -41,8 +43,10 @@ struct image {
extern "C" {
#endif
extern image_id register_image(Team *team, image_info *info, size_t size);
extern image_id register_image(Team *team, extended_image_info *info,
size_t size);
extern status_t unregister_image(Team *team, image_id id);
extern status_t copy_images(team_id fromTeamId, Team *toTeam);
extern int32 count_images(Team *team);
extern status_t remove_images(Team *team);
@@ -59,7 +63,8 @@ extern status_t image_init(void);
// user-space exported calls
extern status_t _user_unregister_image(image_id id);
extern image_id _user_register_image(image_info *userInfo, size_t size);
extern image_id _user_register_image(extended_image_info *userInfo,
size_t size);
extern void _user_image_relocated(image_id id);
extern void _user_loading_app_failed(status_t error);
extern status_t _user_get_next_image_info(team_id team, int32 *_cookie,
+11 -1
View File
@@ -1,11 +1,13 @@
/*
* Copyright 2009, Ingo Weinhold, [email protected].
* Copyright 2009-2016, Ingo Weinhold, [email protected].
* Distributed under the terms of the MIT License.
*/
#ifndef _SYSTEM_IMAGE_DEFS_H
#define _SYSTEM_IMAGE_DEFS_H
#include <SupportDefs.h>
#include <image.h>
#define B_SHARED_OBJECT_HAIKU_VERSION_VARIABLE _gSharedObjectHaikuVersion
@@ -15,4 +17,12 @@
#define B_SHARED_OBJECT_HAIKU_ABI_VARIABLE_NAME "_gSharedObjectHaikuABI"
typedef struct extended_image_info {
image_info basic_info;
void* symbol_table;
void* symbol_hash;
void* string_table;
} extended_image_info;
#endif /* _SYSTEM_IMAGE_DEFS_H */
+3 -1
View File
@@ -10,6 +10,7 @@
#include <DiskDeviceDefs.h>
#include <elf_private.h>
#include <image.h>
#include <image_defs.h>
#include <OS.h>
#include <signal.h>
@@ -223,7 +224,8 @@ extern status_t _kern_set_signal_stack(const stack_t *newStack,
stack_t *oldStack);
// image functions
extern image_id _kern_register_image(image_info *info, size_t size);
extern image_id _kern_register_image(extended_image_info *info,
size_t size);
extern status_t _kern_unregister_image(image_id id);
extern void _kern_image_relocated(image_id id);
extern void _kern_loading_app_failed(status_t error);