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