因为英特尔 SGX 围圈内不能使用任何标准库。如何在安全区内实现动态加载?例如,我在扩展名为 .so 的文件中foo1()
和foo2()
函数。
我需要在安全区内动态加载一个函数。然后,Enclave 外部的主函数可以调用加载的函数。
应用.cpp
status = ecall_dynamicLoading(enclave_id,func);
// func is a function pointer loaded from .so
// for example, func = &foo1;
飞地.cpp
ecall_dynamicLoading(func){
(*func)(/* some inputs */);
}
可能吗?
谢谢。
根据英特尔自己的文档,您无法在 ENCLAVE 内加载shared_object (.so(。您需要将其转换为静态库。
https://software.intel.com/en-us/node/708963https://software.intel.com/en-us/node/708964
即便如此,静态库也有很多限制。