about summary refs log tree commit diff
path: root/src/libstd/rt
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-09-22 10:55:26 +0000
committerbors <bors@rust-lang.org>2014-09-22 10:55:26 +0000
commit3907a13f697feb007ab4824ee26f998d56a1311f (patch)
tree0d3532010bd471daf38e68ecfb9c3f389242b5cf /src/libstd/rt
parent8a458181dd7fef8df0bb488eee2c354a8ca4df4a (diff)
parent3bc7d3da42280cc96265818918405dcf97e4087c (diff)
downloadrust-3907a13f697feb007ab4824ee26f998d56a1311f.tar.gz
rust-3907a13f697feb007ab4824ee26f998d56a1311f.zip
auto merge of #17425 : klutzy/rust/win-backtrace, r=alexcrichton
Fixes #17372
Diffstat (limited to 'src/libstd/rt')
-rw-r--r--src/libstd/rt/backtrace.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/libstd/rt/backtrace.rs b/src/libstd/rt/backtrace.rs
index f4887a143d1..de5c26e03a3 100644
--- a/src/libstd/rt/backtrace.rs
+++ b/src/libstd/rt/backtrace.rs
@@ -701,7 +701,7 @@ mod imp {
     static IMAGE_FILE_MACHINE_IA64: libc::DWORD = 0x0200;
     static IMAGE_FILE_MACHINE_AMD64: libc::DWORD = 0x8664;
 
-    #[repr(C, packed)]
+    #[repr(C)]
     struct SYMBOL_INFO {
         SizeOfStruct: libc::c_ulong,
         TypeIndex: libc::c_ulong,
@@ -983,8 +983,10 @@ mod imp {
             try!(write!(w, "  {:2}: {:#2$x}", i, addr, super::HEX_WIDTH));
             let mut info: SYMBOL_INFO = unsafe { intrinsics::init() };
             info.MaxNameLen = MAX_SYM_NAME as libc::c_ulong;
-            info.SizeOfStruct = (mem::size_of::<SYMBOL_INFO>() -
-                                 info.Name.len() + 1) as libc::c_ulong;
+            // the struct size in C.  the value is different to
+            // `size_of::<SYMBOL_INFO>() - MAX_SYM_NAME + 1` (== 81)
+            // due to struct alignment.
+            info.SizeOfStruct = 88;
 
             let mut displacement = 0u64;
             let ret = SymFromAddr(process, addr as u64, &mut displacement,