Move SGX-specific image base logic to sys_common
This commit is contained in:
parent
6e7ea03c26
commit
ec8c3d9992
@ -95,7 +95,7 @@ use crate::fmt;
|
|||||||
use crate::panic::UnwindSafe;
|
use crate::panic::UnwindSafe;
|
||||||
use crate::sync::atomic::{AtomicUsize, Ordering::Relaxed};
|
use crate::sync::atomic::{AtomicUsize, Ordering::Relaxed};
|
||||||
use crate::sync::LazyLock;
|
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;
|
use crate::vec::Vec;
|
||||||
|
|
||||||
/// A captured OS thread stack backtrace.
|
/// A captured OS thread stack backtrace.
|
||||||
@ -327,11 +327,7 @@ impl Backtrace {
|
|||||||
let _lock = lock();
|
let _lock = lock();
|
||||||
let mut frames = Vec::new();
|
let mut frames = Vec::new();
|
||||||
let mut actual_start = None;
|
let mut actual_start = None;
|
||||||
#[cfg(all(target_vendor = "fortanix", target_env = "sgx"))]
|
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 _));
|
|
||||||
}
|
|
||||||
unsafe {
|
unsafe {
|
||||||
backtrace_rs::trace_unsynchronized(|frame| {
|
backtrace_rs::trace_unsynchronized(|frame| {
|
||||||
frames.push(BacktraceFrame {
|
frames.push(BacktraceFrame {
|
||||||
|
@ -64,11 +64,7 @@ unsafe fn _print_fmt(fmt: &mut fmt::Formatter<'_>, print_fmt: PrintFmt) -> fmt::
|
|||||||
let mut first_omit = true;
|
let mut first_omit = true;
|
||||||
// Start immediately if we're not using a short backtrace.
|
// Start immediately if we're not using a short backtrace.
|
||||||
let mut start = print_fmt != PrintFmt::Short;
|
let mut start = print_fmt != PrintFmt::Short;
|
||||||
#[cfg(all(target_vendor = "fortanix", target_env = "sgx"))]
|
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 _));
|
|
||||||
}
|
|
||||||
backtrace_rs::trace_unsynchronized(|frame| {
|
backtrace_rs::trace_unsynchronized(|frame| {
|
||||||
if print_fmt == PrintFmt::Short && idx > MAX_NB_FRAMES {
|
if print_fmt == PrintFmt::Short && idx > MAX_NB_FRAMES {
|
||||||
return false;
|
return false;
|
||||||
@ -218,3 +214,14 @@ pub fn output_filename(
|
|||||||
}
|
}
|
||||||
fmt::Display::fmt(&file.display(), fmt)
|
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
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user