orl_return ELFENTRY ElfFini( elf_handle elf_hnd ) { orl_return error; while( elf_hnd->first_file_hnd != NULL ) { error = ElfRemoveFileLinks( elf_hnd->first_file_hnd ); if( error != ORL_OKAY ) return( error ); } elf_hnd->funcs->free( elf_hnd ); return( ORL_OKAY ); }
orl_return ELFENTRY ElfFini( elf_handle elf_hnd ) { orl_return error; while( elf_hnd->first_file_hnd != NULL ) { error = ElfRemoveFileLinks( elf_hnd->first_file_hnd ); if( error != ORL_OKAY ) { return( error ); } } ORL_PTR_FREE( elf_hnd, elf_hnd ); return( ORL_OKAY ); }
orl_return ELFENTRY ElfFileInit( elf_handle elf_hnd, void *file, elf_file_handle *pefh ) { elf_file_handle elf_file_hnd; orl_return error; elf_file_hnd = (elf_file_handle)elf_hnd->funcs->alloc( sizeof( elf_file_handle_struct ) ); if( elf_file_hnd == NULL ) { return( ORL_OUT_OF_MEMORY ); } elf_file_hnd->elf_sec_hnd = NULL; elf_file_hnd->file = file; elf_file_hnd->sec_name_hash_table = NULL; ElfAddFileLinks( elf_hnd, elf_file_hnd ); error = ElfLoadFileStructure( elf_file_hnd ); if( error != ORL_OKAY ) { ElfRemoveFileLinks( elf_file_hnd ); elf_file_hnd = NULL; } *pefh = elf_file_hnd; return( error ); }
orl_return ELFENTRY ElfFileFini( elf_file_handle elf_file_hnd ) { return( ElfRemoveFileLinks( elf_file_hnd ) ); }