Skip to content

Commit ec8c3d9

Browse files
committed
Move SGX-specific image base logic to sys_common
1 parent 6e7ea03 commit ec8c3d9

File tree

2 files changed

+14
-11
lines changed

2 files changed

+14
-11
lines changed

library/std/src/backtrace.rs

+2-6
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ use crate::fmt;
9595
use crate::panic::UnwindSafe;
9696
use crate::sync::atomic::{AtomicUsize, Ordering::Relaxed};
9797
use crate::sync::LazyLock;
98-
use crate::sys_common::backtrace::{lock, output_filename};
98+
use crate::sys_common::backtrace::{lock, output_filename, set_image_base};
9999
use crate::vec::Vec;
100100

101101
/// A captured OS thread stack backtrace.
@@ -327,11 +327,7 @@ impl Backtrace {
327327
let _lock = lock();
328328
let mut frames = Vec::new();
329329
let mut actual_start = None;
330-
#[cfg(all(target_vendor = "fortanix", target_env = "sgx"))]
331-
{
332-
let image_base = crate::os::fortanix_sgx::mem::image_base();
333-
backtrace_rs::set_image_base(crate::ptr::from_exposed_addr_mut(image_base as _));
334-
}
330+
set_image_base();
335331
unsafe {
336332
backtrace_rs::trace_unsynchronized(|frame| {
337333
frames.push(BacktraceFrame {

library/std/src/sys_common/backtrace.rs

+12-5
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,7 @@ unsafe fn _print_fmt(fmt: &mut fmt::Formatter<'_>, print_fmt: PrintFmt) -> fmt::
6464
let mut first_omit = true;
6565
// Start immediately if we're not using a short backtrace.
6666
let mut start = print_fmt != PrintFmt::Short;
67-
#[cfg(all(target_vendor = "fortanix", target_env = "sgx"))]
68-
{
69-
let image_base = crate::os::fortanix_sgx::mem::image_base();
70-
backtrace_rs::set_image_base(crate::ptr::from_exposed_addr_mut(image_base as _));
71-
}
67+
set_image_base();
7268
backtrace_rs::trace_unsynchronized(|frame| {
7369
if print_fmt == PrintFmt::Short && idx > MAX_NB_FRAMES {
7470
return false;
@@ -218,3 +214,14 @@ pub fn output_filename(
218214
}
219215
fmt::Display::fmt(&file.display(), fmt)
220216
}
217+
218+
#[cfg(all(target_vendor = "fortanix", target_env = "sgx"))]
219+
pub fn set_image_base() {
220+
let image_base = crate::os::fortanix_sgx::mem::image_base();
221+
backtrace_rs::set_image_base(crate::ptr::from_exposed_addr_mut(image_base as _));
222+
}
223+
224+
#[cfg(not(all(target_vendor = "fortanix", target_env = "sgx")))]
225+
pub fn set_image_base() {
226+
// nothing to do for platforms other than SGX
227+
}

0 commit comments

Comments
 (0)