diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-10-22 20:57:31 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-10-22 20:57:31 +0200 |
| commit | 58cdb1bda2f2dd6a0bc5ea42e99b279fc687c06b (patch) | |
| tree | 099bf5dc7d814272d6842df6656c2e672d5a1143 /src/box64context.c | |
| parent | a530f565110875c431ff9600ee9da4a640599ec7 (diff) | |
| download | box64-58cdb1bda2f2dd6a0bc5ea42e99b279fc687c06b.tar.gz box64-58cdb1bda2f2dd6a0bc5ea42e99b279fc687c06b.zip | |
Refactored, again, elfloader symbol fetching (ported from box86)
Diffstat (limited to 'src/box64context.c')
| -rwxr-xr-x | src/box64context.c | 53 |
1 files changed, 4 insertions, 49 deletions
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; i<ctx->elfsize; ++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; i<needed->size; ++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; i<depended->size; ++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; -} |