如何使用允許sgx_emmt報告記憶體使用數據的符號生成指定位址空間映像
- 使用 sgx-gdb 調試了 Intel® Software Guard Extensions (Intel® SGX) 應用程式,並使用 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.
根據 Linux* 版Intel® Software Guard Extensions (Intel® SGX) 開發者參考指南的 Enclave Memory Measurement Tool 部分,導出指定地址空間版本腳本中的符號 g_peak_heap_used 和 g_peak_rsrv_mem_committed,並將指定地址空間映射與版本腳本連結,如下所述。
請參考 Intel SGX SDK 中的 SampleEnclave,以重用其 Makefile 和版本腳本 SampleEnclave/Enclave/Enclave.lds。
- 使用 指定位址空間版本文稿的內容建立檔案:
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* 的最新Intel® Software Guard Extensions開發人員參考指南位於適用於Linux* Intel® Software Guard Extensions SDK 最新版本的“文檔”部分。