intel / linux-sgx

Intel SGX for Linux*
https://www.intel.com/content/www/us/en/developer/tools/software-guard-extensions/linux-overview.html
Other
1.32k stars 544 forks source link

Help: port libmysqlclient #917

Open ChuanDou2021 opened 1 year ago

ChuanDou2021 commented 1 year ago

I want port libmysqlclient to sgx. Because of lack of experience porting c lib to sgx, hope to get some feasible suggestions:

I have built MySQL and MariaDB 2 verions libmysqlclient.so, and got informations of dependent libs and functions as follows:

MySQL

root# ldd ./library_output_directory/libmysqlclient.so linux-vdso.so.1 (0x00007fffcb34d000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007efd6edc9000) libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007efd6ed36000) libcrypto.so.1.1 => /lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007efd6ea60000) libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007efd6ea44000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007efd6ea21000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007efd6e83d000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007efd6e822000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007efd6e630000) /lib64/ld-linux-x86-64.so.2 (0x00007efd6f516000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007efd6e4e1000)

root# nm -gu ./library_output_directory/libmysqlclient.so U BIO_ctrl@@OPENSSL_1_1_0 U BIO_free@@OPENSSL_1_1_0 U BIO_new@@OPENSSL_1_1_0 U BIO_new_bio_pair@@OPENSSL_1_1_0 U BIO_new_mem_buf@@OPENSSL_1_1_0 U BIO_s_mem@@OPENSSL_1_1_0 U BN_bin2bn@@OPENSSL_1_1_0 U DH_free@@OPENSSL_1_1_0 U DH_new@@OPENSSL_1_1_0 U DH_set0_pqg@@OPENSSL_1_1_0 U ERR_clear_error@@OPENSSL_1_1_0 U ERR_error_string_n@@OPENSSL_1_1_0 U ERR_get_error@@OPENSSL_1_1_0 U ERR_get_error_line_data@@OPENSSL_1_1_0 U EVP_CIPHER_CTX_free@@OPENSSL_1_1_0 U EVP_CIPHER_CTX_new@@OPENSSL_1_1_0 U EVP_CIPHER_CTX_set_padding@@OPENSSL_1_1_0 U EVP_CIPHER_block_size@@OPENSSL_1_1_0 U EVP_CIPHER_iv_length@@OPENSSL_1_1_0 U EVP_DecryptFinal_ex@@OPENSSL_1_1_0 U EVP_DecryptInit@@OPENSSL_1_1_0 U EVP_DecryptUpdate@@OPENSSL_1_1_0 U EVP_DigestFinal_ex@@OPENSSL_1_1_0 U EVP_DigestInit_ex@@OPENSSL_1_1_0 U EVP_DigestUpdate@@OPENSSL_1_1_0 U EVP_EncryptFinal@@OPENSSL_1_1_0 U EVP_EncryptInit@@OPENSSL_1_1_0 U EVP_EncryptUpdate@@OPENSSL_1_1_0 U EVP_MD_CTX_free@@OPENSSL_1_1_0 U EVP_MD_CTX_new@@OPENSSL_1_1_0 U EVP_MD_CTX_reset@@OPENSSL_1_1_0 U EVP_PKEY_CTX_ctrl@@OPENSSL_1_1_0 U EVP_PKEY_CTX_free@@OPENSSL_1_1_0 U EVP_PKEY_CTX_new_id@@OPENSSL_1_1_0 U EVP_PKEY_derive@@OPENSSL_1_1_0 U EVP_PKEY_derive_init@@OPENSSL_1_1_0 U EVP_aes_128_cbc@@OPENSSL_1_1_0 U EVP_aes_128_cfb128@@OPENSSL_1_1_0 U EVP_aes_128_cfb1@@OPENSSL_1_1_0 U EVP_aes_128_cfb8@@OPENSSL_1_1_0 U EVP_aes_128_ecb@@OPENSSL_1_1_0 U EVP_aes_128_ofb@@OPENSSL_1_1_0 U EVP_aes_192_cbc@@OPENSSL_1_1_0 U EVP_aes_192_cfb128@@OPENSSL_1_1_0 U EVP_aes_192_cfb1@@OPENSSL_1_1_0 U EVP_aes_192_cfb8@@OPENSSL_1_1_0 U EVP_aes_192_ecb@@OPENSSL_1_1_0 U EVP_aes_192_ofb@@OPENSSL_1_1_0 U EVP_aes_256_cbc@@OPENSSL_1_1_0 U EVP_aes_256_cfb128@@OPENSSL_1_1_0 U EVP_aes_256_cfb1@@OPENSSL_1_1_0 U EVP_aes_256_cfb8@@OPENSSL_1_1_0 U EVP_aes_256_ecb@@OPENSSL_1_1_0 U EVP_aes_256_ofb@@OPENSSL_1_1_0 U EVP_sha1@@OPENSSL_1_1_0 U EVP_sha256@@OPENSSL_1_1_0 U EVP_sha512@@OPENSSL_1_1_0 U FIPS_mode@@OPENSSL_1_1_0 U FIPS_mode_set@@OPENSSL_1_1_0 U OPENSSL_init_crypto@@OPENSSL_1_1_0 U OPENSSL_init_ssl@@OPENSSL_1_1_0 U PEM_read_RSA_PUBKEY@@OPENSSL_1_1_0 U PEM_read_bio_RSA_PUBKEY@@OPENSSL_1_1_0 U PEM_read_bio_SSL_SESSION@@OPENSSL_1_1_0 U PEM_write_bio_SSL_SESSION@@OPENSSL_1_1_0 U PKCS5_PBKDF2_HMAC@@OPENSSL_1_1_0 U RAND_bytes@@OPENSSL_1_1_0 U RSA_free@@OPENSSL_1_1_0 U RSA_public_encrypt@@OPENSSL_1_1_0 U RSA_size@@OPENSSL_1_1_0 U SSL_CIPHER_get_name@@OPENSSL_1_1_0 U SSL_CTX_check_private_key@@OPENSSL_1_1_0 U SSL_CTX_ctrl@@OPENSSL_1_1_0 U SSL_CTX_free@@OPENSSL_1_1_0 U SSL_CTX_get0_param@@OPENSSL_1_1_0 U SSL_CTX_get_cert_store@@OPENSSL_1_1_0 U SSL_CTX_load_verify_locations@@OPENSSL_1_1_0 U SSL_CTX_new@@OPENSSL_1_1_0 U SSL_CTX_set_cipher_list@@OPENSSL_1_1_0 U SSL_CTX_set_ciphersuites@@OPENSSL_1_1_1 U SSL_CTX_set_default_verify_paths@@OPENSSL_1_1_0 U SSL_CTX_set_options@@OPENSSL_1_1_0 U SSL_CTX_set_session_id_context@@OPENSSL_1_1_0 U SSL_CTX_set_verify@@OPENSSL_1_1_0 U SSL_CTX_use_PrivateKey_file@@OPENSSL_1_1_0 U SSL_CTX_use_certificate_chain_file@@OPENSSL_1_1_0 U SSL_SESSION_free@@OPENSSL_1_1_0 U SSL_SESSION_is_resumable@@OPENSSL_1_1_1 U SSL_SESSION_set_timeout@@OPENSSL_1_1_0 U SSL_accept@@OPENSSL_1_1_0 U SSL_clear@@OPENSSL_1_1_0 U SSL_connect@@OPENSSL_1_1_0 U SSL_free@@OPENSSL_1_1_0 U SSL_get1_session@@OPENSSL_1_1_0 U SSL_get_current_cipher@@OPENSSL_1_1_0 U SSL_get_error@@OPENSSL_1_1_0 U SSL_get_fd@@OPENSSL_1_1_0 U SSL_get_peer_certificate@@OPENSSL_1_1_0 U SSL_get_session@@OPENSSL_1_1_0 U SSL_get_verify_result@@OPENSSL_1_1_0 U SSL_new@@OPENSSL_1_1_0 U SSL_pending@@OPENSSL_1_1_0 U SSL_read@@OPENSSL_1_1_0 U SSL_session_reused@@OPENSSL_1_1_0 U SSL_set_fd@@OPENSSL_1_1_0 U SSL_set_options@@OPENSSL_1_1_0 U SSL_set_quiet_shutdown@@OPENSSL_1_1_0 U SSL_set_session@@OPENSSL_1_1_0 U SSL_shutdown@@OPENSSL_1_1_0 U SSL_write@@OPENSSL_1_1_0 U TLS_client_method@@OPENSSL_1_1_0 U TLS_server_method@@OPENSSL_1_1_0 U X509_STORE_load_locations@@OPENSSL_1_1_0 U X509_STORE_set_flags@@OPENSSL_1_1_0 U X509_VERIFY_PARAM_set1_host@@OPENSSL_1_1_0 U X509_VERIFY_PARAM_set1_ip_asc@@OPENSSL_1_1_0 U X509_free@@OPENSSL_1_1_0 w ZSTD_trace_compress_begin w ZSTD_trace_compress_end w ZSTD_trace_decompress_begin w ZSTD_trace_decompress_end w _ITM_deregisterTMCloneTable w _ITM_registerTMCloneTable U _Unwind_Resume@@GCC_3.0 U _ZNKSt7cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcmm@@GLIBCXX_3.4.21 U _ZNKSt7cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc@@GLIBCXX_3.4.21 U _ZNKSt7cxx1112basic_stringIcSt11chartraitsIcESaIcEE7compareEmmRKS4@@GLIBCXX_3.4.21 U _ZNKSt8detail20_Prime_rehash_policy11_M_next_bktEm@@GLIBCXX_3.4.18 U _ZNKSt8detail20_Prime_rehash_policy14_M_need_rehashEmmm@@GLIBCXX_3.4.18 U _ZNSt6localeC1Ev@@GLIBCXX_3.4 U _ZNSt6localeD1Ev@@GLIBCXX_3.4 U _ZNSt7cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm@@GLIBCXX_3.4.21 U _ZNSt7cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm@@GLIBCXX_3.4.21 U _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_MassignERKS4@@GLIBCXX_3.4.21 U _ZNSt7cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm@@GLIBCXX_3.4.21 U _ZNSt7cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm@@GLIBCXX_3.4.21 U _ZNSt7cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@@GLIBCXX_3.4.21 U _ZNSt7cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21 U _ZNSt8detail15_List_node_base7_MhookEPS0@@GLIBCXX_3.4.15 U _ZNSt8detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15 U _ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4 U _ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4 U _ZNSt8ios_baseC2Ev@@GLIBCXX_3.4 U _ZNSt8ios_baseD2Ev@@GLIBCXX_3.4 U _ZNSt9bad_allocD1Ev@@GLIBCXX_3.4 U _ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@@GLIBCXX_3.4 U _ZNSt9exceptionD2Ev@@GLIBCXX_3.4 U _ZSt11_Hash_bytesPKvmm@@CXXABI_1.3.5 U _ZSt11once_call@@GLIBCXX_3.4.11 U _ZSt15once_callable@@GLIBCXX_3.4.11 U _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9 U _ZSt17throw_bad_allocv@@GLIBCXX_3.4 U _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4 U _ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4 U _ZSt19throw_logic_errorPKc@@GLIBCXX_3.4 U _ZSt20throw_length_errorPKc@@GLIBCXX_3.4 U _ZSt20throw_system_errori@@GLIBCXX_3.4.11 U _ZSt24throw_out_of_range_fmtPKcz@@GLIBCXX_3.4.20 U _ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_nodebaseRS@@GLIBCXX_3.4 U _ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0RS@@GLIBCXX_3.4 U _ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7cxx1112basic_stringIS4_S5_T1EES4@@GLIBCXX_3.4.21 U _ZSt7nothrow@@GLIBCXX_3.4 U _ZTISt9bad_alloc@@GLIBCXX_3.4 U _ZTISt9exception@@GLIBCXX_3.4 U _ZTTNSt7cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 U _ZTVN10cxxabiv117class_type_infoE@@CXXABI_1.3 U _ZTVN10cxxabiv120si_class_type_infoE@@CXXABI_1.3 U _ZTVNSt7cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 U _ZTVNSt7cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 U _ZTVSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 U _ZTVSt9bad_alloc@@GLIBCXX_3.4 U _ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4 U _ZdaPv@@GLIBCXX_3.4 U _ZdlPv@@GLIBCXX_3.4 U _ZdlPvRKSt9nothrow_t@@GLIBCXX_3.4 U _ZdlPvm@@CXXABI_1.3.9 U _Znam@@GLIBCXX_3.4 U _Znwm@@GLIBCXX_3.4 U _ZnwmRKSt9nothrow_t@@GLIBCXX_3.4 U cxa_allocate_exception@@CXXABI_1.3 U cxa_atexit@@GLIBC_2.2.5 U cxa_begin_catch@@CXXABI_1.3 U cxa_end_catch@@CXXABI_1.3 w cxa_finalize@@GLIBC_2.2.5 U cxa_rethrow@@CXXABI_1.3 U cxa_throw@@CXXABI_1.3 U dn_expand@@GLIBC_2.2.5 U errno_location@@GLIBC_2.2.5 U fprintf_chk@@GLIBC_2.3.4 U fxstat64@@GLIBC_2.2.5 w __gmon_start U gxx_personality_v0@@CXXABI_1.3 U __h_errno_location@@GLIBC_2.2.5 U lxstat64@@GLIBC_2.2.5 U memcpy_chk@@GLIBC_2.3.4 U memmove_chk@@GLIBC_2.3.4 U memset_chk@@GLIBC_2.3.4 U once_proxy@@GLIBCXX_3.4.11 U popcountdi2@@GCC_3.4 U printf_chk@@GLIBC_2.3.4 w pthread_key_create@@GLIBC_2.2.5 U res_nclose@@GLIBC_2.2.5 U res_ninit@@GLIBC_2.2.5 U res_nsearch@@GLIBC_2.2.5 U snprintf_chk@@GLIBC_2.3.4 U sprintf_chk@@GLIBC_2.3.4 U __stack_chk_fail@@GLIBC_2.4 U strncat_chk@@GLIBC_2.3.4 U strncpy_chk@@GLIBC_2.3.4 U vsnprintf_chk@@GLIBC_2.3.4 U xstat64@@GLIBC_2.2.5 U abort@@GLIBC_2.2.5 U bind@@GLIBC_2.2.5 U calloc@@GLIBC_2.2.5 U chdir@@GLIBC_2.2.5 U close@@GLIBC_2.2.5 U closedir@@GLIBC_2.2.5 U connect@@GLIBC_2.2.5 U dlclose@@GLIBC_2.2.5 U dlerror@@GLIBC_2.2.5 U dlopen@@GLIBC_2.2.5 U dlsym@@GLIBC_2.2.5 U exit@@GLIBC_2.2.5 U fclose@@GLIBC_2.2.5 U fcntl64@@GLIBC_2.28 U fdopen@@GLIBC_2.2.5 U ferror@@GLIBC_2.2.5 U fflush@@GLIBC_2.2.5 U fgets@@GLIBC_2.2.5 U fileno@@GLIBC_2.2.5 U fopen64@@GLIBC_2.2.5 U fputc@@GLIBC_2.2.5 U fputs@@GLIBC_2.2.5 U fread@@GLIBC_2.2.5 U free@@GLIBC_2.2.5 U freeaddrinfo@@GLIBC_2.2.5 U freopen64@@GLIBC_2.2.5 U fseeko64@@GLIBC_2.2.5 U ftello64@@GLIBC_2.2.5 U fwrite@@GLIBC_2.2.5 U getaddrinfo@@GLIBC_2.2.5 U getcwd@@GLIBC_2.2.5 U getenv@@GLIBC_2.2.5 U geteuid@@GLIBC_2.2.5 U getlogin@@GLIBC_2.2.5 U getnameinfo@@GLIBC_2.2.5 U getpass@@GLIBC_2.2.5 U getpeername@@GLIBC_2.2.5 U getpid@@GLIBC_2.2.5 U getpwnam_r@@GLIBC_2.2.5 U getpwuid@@GLIBC_2.2.5 U getpwuid_r@@GLIBC_2.2.5 U getrlimit64@@GLIBC_2.2.5 U getrusage@@GLIBC_2.2.5 U getservbyname@@GLIBC_2.2.5 U getsockname@@GLIBC_2.2.5 U getsockopt@@GLIBC_2.2.5 U ioctl@@GLIBC_2.2.5 U ispunct@@GLIBC_2.2.5 U isspace@@GLIBC_2.2.5 U localtime_r@@GLIBC_2.2.5 U malloc@@GLIBC_2.2.5 U memcmp@@GLIBC_2.2.5 U memcpy@@GLIBC_2.14 U memmove@@GLIBC_2.2.5 U memset@@GLIBC_2.2.5 U nl_langinfo@@GLIBC_2.2.5 U ns_initparse@@GLIBC_2.9 U ns_parserr@@GLIBC_2.9 U open64@@GLIBC_2.2.5 U opendir@@GLIBC_2.2.5 U ppoll@@GLIBC_2.4 U pthread_kill@@GLIBC_2.2.5 U pthread_mutex_destroy@@GLIBC_2.2.5 U pthread_mutex_init@@GLIBC_2.2.5 U pthread_mutex_lock@@GLIBC_2.2.5 U pthread_mutex_unlock@@GLIBC_2.2.5 U pthread_mutexattr_destroy@@GLIBC_2.2.5 U pthread_mutexattr_init@@GLIBC_2.2.5 U pthread_mutexattr_settype@@GLIBC_2.2.5 w pthread_once@@GLIBC_2.2.5 U putc@@GLIBC_2.2.5 U puts@@GLIBC_2.2.5 U qsort@@GLIBC_2.2.5 U rand@@GLIBC_2.2.5 U read@@GLIBC_2.2.5 U readdir64@@GLIBC_2.2.5 U readlink@@GLIBC_2.2.5 U realloc@@GLIBC_2.2.5 U realpath@@GLIBC_2.3 U recv@@GLIBC_2.2.5 U send@@GLIBC_2.2.5 U setlocale@@GLIBC_2.2.5 U setrlimit64@@GLIBC_2.2.5 U setsockopt@@GLIBC_2.2.5 U shutdown@@GLIBC_2.2.5 U sigemptyset@@GLIBC_2.2.5 U signal@@GLIBC_2.2.5 U sleep@@GLIBC_2.2.5 U snprintf@@GLIBC_2.2.5 U socket@@GLIBC_2.2.5 U stderr@@GLIBC_2.2.5 U stdout@@GLIBC_2.2.5 U stpcpy@@GLIBC_2.2.5 U strchr@@GLIBC_2.2.5 U strcmp@@GLIBC_2.2.5 U strcpy@@GLIBC_2.2.5 U strcspn@@GLIBC_2.2.5 U strerror_r@@GLIBC_2.2.5 U strlen@@GLIBC_2.2.5 U strncasecmp@@GLIBC_2.2.5 U strncat@@GLIBC_2.2.5 U strncmp@@GLIBC_2.2.5 U strncpy@@GLIBC_2.2.5 U strrchr@@GLIBC_2.2.5 U strstr@@GLIBC_2.2.5 U strtok_r@@GLIBC_2.2.5 U strtol@@GLIBC_2.2.5 U strtoll@@GLIBC_2.2.5 U strtoul@@GLIBC_2.2.5 U strtoull@@GLIBC_2.2.5 U symlink@@GLIBC_2.2.5 U sysconf@@GLIBC_2.2.5 U time@@GLIBC_2.2.5

MariaDB

root# ldd libmariadb/libmariadb/libmariadb.so.3 linux-vdso.so.1 (0x00007ffde6fa6000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f3dd3b30000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f3dd3b0d000) libgnutls.so.30 => /lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007f3dd3937000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3dd3745000) /lib64/ld-linux-x86-64.so.2 (0x00007f3dd3bac000) libp11-kit.so.0 => /lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f3dd360f000) libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x00007f3dd35ec000) libunistring.so.2 => /lib/x86_64-linux-gnu/libunistring.so.2 (0x00007f3dd346a000) libtasn1.so.6 => /lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f3dd3454000) libnettle.so.7 => /lib/x86_64-linux-gnu/libnettle.so.7 (0x00007f3dd341a000) libhogweed.so.5 => /lib/x86_64-linux-gnu/libhogweed.so.5 (0x00007f3dd33e3000) libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f3dd335f000) libffi.so.7 => /lib/x86_64-linux-gnu/libffi.so.7 (0x00007f3dd3351000)

root# nm -gu libmariadb/libmariadb/libmariadb.so.3 w _ITM_deregisterTMCloneTable w _ITM_registerTMCloneTable U ctype_b_loc@@GLIBC_2.3 U __ctype_toupper_loc@@GLIBC_2.3 w cxa_finalize@@GLIBC_2.2.5 U errno_location@@GLIBC_2.2.5 w gmon_start U memcpy_chk@@GLIBC_2.3.4 U memset_chk@@GLIBC_2.3.4 U snprintf_chk@@GLIBC_2.3.4 U sprintf_chk@@GLIBC_2.3.4 U stack_chk_fail@@GLIBC_2.4 U strcat_chk@@GLIBC_2.3.4 U strncat_chk@@GLIBC_2.3.4 U vsnprintf_chk@@GLIBC_2.3.4 U xpg_strerror_r@@GLIBC_2.3.4 U access@@GLIBC_2.2.5 U bind@@GLIBC_2.2.5 U calloc@@GLIBC_2.2.5 U close@@GLIBC_2.2.5 U connect@@GLIBC_2.2.5 U dlclose@@GLIBC_2.2.5 U dlerror@@GLIBC_2.2.5 U dlopen@@GLIBC_2.2.5 U dlsym@@GLIBC_2.2.5 U fclose@@GLIBC_2.2.5 U fcntl64@@GLIBC_2.28 U feof@@GLIBC_2.2.5 U fgets@@GLIBC_2.2.5 U fopen64@@GLIBC_2.2.5 U fread@@GLIBC_2.2.5 U free@@GLIBC_2.2.5 U freeaddrinfo@@GLIBC_2.2.5 U getaddrinfo@@GLIBC_2.2.5 U getenv@@GLIBC_2.2.5 U geteuid@@GLIBC_2.2.5 U getlogin@@GLIBC_2.2.5 U getpid@@GLIBC_2.2.5 U getpwuid@@GLIBC_2.2.5 U getservbyname@@GLIBC_2.2.5 U getsockopt@@GLIBC_2.2.5 U gnutls_alert_get@@GNUTLS_3_4 U gnutls_alert_get_name@@GNUTLS_3_4 U gnutls_certificate_allocate_credentials@@GNUTLS_3_4 U gnutls_certificate_free_ca_names@@GNUTLS_3_4 U gnutls_certificate_free_cas@@GNUTLS_3_4 U gnutls_certificate_free_credentials@@GNUTLS_3_4 U gnutls_certificate_free_crls@@GNUTLS_3_4 U gnutls_certificate_free_keys@@GNUTLS_3_4 U gnutls_certificate_get_peers@@GNUTLS_3_4 U gnutls_certificate_set_verify_function@@GNUTLS_3_4 U gnutls_certificate_set_x509_crl_file@@GNUTLS_3_4 U gnutls_certificate_set_x509_key_file2@@GNUTLS_3_4 U gnutls_certificate_set_x509_system_trust@@GNUTLS_3_4 U gnutls_certificate_set_x509_trust_dir@@GNUTLS_3_4 U gnutls_certificate_set_x509_trust_file@@GNUTLS_3_4 U gnutls_certificate_type_get@@GNUTLS_3_4 U gnutls_certificate_verification_status_print@@GNUTLS_3_4 U gnutls_certificate_verify_peers2@@GNUTLS_3_4 U gnutls_certificate_verify_peers3@@GNUTLS_3_4 U gnutls_check_version@@GNUTLS_3_4 U gnutls_cipher_get@@GNUTLS_3_4 U gnutls_cipher_get_name@@GNUTLS_3_4 U gnutls_cipher_suite_info@@GNUTLS_3_4 U gnutls_credentials_get@@GNUTLS_3_4 U gnutls_credentials_set@@GNUTLS_3_4 U gnutls_deinit@@GNUTLS_3_4 U gnutls_error_is_fatal@@GNUTLS_3_4 U gnutls_fingerprint@@GNUTLS_3_4 U gnutls_free@@GNUTLS_3_4 U gnutls_global_deinit@@GNUTLS_3_4 U gnutls_global_init@@GNUTLS_3_4 U gnutls_handshake@@GNUTLS_3_4 U gnutls_init@@GNUTLS_3_4 U gnutls_kx_get@@GNUTLS_3_4 U gnutls_kx_get_name@@GNUTLS_3_4 U gnutls_mac_get@@GNUTLS_3_4 U gnutls_mac_get_name@@GNUTLS_3_4 U gnutls_priority_set_direct@@GNUTLS_3_4 U gnutls_protocol_get_version@@GNUTLS_3_4 U gnutls_record_recv@@GNUTLS_3_4 U gnutls_record_send@@GNUTLS_3_4 U gnutls_session_get_ptr@@GNUTLS_3_4 U gnutls_session_set_ptr@@GNUTLS_3_4 U gnutls_strerror@@GNUTLS_3_4 U gnutls_transport_set_int2@@GNUTLS_3_4 U malloc@@GLIBC_2.2.5 U memcmp@@GLIBC_2.2.5 U memcpy@@GLIBC_2.14 U memmove@@GLIBC_2.2.5 U memset@@GLIBC_2.2.5 U nl_langinfo@@GLIBC_2.2.5 U poll@@GLIBC_2.2.5 U pthread_mutex_destroy@@GLIBC_2.2.5 U pthread_mutex_init@@GLIBC_2.2.5 U pthread_mutex_lock@@GLIBC_2.2.5 U pthread_mutex_unlock@@GLIBC_2.2.5 U pthread_once@@GLIBC_2.2.5 U qsort@@GLIBC_2.2.5 U realloc@@GLIBC_2.2.5 U recv@@GLIBC_2.2.5 U send@@GLIBC_2.2.5 U setlocale@@GLIBC_2.2.5 U setsockopt@@GLIBC_2.2.5 U shutdown@@GLIBC_2.2.5 U signal@@GLIBC_2.2.5 U socket@@GLIBC_2.2.5 U strcasecmp@@GLIBC_2.2.5 U strchr@@GLIBC_2.2.5 U strcmp@@GLIBC_2.2.5 U strcpy@@GLIBC_2.2.5 U strdup@@GLIBC_2.2.5 U strlen@@GLIBC_2.2.5 U strncasecmp@@GLIBC_2.2.5 U strncmp@@GLIBC_2.2.5 U strncpy@@GLIBC_2.2.5 U strpbrk@@GLIBC_2.2.5 U strstr@@GLIBC_2.2.5 U strtod@@GLIBC_2.2.5 U strtok@@GLIBC_2.2.5 U strtok_r@@GLIBC_2.2.5 U strtol@@GLIBC_2.2.5 U strtoul@@GLIBC_2.2.5 U time@@GLIBC_2.2.5 U usleep@@GLIBC_2.2.5

lzha101 commented 1 year ago

Seems the library depends on lots of unsupported functions inside enclave. If you want to port a library into SGX enclave, you need to go though the library implementation and resolve all the unsupported functions by either commenting out some unnecessary functionalities or providing some ocalls or some replacement supported inside enclave.
And please note that currently it is only allowed to build an enclave linking with trusted static libraries. So you need to make sure your ported trusted library is a static library as well.