diff options
| author | Mohsen Zohrevandi <mohsen.zohrevandi@fortanix.com> | 2023-11-13 16:43:38 -0800 |
|---|---|---|
| committer | Mohsen Zohrevandi <mohsen.zohrevandi@fortanix.com> | 2023-11-14 10:27:12 -0800 |
| commit | 6e7ea03c268fea775b4b6b3edc49936272bd1d13 (patch) | |
| tree | db01d7b7260c2a2863aacaa0ca1abd218fdab207 /library/std/src/backtrace.rs | |
| parent | 4bd2fd5c831a3ce74dc0ffd37b93af775d71ae70 (diff) | |
| download | rust-6e7ea03c268fea775b4b6b3edc49936272bd1d13.tar.gz rust-6e7ea03c268fea775b4b6b3edc49936272bd1d13.zip | |
Adjust frame IP in backtraces relative to image base for SGX target
Diffstat (limited to 'library/std/src/backtrace.rs')
| -rw-r--r-- | library/std/src/backtrace.rs | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/library/std/src/backtrace.rs b/library/std/src/backtrace.rs index e7110aebdea..c1874ffc5df 100644 --- a/library/std/src/backtrace.rs +++ b/library/std/src/backtrace.rs @@ -327,6 +327,11 @@ impl Backtrace { let _lock = lock(); let mut frames = Vec::new(); let mut actual_start = None; + #[cfg(all(target_vendor = "fortanix", target_env = "sgx"))] + { + let image_base = crate::os::fortanix_sgx::mem::image_base(); + backtrace_rs::set_image_base(crate::ptr::from_exposed_addr_mut(image_base as _)); + } unsafe { backtrace_rs::trace_unsynchronized(|frame| { frames.push(BacktraceFrame { |
