diff options
| author | John Kåre Alsaker <john.kare.alsaker@gmail.com> | 2018-12-31 21:48:06 +0100 |
|---|---|---|
| committer | John Kåre Alsaker <john.kare.alsaker@gmail.com> | 2018-12-31 22:07:28 +0100 |
| commit | f4826abf6d04d3c468e37c3e7b670d35030ef0e0 (patch) | |
| tree | 3c33c13b5b40f639ed08c0e52a657f1e576ad382 /src/libstd/sys | |
| parent | 6efaef61899f6551914156f69809aa7d5854399d (diff) | |
| download | rust-f4826abf6d04d3c468e37c3e7b670d35030ef0e0.tar.gz rust-f4826abf6d04d3c468e37c3e7b670d35030ef0e0.zip | |
Fix backtraces on Windows
Diffstat (limited to 'src/libstd/sys')
| -rw-r--r-- | src/libstd/sys/windows/backtrace/mod.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/libstd/sys/windows/backtrace/mod.rs b/src/libstd/sys/windows/backtrace/mod.rs index a6bd8f8cc51..4bda8ac91da 100644 --- a/src/libstd/sys/windows/backtrace/mod.rs +++ b/src/libstd/sys/windows/backtrace/mod.rs @@ -103,7 +103,7 @@ fn set_frames<W: StackWalker>(StackWalk: W, frames: &mut [Frame]) -> io::Result< frames[i] = Frame { symbol_addr: addr, exact_position: addr, - inline_context: 0, + inline_context: frame.get_inline_context(), }; i += 1 @@ -209,6 +209,7 @@ trait StackFrame { fn new() -> Self; fn init(&mut self, ctx: &c::CONTEXT) -> c::DWORD; fn get_addr(&self) -> *const u8; + fn get_inline_context(&self) -> u32; } impl StackFrame for c::STACKFRAME_EX { @@ -263,6 +264,10 @@ impl StackFrame for c::STACKFRAME_EX { fn get_addr(&self) -> *const u8 { (self.AddrPC.Offset - 1) as *const u8 } + + fn get_inline_context(&self) -> u32 { + self.InlineFrameContext + } } impl StackFrame for c::STACKFRAME64 { @@ -317,6 +322,10 @@ impl StackFrame for c::STACKFRAME64 { fn get_addr(&self) -> *const u8 { (self.AddrPC.Offset - 1) as *const u8 } + + fn get_inline_context(&self) -> u32 { + 0 + } } enum StackWalkVariant { |
