Lines Matching refs:elElfDesc

137 static BOOL ELi_ReInitDesc( ELDesc* elElfDesc);
138 static ELResult elLoadSegments( ELDesc* elElfDesc, ELObject* MYObject);
139 static ELResult elLoadSections( ELDesc* elElfDesc, ELObject* MYObject, u32 dll_fileid, u32 elf_num);
142 static ELDlld ELi_LoadLibrary( ELDesc* elElfDesc, void* obj_image, u32 obj_len, void* buf, u32 buf_…
144 static ELResult ELi_LoadObject( ELDesc* elElfDesc, ELObject* MYObject, void* obj_offset, void* buf,…
157 ELAdrEntry* elGetAdrEntry( ELDesc* elElfDesc, const char* ent_name, ELObject** ExpObjEnt);
233 void* ELi_Malloc( ELDesc* elElfDesc, ELObject* MYObject, size_t size) in ELi_Malloc() argument
239 ELi_SetResultCode( elElfDesc, MYObject, EL_RESULT_NO_MORE_RESOURCE); in ELi_Malloc()
249 BOOL ELi_InitDesc( ELDesc* elElfDesc) in ELi_InitDesc() argument
251 if( elElfDesc == NULL) { /*NULL check*/ in ELi_InitDesc()
256 elElfDesc->ShdrEx = NULL; in ELi_InitDesc()
257 elElfDesc->SymEx = NULL; in ELi_InitDesc()
258 elElfDesc->SymExTbl = NULL; in ELi_InitDesc()
259 elElfDesc->SymExTarget = 0xFFFFFFFF; in ELi_InitDesc()
261 elElfDesc->process = (u32)EL_PROC_INITIALIZED; /*Set the flag*/ in ELi_InitDesc()
262 elElfDesc->result = (u32)EL_RESULT_SUCCESS; in ELi_InitDesc()
265 elElfDesc->ELObjectStart = NULL; in ELi_InitDesc()
266 elElfDesc->ELStaticObj = NULL; in ELi_InitDesc()
274 static BOOL ELi_ReInitDesc( ELDesc* elElfDesc) in ELi_ReInitDesc() argument
276 if( elElfDesc == NULL) { /*NULL check*/ in ELi_ReInitDesc()
281 elElfDesc->ShdrEx = NULL; in ELi_ReInitDesc()
282 elElfDesc->SymEx = NULL; in ELi_ReInitDesc()
283 elElfDesc->SymExTbl = NULL; in ELi_ReInitDesc()
284 elElfDesc->SymExTarget = 0xFFFFFFFF; in ELi_ReInitDesc()
286 elElfDesc->process = (u32)EL_PROC_INITIALIZED; /*Set the flag*/ in ELi_ReInitDesc()
287 elElfDesc->result = (u32)EL_RESULT_SUCCESS; in ELi_ReInitDesc()
299 ELDlld EL_LoadLibraryfromFile( ELDesc* elElfDesc, const char* FilePath, void* buf, u32 buf_size) in EL_LoadLibraryfromFile() argument
306 if( elElfDesc == NULL) { in EL_LoadLibraryfromFile()
316 ELi_SetResultCode( elElfDesc, NULL, EL_RESULT_CANNOT_ACCESS_ELF); in EL_LoadLibraryfromFile()
329 elElfDesc->i_elReadStub = ELi_ReadFile; in EL_LoadLibraryfromFile()
330 elElfDesc->FileStruct = (int*)file; in EL_LoadLibraryfromFile()
334 dlld = ELi_LoadLibrary( elElfDesc, NULL, len, buf, buf_size, file_id[0].file_id); in EL_LoadLibraryfromFile()
341 ELi_SetResultCode( elElfDesc, NULL, EL_RESULT_CANNOT_ACCESS_ELF); in EL_LoadLibraryfromFile()
356 ELDlld EL_LoadLibrary( ELDesc* elElfDesc, ELReadImage readfunc, u32 len, void* buf, u32 buf_size) in EL_LoadLibrary() argument
360 if( elElfDesc == NULL) { in EL_LoadLibrary()
367 elElfDesc->i_elReadStub = ELi_ReadUsr; in EL_LoadLibrary()
369 dlld = ELi_LoadLibrary( elElfDesc, NULL, len, buf, buf_size, 0xFFFFFFFF); in EL_LoadLibrary()
386 ELDlld EL_LoadLibraryfromMem( ELDesc* elElfDesc, void* obj_image, u32 obj_len, void* buf, u32 buf_s… in EL_LoadLibraryfromMem() argument
390 if( elElfDesc == NULL) { in EL_LoadLibraryfromMem()
397 elElfDesc->i_elReadStub = ELi_ReadMem; in EL_LoadLibraryfromMem()
398 elElfDesc->FileStruct = NULL; in EL_LoadLibraryfromMem()
400 dlld = ELi_LoadLibrary( elElfDesc, obj_image, obj_len, buf, buf_size, 0xFFFFFFFF); in EL_LoadLibraryfromMem()
417 static ELDlld ELi_LoadLibrary( ELDesc* elElfDesc, void* obj_image, u32 obj_len, void* buf, u32 buf_… in ELi_LoadLibrary() argument
429 if( elElfDesc->i_elReadStub == NULL) { in ELi_LoadLibrary()
430 ELi_SetResultCode( elElfDesc, NULL, EL_RESULT_CANNOT_ACCESS_ELF); in ELi_LoadLibrary()
436 MYObject = (ELObject*)ELi_Malloc( elElfDesc, NULL, sizeof( ELObject)); in ELi_LoadLibrary()
440 elAddObjEntry( &(elElfDesc->ELObjectStart), MYObject); in ELi_LoadLibrary()
442 elElfDesc->ar_head = obj_image; in ELi_LoadLibrary()
453 …if( elElfDesc->i_elReadStub( OBJMAG, elElfDesc->FileStruct, (u32)obj_image, 0, 8) == FALSE) { /*Ge… in ELi_LoadLibrary()
454 ELi_SetResultCode( elElfDesc, MYObject, EL_RESULT_CANNOT_ACCESS_ELF); in ELi_LoadLibrary()
463 …if( elElfDesc->i_elReadStub( OBJMAG, elElfDesc->FileStruct, (u32)(obj_image), (image_pointer+arch_… in ELi_LoadLibrary()
465 ELi_SetResultCode( elElfDesc, MYObject, EL_RESULT_CANNOT_ACCESS_ELF); in ELi_LoadLibrary()
470 (void)ELi_ReInitDesc( elElfDesc); in ELi_LoadLibrary()
471 …result = ELi_LoadObject( elElfDesc, MYObject, (void*)(image_pointer+arch_size), MYObject->buf_curr… in ELi_LoadLibrary()
479 …if( elElfDesc->i_elReadStub( &ArHdr, elElfDesc->FileStruct, (u32)(obj_image), image_pointer, arch_… in ELi_LoadLibrary()
481 ELi_SetResultCode( elElfDesc, MYObject, EL_RESULT_CANNOT_ACCESS_ELF); in ELi_LoadLibrary()
489 (void)ELi_ReInitDesc( elElfDesc); in ELi_LoadLibrary()
490 … result = ELi_LoadObject( elElfDesc, MYObject, 0, MYObject->buf_current, dll_fileid, elf_num); in ELi_LoadLibrary()
496 ELi_SetResultCode( elElfDesc, MYObject, EL_RESULT_INVALID_ELF); in ELi_LoadLibrary()
503 … (void)ELi_FreeVenTbl( elElfDesc, MYObject); /*Release the veneer link list when not debugging*/ in ELi_LoadLibrary()
512 (void)elRemoveObjEntry( &(elElfDesc->ELObjectStart), MYObject); in ELi_LoadLibrary()
525 static ELResult ELi_LoadObject( ELDesc* elElfDesc, ELObject* MYObject, void* obj_offset, void* buf,… in ELi_LoadObject() argument
530 if( elElfDesc->process != (u32)EL_PROC_INITIALIZED) { in ELi_LoadObject()
534 if( elElfDesc->i_elReadStub( &(elElfDesc->CurrentEhdr), elElfDesc->FileStruct, in ELi_LoadObject()
535 (u32)(elElfDesc->ar_head), (u32)(obj_offset), sizeof( Elf32_Ehdr)) in ELi_LoadObject()
537 ELi_SetResultCode( elElfDesc, MYObject, EL_RESULT_CANNOT_ACCESS_ELF); in ELi_LoadObject()
542 elElfDesc->elf_offset = obj_offset; in ELi_LoadObject()
543 elElfDesc->shentsize = elElfDesc->CurrentEhdr.e_shentsize; in ELi_LoadObject()
544 elElfDesc->entry_adr = elElfDesc->CurrentEhdr.e_entry; in ELi_LoadObject()
547 switch( elElfDesc->CurrentEhdr.e_type) { in ELi_LoadObject()
551 ELi_SetResultCode( elElfDesc, MYObject, EL_RESULT_UNSUPPORTED_ELF); in ELi_LoadObject()
558 ELi_SetResultCode( elElfDesc, MYObject, EL_RESULT_NO_MORE_RESOURCE); in ELi_LoadObject()
561 ret_val = elLoadSections( elElfDesc, MYObject, dll_fileid, elf_num); in ELi_LoadObject()
566 ret_val = elLoadSegments( elElfDesc, MYObject); in ELi_LoadObject()
572 ret_val = elLoadSegments( elElfDesc, MYObject); in ELi_LoadObject()
574 ret_val = elLoadSections( elElfDesc, MYObject, dll_fileid, elf_num); in ELi_LoadObject()
580 ELi_SetResultCode( elElfDesc, MYObject, EL_RESULT_UNSUPPORTED_ELF); in ELi_LoadObject()
586 elElfDesc->CurrentEhdr.e_type); in ELi_LoadObject()
587 ELi_SetResultCode( elElfDesc, MYObject, EL_RESULT_INVALID_ELF); in ELi_LoadObject()
601 static ELResult elLoadSegments( ELDesc* elElfDesc, ELObject* MYObject) in elLoadSegments() argument
607 for( i=0; i<(elElfDesc->CurrentEhdr.e_phnum); i++) { in elLoadSegments()
609 ELi_GetPhdr( elElfDesc, i, &CurrentPhdr); in elLoadSegments()
613 if( ELi_CopySegmentToBuffer( elElfDesc, MYObject, &CurrentPhdr) == NULL) { in elLoadSegments()
621 ELi_SetProcCode( elElfDesc, MYObject, EL_PROC_COPIED); in elLoadSegments()
631 static ELResult elLoadSections( ELDesc* elElfDesc, ELObject* MYObject, u32 dll_fileid, u32 elf_num) in elLoadSections() argument
647 for( i=0; i<(elElfDesc->CurrentEhdr.e_shnum); i++) { in elLoadSections()
648 CurrentShdrEx->next = ELi_Malloc( elElfDesc, MYObject, sizeof(ELShdrEx)); in elLoadSections()
656 if( ELi_ShdrIsDebug( elElfDesc, i) == TRUE) { /*When it is debugging information*/ in elLoadSections()
660 ELi_GetShdr( elElfDesc, i, &(CurrentShdrEx->Shdr)); in elLoadSections()
665 elElfDesc->ShdrEx = DmyShdrEx.next; in elLoadSections()
668 ELi_START_REGISTER_RELOCATION_INFO( ISTDRELOCATIONPROC_AUTO, (elElfDesc != i_eldesc_sim)); in elLoadSections()
672 for( i=0; i<(elElfDesc->CurrentEhdr.e_shnum); i++) { in elLoadSections()
674 CurrentShdrEx = ELi_GetShdrExfromList( elElfDesc->ShdrEx, i); in elLoadSections()
688 … ELi_CopySectionToBuffer( elElfDesc, MYObject, &(CurrentShdrEx->Shdr)); in elLoadSections()
696 … ELi_CopySectionToBuffer( elElfDesc, MYObject, &(CurrentShdrEx->Shdr)); in elLoadSections()
704 … ELi_AllocSectionToBuffer( elElfDesc, MYObject, &(CurrentShdrEx->Shdr)); in elLoadSections()
712 … ELi_CopySectionToBuffer( elElfDesc, MYObject, &(CurrentShdrEx->Shdr)); in elLoadSections()
718 … ELi_END_REGISTER_RELOCATION_INFO( ISTDRELOCATIONPROC_AUTO, (elElfDesc != i_eldesc_sim)); in elLoadSections()
721 …ELOCATIONPROC_AUTO, dll_fileid, elf_num, i, CurrentShdrEx->loaded_adr, (elElfDesc != i_eldesc_sim)… in elLoadSections()
729 ELi_SetProcCode( elElfDesc, MYObject, EL_PROC_COPIED); in elLoadSections()
732 ELi_END_REGISTER_RELOCATION_INFO( ISTDRELOCATIONPROC_AUTO, (elElfDesc != i_eldesc_sim)); in elLoadSections()
736 for( i=0; i<(elElfDesc->CurrentEhdr.e_shnum); i++) { in elLoadSections()
738 CurrentShdrEx = ELi_GetShdrExfromList( elElfDesc->ShdrEx, i); in elLoadSections()
745 InfoShdrEx = ELi_GetShdrExfromList( elElfDesc->ShdrEx, in elLoadSections()
748 if(ELi_RelocateSym( elElfDesc, MYObject, i) == FALSE) in elLoadSections()
749 … return( (ELResult)(elElfDesc->result)); //EL_RESULT_NO_MORE_RESOURCE or EL_RESULT_UNSUPPORTED_ELF in elLoadSections()
762 ELi_GetSent( elElfDesc, i, &(elElfDesc->Rel), offset, sizeof(Elf32_Rel)); in elLoadSections()
763 ELi_GetShdr( elElfDesc, CurrentShdrEx->Shdr.sh_link, &(elElfDesc->SymShdr)); in elLoadSections()
764 ELi_GetSent( elElfDesc, CurrentShdrEx->Shdr.sh_link, &(elElfDesc->Sym), in elLoadSections()
765 … (u32)(elElfDesc->SymShdr.sh_entsize * ELF32_R_SYM( elElfDesc->Rel.r_info)), sizeof(Elf32_Sym)); in elLoadSections()
766 … ELi_GetStrAdr( elElfDesc, elElfDesc->SymShdr.sh_link, elElfDesc->Sym.st_name, sym_str, 128); in elLoadSections()
768 PRINTDEBUG( "%08x ", elElfDesc->Rel.r_offset); in elLoadSections()
769 PRINTDEBUG( "%08x ", elElfDesc->Rel.r_info); in elLoadSections()
771 PRINTDEBUG( "%08x ", elElfDesc->Sym.st_value); in elLoadSections()
781 InfoShdrEx = ELi_GetShdrExfromList( elElfDesc->ShdrEx, in elLoadSections()
784 if(ELi_RelocateSym( elElfDesc, MYObject, i) == FALSE) in elLoadSections()
798 ELi_GetSent( elElfDesc, i, &(elElfDesc->Rela), offset, sizeof(Elf32_Rel)); in elLoadSections()
799 ELi_GetShdr( elElfDesc, CurrentShdrEx->Shdr.sh_link, &(elElfDesc->SymShdr)); in elLoadSections()
800 ELi_GetSent( elElfDesc, CurrentShdrEx->Shdr.sh_link, &(elElfDesc->Sym), in elLoadSections()
801 … (u32)(elElfDesc->SymShdr.sh_entsize * ELF32_R_SYM( elElfDesc->Rela.r_info)), sizeof(Elf32_Sym)); in elLoadSections()
802 … ELi_GetStrAdr( elElfDesc, elElfDesc->SymShdr.sh_link, elElfDesc->Sym.st_name, sym_str, 128); in elLoadSections()
804 PRINTDEBUG( "%08x ", elElfDesc->Rela.r_offset); in elLoadSections()
805 PRINTDEBUG( "%08x ", elElfDesc->Rela.r_info); in elLoadSections()
807 PRINTDEBUG( "%08x ", elElfDesc->Sym.st_value); in elLoadSections()
817 if(ELi_GoPublicGlobalSym( elElfDesc, MYObject, i) == FALSE) in elLoadSections()
823 ELi_FreeSymList( elElfDesc); in elLoadSections()
826 CurrentShdrEx = elElfDesc->ShdrEx; in elLoadSections()
833 elElfDesc->ShdrEx = NULL; in elLoadSections()
849 ELProcess ELi_ResolveAllLibrary( ELDesc* elElfDesc) in ELi_ResolveAllLibrary() argument
860 if( elElfDesc == NULL) { in ELi_ResolveAllLibrary()
863 ObjEnt = elElfDesc->ELObjectStart; in ELi_ResolveAllLibrary()
864 if( (ObjEnt == NULL)||((ObjEnt == elElfDesc->ELStaticObj)&&(ObjEnt->next == NULL))) { in ELi_ResolveAllLibrary()
872 …AdrEnt = elGetAdrEntry( elElfDesc, UnrEnt->sym_str, &ExpObjEnt); /*Search from address tabl… in ELi_ResolveAllLibrary()
877 ret_val = ELi_DoRelocate( elElfDesc, ObjEnt, UnrEnt); /*Resolve symbol*/ in ELi_ResolveAllLibrary()
888 if( elElfDesc != i_eldesc_sim) { in ELi_ResolveAllLibrary()
895 ret_val = ELi_DoRelocate( elElfDesc, ObjEnt, UnrEnt); in ELi_ResolveAllLibrary()
908 ELi_SetProcCode( elElfDesc, NULL, EL_PROC_RELOCATED); in ELi_ResolveAllLibrary()
932 BOOL ELi_Unlink( ELDesc* elElfDesc, ELDlld my_dlld) in ELi_Unlink() argument
940 if( elElfDesc == NULL) { in ELi_Unlink()
945 ELi_SetResultCode( elElfDesc, NULL, EL_RESULT_INVALID_PARAMETER); in ELi_Unlink()
967 ObjEnt = elElfDesc->ELObjectStart; in ELi_Unlink()
989 (void)ELi_FreeVenTbl( elElfDesc, MYObject); /*Deallocate the veneer link request*/ in ELi_Unlink()
991 ELi_SetProcCode( elElfDesc, MYObject, EL_PROC_NOTHING); in ELi_Unlink()
993 ELi_START_REGISTER_RELOCATION_INFO( ISTDRELOCATIONPROC_AUTO, (elElfDesc != i_eldesc_sim)); in ELi_Unlink()
994 …(void)ELi_UNREGISTER_RELOCATION_INFO( ISTDRELOCATIONPROC_AUTO, file_id, (elElfDesc != i_eldesc_sim… in ELi_Unlink()
995 ELi_END_REGISTER_RELOCATION_INFO( ISTDRELOCATIONPROC_AUTO, (elElfDesc != i_eldesc_sim)); in ELi_Unlink()
1182 BOOL ELi_Export( ELDesc* elElfDesc, ELAdrEntry* AdrEnt) in ELi_Export() argument
1187 if( elElfDesc == NULL) { in ELi_Export()
1190 if( elElfDesc->ELStaticObj == NULL) { in ELi_Export()
1191 elElfDesc->ELStaticObj = (ELObject*)ELi_Malloc( elElfDesc, NULL, sizeof( ELObject)); in ELi_Export()
1192 if(elElfDesc->ELStaticObj == NULL) { in ELi_Export()
1195 ELi_InitObject( elElfDesc->ELStaticObj); in ELi_Export()
1196 elAddObjEntry( &(elElfDesc->ELObjectStart), elElfDesc->ELStaticObj); in ELi_Export()
1199 if( !(elElfDesc->ELStaticObj->ExportAdrEnt)) { in ELi_Export()
1200 elElfDesc->ELStaticObj->ExportAdrEnt = (ELAdrEntry*)AdrEnt; in ELi_Export()
1202 DmyAdrEnt.next = (ELAdrEntry*)elElfDesc->ELStaticObj->ExportAdrEnt; in ELi_Export()
1232 ELAdrEntry* elGetAdrEntry( ELDesc* elElfDesc, const char* ent_name, ELObject** ExpObjEnt) in elGetAdrEntry() argument
1237 ObjEnt = elElfDesc->ELObjectStart; in elGetAdrEntry()
1257 void* ELi_GetGlobalAdr( ELDesc* elElfDesc, ELDlld my_dlld, const char* ent_name) in ELi_GetGlobalAdr() argument
1263 if( elElfDesc == NULL) { in ELi_GetGlobalAdr()
1268 CurrentAdrEnt = elGetAdrEntry( elElfDesc, ent_name, &DmyObjEnt); in ELi_GetGlobalAdr()
1357 void ELi_SetResultCode( ELDesc* elElfDesc, ELObject* MYObject, ELResult result) in ELi_SetResultCode() argument
1359 if( elElfDesc != NULL) { in ELi_SetResultCode()
1360 elElfDesc->result = (u32)result; in ELi_SetResultCode()
1367 void ELi_SetProcCode( ELDesc* elElfDesc, ELObject* MYObject, ELProcess process) in ELi_SetProcCode() argument
1369 if( elElfDesc != NULL) { in ELi_SetProcCode()
1370 elElfDesc->process = (u32)process; in ELi_SetProcCode()