をコンパイルされる方法をどこで:bashの上で次にSGX飛び地:行列を行い、実際の機能が行くと、私は最初のシンプルな飛び地機能しなかった文書の多くを読んだ後、それが
enclave {
//Include files
//Import other edl files
//Data structure declarations to be used as parameters of the
//function prototypes in edl
trusted {
public function myFirstMethod([in] int *a, [in] int *b,[out] int *sum);
};
untrusted {
};
};
を私はedger8rを実行します。
あなたは、スキーマ上で見ることができるようsgx_edger8r enclave.edl
は、それから、次のファイルを生成:
だから私は、私が見つけた唯一の参照は、この関数であるenclave_t.c
上のどこかに想定しています。特に
ms->ms_retval = myFirstMethod(_in_a, _in_b);
で
static sgx_status_t SGX_CDECL sgx_myFirstMethod(void* pms)
{
CHECK_REF_POINTER(pms, sizeof(ms_myFirstMethod_t));
ms_myFirstMethod_t* ms = SGX_CAST(ms_myFirstMethod_t*, pms);
sgx_status_t status = SGX_SUCCESS;
int* _tmp_a = ms->ms_a;
size_t _len_a = sizeof(*_tmp_a);
int* _in_a = NULL;
int* _tmp_b = ms->ms_b;
size_t _len_b = sizeof(*_tmp_b);
int* _in_b = NULL;
CHECK_UNIQUE_POINTER(_tmp_a, _len_a);
CHECK_UNIQUE_POINTER(_tmp_b, _len_b);
if (_tmp_a != NULL) {
_in_a = (int*)malloc(_len_a);
if (_in_a == NULL) {
status = SGX_ERROR_OUT_OF_MEMORY;
goto err;
}
memcpy(_in_a, _tmp_a, _len_a);
}
if (_tmp_b != NULL) {
_in_b = (int*)malloc(_len_b);
if (_in_b == NULL) {
status = SGX_ERROR_OUT_OF_MEMORY;
goto err;
}
memcpy(_in_b, _tmp_b, _len_b);
}
ms->ms_retval = myFirstMethod(_in_a, _in_b);
err:
if (_in_a) free(_in_a);
if (_in_b) free(_in_b);
return status;
}
しかし、ここでmyFirstMethod
を置きますか?また、静的ライブラリとしてアプリケーションの一部として私のエンクレーブをコンパイルする方法もあります。私は、検索としてFASとして
はtheeseリンクでのチュートリアルです:
すべてがネイティブでGNU/Linuxの上で実行されないのVisual Studioに言及します私にはちょっと難しいです。
編集1:
さらに私はリンクが言及として、私はシミュレーションモードを経由コンパイルできるhttps://github.com/01org/linux-sgxに見ている探して:
make SGX_MODE=SIM
そして、私は正常に私がdriverとsdkインストールされています。私は実際のものではなく、SIMULATIONモードでコンパイルしたい。
:
enclave.cpp –