sgx_emmtがメモリー使用量データを報告できるようにするシンボルを含むエンクレーブ画像を生成する方法
- インテル® Software Guard Extensions (インテル® SGX) アプリケーションを sgx-gdb でデバッグし、 sgx_emmt を使用してメモリー使用量を表示
- スタックの使用状況は表示されますが、ピークヒープとコミットされた予約メモリは表示されません。
[Peak stack used]: 7 KB
[Can't get peak heap used]: You may use version script to control symbol export. Please export 'g_peak_heap_used' in your version script.
[Can't get peak committed reserved memory]: You may use version script to control symbol export. Please export 'g_peak_rsrv_mem_committed' in your version script.
インテル® Software Guard Extensions (インテル® SGX) Developer Reference Guide for Linux* の エンクレーブ・メモリー測定ツール のセクションに従って、エンクレーブのバージョンスクリプト内のシンボルg_peak_heap_usedとg_peak_rsrv_mem_committedをエクスポートし、以下に説明するようにエンクレーブ・イメージをバージョン・スクリプトにリンクします。
Makefile とバージョンスクリプト SampleEnclave/Enclave/Enclave.lds を再利用するには、インテル SGX SDK の SampleEnclave を参照してください。
- エンクレーブ・バージョン・スクリプトの内容でファイルを作成します。
enclave.so
{
global:
g_global_data_sim;
g_global_data;
enclave_entry;
g_peak_heap_used;
g_peak_rsrv_mem_committed;
local:
*;
};
- スクリプトをエンクレーブのソース・ディレクトリーに Enclave.lds という名前で保存します。
- エンクレーブをバージョンスクリプトにリンクし、次のように Makefile でシンボル__ImageBaseを定義します。
$ ld -o enclave.so file1.o file2.o \
-pie -eenclave_entry -nostdlib -nodefaultlibs –nostartfiles --no-undefined \
--whole-archive –lsgx_trts --no-whole-archive \
--start-group –lsgx_tstdc ––lsgx_tservice -lsgx_crypto -
-end-group \
-Bstatic -Bsymbolic --defsym=__ImageBase=0 --exportdynamic \
--version-script=enclave.lds
Linux* 向け最新のインテル® Software Guard Extensions開発者リファレンス・ガイドは、インテル® Software Guard Extensions SDK for Linux* の最新リリースの ドキュメント セクションにあります。