summaryrefslogtreecommitdiff
path: root/dbus/dbus-sysdeps-win.c
diff options
context:
space:
mode:
Diffstat (limited to 'dbus/dbus-sysdeps-win.c')
-rw-r--r--dbus/dbus-sysdeps-win.c204
1 files changed, 0 insertions, 204 deletions
diff --git a/dbus/dbus-sysdeps-win.c b/dbus/dbus-sysdeps-win.c
index df4a4ce3..3e6bdfd6 100644
--- a/dbus/dbus-sysdeps-win.c
+++ b/dbus/dbus-sysdeps-win.c
@@ -23,7 +23,6 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
*/
#include <config.h>
@@ -2663,209 +2662,6 @@ _dbus_delete_file (const DBusString *filename,
return TRUE;
}
-#if !defined (DBUS_DISABLE_ASSERT) || defined(DBUS_ENABLE_EMBEDDED_TESTS)
-
-#if defined(_MSC_VER) || defined(DBUS_WINCE)
-# ifdef BACKTRACES
-# undef BACKTRACES
-# endif
-#else
-# define BACKTRACES
-#endif
-
-#ifdef BACKTRACES
-/*
- * Backtrace Generator
- *
- * Copyright 2004 Eric Poech
- * Copyright 2004 Robert Shearman
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <winver.h>
-#include <imagehlp.h>
-#include <stdio.h>
-
-#define DPRINTF(fmt, ...) fprintf (stderr, fmt, ##__VA_ARGS__)
-
-#ifdef _MSC_VER
-#define BOOL int
-
-#define __i386__
-#endif
-
-static void dump_backtrace_for_thread (HANDLE hThread)
-{
- ADDRESS old_address;
- STACKFRAME sf;
- CONTEXT context;
- DWORD dwImageType;
- int i = 0;
-
- SymSetOptions (SYMOPT_UNDNAME | SYMOPT_LOAD_LINES);
- SymInitialize (GetCurrentProcess (), NULL, TRUE);
-
-
- /* can't use this function for current thread as GetThreadContext
- * doesn't support getting context from current thread */
- if (hThread == GetCurrentThread())
- return;
-
- DPRINTF ("Backtrace:\n");
-
- _DBUS_ZERO (old_address);
- _DBUS_ZERO (context);
- context.ContextFlags = CONTEXT_FULL;
-
- SuspendThread (hThread);
-
- if (!GetThreadContext (hThread, &context))
- {
- DPRINTF ("Couldn't get thread context (error %ld)\n", GetLastError ());
- ResumeThread (hThread);
- return;
- }
-
- _DBUS_ZERO (sf);
-
-#ifdef __i386__
- dwImageType = IMAGE_FILE_MACHINE_I386;
- sf.AddrFrame.Offset = context.Ebp;
- sf.AddrFrame.Mode = AddrModeFlat;
- sf.AddrPC.Offset = context.Eip;
- sf.AddrPC.Mode = AddrModeFlat;
-#elif defined(_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 defined(_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
-
- /*
- backtrace format
- <level> <address> <symbol>[+offset] [ '[' <file> ':' <line> ']' ] [ 'in' <module> ]
- example:
- 6 0xf75ade6b wine_switch_to_stack+0x2a [/usr/src/debug/wine-snapshot/libs/wine/port.c:59] in libwine.so.1
- */
- while (StackWalk (dwImageType, GetCurrentProcess (),
- hThread, &sf, &context, NULL, SymFunctionTableAccess,
- SymGetModuleBase, NULL))
- {
- char buffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME * sizeof(char)];
- PSYMBOL_INFO pSymbol = (PSYMBOL_INFO)buffer;
- DWORD64 displacement;
- IMAGEHLP_LINE line;
- DWORD dwDisplacement;
- IMAGEHLP_MODULE moduleInfo;
-
- /*
- on Wine64 version 1.7.54, we get an infinite number of stack entries
- pointing to the same stack frame (_start+0x29 in <wine-loader>)
- see bug https://bugs.winehq.org/show_bug.cgi?id=39606
- */
-#ifndef __i386__
- if (old_address.Offset == sf.AddrPC.Offset)
- {
- break;
- }
-#endif
-
- pSymbol->SizeOfStruct = sizeof(SYMBOL_INFO);
- pSymbol->MaxNameLen = MAX_SYM_NAME;
-
- if (SymFromAddr (GetCurrentProcess (), sf.AddrPC.Offset, &displacement, pSymbol))
- {
- if (displacement)
- DPRINTF ("%3d %s+0x%I64x", i++, pSymbol->Name, displacement);
- else
- DPRINTF ("%3d %s", i++, pSymbol->Name);
- }
- else
- DPRINTF ("%3d 0x%Ix", i++, sf.AddrPC.Offset);
-
- line.SizeOfStruct = sizeof(IMAGEHLP_LINE);
- if (SymGetLineFromAddr (GetCurrentProcess (), sf.AddrPC.Offset, &dwDisplacement, &line))
- {
- DPRINTF (" [%s:%ld]", line.FileName, line.LineNumber);
- }
-
- moduleInfo.SizeOfStruct = sizeof(moduleInfo);
- if (SymGetModuleInfo (GetCurrentProcess (), sf.AddrPC.Offset, &moduleInfo))
- {
- DPRINTF (" in %s", moduleInfo.ModuleName);
- }
- DPRINTF ("\n");
- old_address = sf.AddrPC;
- }
- ResumeThread (hThread);
-}
-
-static DWORD WINAPI dump_thread_proc (LPVOID lpParameter)
-{
- dump_backtrace_for_thread ((HANDLE) lpParameter);
- return 0;
-}
-
-/* cannot get valid context from current thread, so we have to execute
- * backtrace from another thread */
-static void
-dump_backtrace (void)
-{
- HANDLE hCurrentThread;
- HANDLE hThread;
- DWORD dwThreadId;
- DuplicateHandle (GetCurrentProcess (), GetCurrentThread (),
- GetCurrentProcess (), &hCurrentThread,
- 0, FALSE, DUPLICATE_SAME_ACCESS);
- hThread = CreateThread (NULL, 0, dump_thread_proc, (LPVOID)hCurrentThread,
- 0, &dwThreadId);
- WaitForSingleObject (hThread, INFINITE);
- CloseHandle (hThread);
- CloseHandle (hCurrentThread);
-}
-#endif
-#endif /* asserts or tests enabled */
-
-#ifdef BACKTRACES
-void _dbus_print_backtrace (void)
-{
- dump_backtrace ();
-}
-#else
-void _dbus_print_backtrace (void)
-{
- _dbus_verbose (" D-Bus not compiled with backtrace support\n");
-}
-#endif
-
static dbus_uint32_t fromAscii(char ascii)
{
if(ascii >= '0' && ascii <= '9')