about summary refs log tree commit diff
path: root/library/std
diff options
context:
space:
mode:
authorMohsen Zohrevandi <mohsen.zohrevandi@fortanix.com>2023-11-14 13:27:57 -0800
committerMohsen Zohrevandi <mohsen.zohrevandi@fortanix.com>2023-11-14 13:27:57 -0800
commitec8c3d9992661f078152b0e1f53b1a96fce090ca (patch)
tree4a34be56c3a38b2362a047d85e1a9fcb8ccda70d /library/std
parent6e7ea03c268fea775b4b6b3edc49936272bd1d13 (diff)
downloadrust-ec8c3d9992661f078152b0e1f53b1a96fce090ca.tar.gz
rust-ec8c3d9992661f078152b0e1f53b1a96fce090ca.zip
Move SGX-specific image base logic to sys_common
Diffstat (limited to 'library/std')
-rw-r--r--library/std/src/backtrace.rs8
-rw-r--r--library/std/src/sys_common/backtrace.rs17
2 files changed, 14 insertions, 11 deletions
diff --git a/library/std/src/backtrace.rs b/library/std/src/backtrace.rs
index c1874ffc5df..7fcf2ee358c 100644
--- a/library/std/src/backtrace.rs
+++ b/library/std/src/backtrace.rs
@@ -95,7 +95,7 @@ use crate::fmt;
 use crate::panic::UnwindSafe;
 use crate::sync::atomic::{AtomicUsize, Ordering::Relaxed};
 use crate::sync::LazyLock;
-use crate::sys_common::backtrace::{lock, output_filename};
+use crate::sys_common::backtrace::{lock, output_filename, set_image_base};
 use crate::vec::Vec;
 
 /// A captured OS thread stack backtrace.
@@ -327,11 +327,7 @@ 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 _));
-        }
+        set_image_base();
         unsafe {
             backtrace_rs::trace_unsynchronized(|frame| {
                 frames.push(BacktraceFrame {
diff --git a/library/std/src/sys_common/backtrace.rs b/library/std/src/sys_common/backtrace.rs
index e2acc6a2044..d680bd33279 100644
--- a/library/std/src/sys_common/backtrace.rs
+++ b/library/std/src/sys_common/backtrace.rs
@@ -64,11 +64,7 @@ unsafe fn _print_fmt(fmt: &mut fmt::Formatter<'_>, print_fmt: PrintFmt) -> fmt::
     let mut first_omit = true;
     // Start immediately if we're not using a short backtrace.
     let mut start = print_fmt != PrintFmt::Short;
-    #[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 _));
-    }
+    set_image_base();
     backtrace_rs::trace_unsynchronized(|frame| {
         if print_fmt == PrintFmt::Short && idx > MAX_NB_FRAMES {
             return false;
@@ -218,3 +214,14 @@ pub fn output_filename(
     }
     fmt::Display::fmt(&file.display(), fmt)
 }
+
+#[cfg(all(target_vendor = "fortanix", target_env = "sgx"))]
+pub fn set_image_base() {
+    let image_base = crate::os::fortanix_sgx::mem::image_base();
+    backtrace_rs::set_image_base(crate::ptr::from_exposed_addr_mut(image_base as _));
+}
+
+#[cfg(not(all(target_vendor = "fortanix", target_env = "sgx")))]
+pub fn set_image_base() {
+    // nothing to do for platforms other than SGX
+}