]> git.proxmox.com Git - rustc.git/blobdiff - vendor/backtrace/src/backtrace/dbghelp.rs
New upstream version 1.46.0~beta.2+dfsg1
[rustc.git] / vendor / backtrace / src / backtrace / dbghelp.rs
index 40de1437c1b70af75c492af904464a49df2dee68..cbfa4ec1203818e5e80f23164584bcce000031dd 100644 (file)
@@ -42,6 +42,10 @@ impl Frame {
         self.addr_pc().Offset as *mut _
     }
 
+    pub fn sp(&self) -> *mut c_void {
+        self.addr_stack().Offset as *mut _
+    }
+
     pub fn symbol_address(&self) -> *mut c_void {
         self.ip()
     }
@@ -67,6 +71,13 @@ impl Frame {
         }
     }
 
+    fn addr_stack(&self) -> &ADDRESS64 {
+        match self {
+            Frame::New(new) => &new.AddrStack,
+            Frame::Old(old) => &old.AddrStack,
+        }
+    }
+
     fn addr_stack_mut(&mut self) -> &mut ADDRESS64 {
         match self {
             Frame::New(new) => &mut new.AddrStack,
@@ -79,7 +90,7 @@ impl Frame {
 struct MyContext(CONTEXT);
 
 #[inline(always)]
-pub unsafe fn trace(cb: &mut FnMut(&super::Frame) -> bool) {
+pub unsafe fn trace(cb: &mut dyn FnMut(&super::Frame) -> bool) {
     // Allocate necessary structures for doing the stack walk
     let process = GetCurrentProcess();
     let thread = GetCurrentThread();