summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick von Reth <patrick.vonreth@gmail.com>2010-03-29 10:15:34 +0200
committerRalf Habacker <ralf.habacker@freenet.de>2010-03-29 10:15:34 +0200
commit0958631378dd8d1ef5df9ff965184563b19d242d (patch)
treebb140f2dd9195e3674c7cd76e2ee55ac0c8f3f91
parentd5217348517e6b00a04e500ca460daf6cc928cd9 (diff)
downloaddbus-0958631378dd8d1ef5df9ff965184563b19d242d.tar.gz
Added x64 and ia64 backtrace support for windows.
-rw-r--r--dbus/dbus-sysdeps-win.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/dbus/dbus-sysdeps-win.c b/dbus/dbus-sysdeps-win.c
index bba8915f..4b32e092 100644
--- a/dbus/dbus-sysdeps-win.c
+++ b/dbus/dbus-sysdeps-win.c
@@ -2260,6 +2260,24 @@ static void dump_backtrace_for_thread(HANDLE hThread)
sf.AddrPC.Offset = context.Eip;
sf.AddrPC.Mode = AddrModeFlat;
dwImageType = IMAGE_FILE_MACHINE_I386;
+#elif _M_X64
+ dwImageType = IMAGE_FILE_MACHINE_AMD64;
+ sf.AddrPC.Offset = context.Rip;
+ sf.AddrPC.Mode = AddrModeFlat;
+ sf.AddrFrame.Offset = context.Rsp;
+ sf.AddrFrame.Mode = AddrModeFlat;
+ sf.AddrStack.Offset = context.Rsp;
+ sf.AddrStack.Mode = AddrModeFlat;
+#elif _M_IA64
+ dwImageType = IMAGE_FILE_MACHINE_IA64;
+ sf.AddrPC.Offset = context.StIIP;
+ sf.AddrPC.Mode = AddrModeFlat;
+ sf.AddrFrame.Offset = context.IntSp;
+ sf.AddrFrame.Mode = AddrModeFlat;
+ sf.AddrBStore.Offset= context.RsBSP;
+ sf.AddrBStore.Mode = AddrModeFlat;
+ sf.AddrStack.Offset = context.IntSp;
+ sf.AddrStack.Mode = AddrModeFlat;
#else
# error You need to fill in the STACKFRAME structure for your architecture
#endif