From 58cdb1bda2f2dd6a0bc5ea42e99b279fc687c06b Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sat, 22 Oct 2022 20:57:31 +0200 Subject: Refactored, again, elfloader symbol fetching (ported from box86) --- src/box64context.c | 53 ++++------------------------------------------------- 1 file changed, 4 insertions(+), 49 deletions(-) (limited to 'src/box64context.c') diff --git a/src/box64context.c b/src/box64context.c index 9a522748..1610c4e8 100755 --- a/src/box64context.c +++ b/src/box64context.c @@ -169,6 +169,8 @@ box64context_t *NewBox64Context(int argc) context->local_maplib = NewLibrarian(context, 1); context->versym = NewDictionnary(); context->system = NewBridge(); + context->globaldefver = NewDefaultVersion(); + context->weakdefver = NewDefaultVersion(); // create vsyscall context->vsyscall = AddBridge(context->system, vFEv, x64Syscall, 0, NULL); // create the vsyscalls @@ -217,6 +219,8 @@ void FreeBox64Context(box64context_t** context) if(ctx->maplib) FreeLibrarian(&ctx->maplib, NULL); FreeDictionnary(&ctx->versym); + FreeDefaultVersion(&ctx->globaldefver); + FreeDefaultVersion(&ctx->weakdefver); for(int i=0; ielfsize; ++i) { FreeElfHeader(&ctx->elfs[i]); @@ -338,52 +342,3 @@ int AddTLSPartition(box64context_t* context, int tlssize) { return -context->tlssize; // negative offset } -void add_neededlib(needed_libs_t* needed, library_t* lib) -{ - if(!needed) - return; - for(int i=0; isize; ++i) - if(needed->libs[i] == lib) - return; - if(needed->size == needed->cap) { - needed->cap += 8; - needed->libs = (library_t**)box_realloc(needed->libs, needed->cap*sizeof(library_t*)); - } - needed->libs[needed->size++] = lib; -} - -void free_neededlib(needed_libs_t* needed) -{ - if(!needed) - return; - needed->cap = 0; - needed->size = 0; - if(needed->libs) - box_free(needed->libs); - needed->libs = NULL; -} - -void add_dependedlib(needed_libs_t* depended, library_t* lib) -{ - if(!depended) - return; - for(int i=0; isize; ++i) - if(depended->libs[i] == lib) - return; - if(depended->size == depended->cap) { - depended->cap += 8; - depended->libs = (library_t**)box_realloc(depended->libs, depended->cap*sizeof(library_t*)); - } - depended->libs[depended->size++] = lib; -} - -void free_dependedlib(needed_libs_t* depended) -{ - if(!depended) - return; - depended->cap = 0; - depended->size = 0; - if(depended->libs) - box_free(depended->libs); - depended->libs = NULL; -} -- cgit 1.4.1