如何在英特尔SGX Enclave中实现动态加载?

时间:2017-11-14 20:33:03

标签: c++ cloud intel sgx enclave

因为英特尔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 */); }

有可能吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

根据英特尔自己的文档,您无法在ENCLAVE中加载shared_object(.so)。您需要将其转换为静态库。

plot output https://software.intel.com/en-us/node/708963

即使这样,静态库也有很多限制。