Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
kill windows backtraces. They were x86 only
authorMartin Quinson <martin.quinson@loria.fr>
Wed, 9 Mar 2016 01:19:45 +0000 (02:19 +0100)
committerMartin Quinson <martin.quinson@loria.fr>
Wed, 9 Mar 2016 01:19:45 +0000 (02:19 +0100)
src/include/xbt/wine_dbghelp.h [deleted file]
src/xbt/backtrace_windows.c [deleted file]
src/xbt/ex.c
tools/cmake/DefinePackages.cmake

diff --git a/src/include/xbt/wine_dbghelp.h b/src/include/xbt/wine_dbghelp.h
deleted file mode 100644 (file)
index b258f2f..0000000
+++ /dev/null
@@ -1,1365 +0,0 @@
-/* Copyright (c) 2008-2010, 2014. The SimGrid Team.
- * All rights reserved.                                                     */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-/*
- * Declarations for DBGHELP
- *
- * Copyright (C) 2003 Eric Pouech
- *
- * 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 St, Fifth Floor, Boston, MA 02110-1301, USA
- * 
- * We need this file in SimGrid when cross-compiling with gcc for the windows target.
- */
-
-#ifndef __WINE_DBGHELP_H
-#define __WINE_DBGHELP_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif                          /* defined(__cplusplus) */
-
-#define IMAGEAPI WINAPI
-#define DBHLPAPI IMAGEAPI
-
-  typedef struct _LOADED_IMAGE {
-    PSTR ModuleName;
-    HANDLE hFile;
-    PUCHAR MappedAddress;
-    PIMAGE_NT_HEADERS FileHeader;
-    PIMAGE_SECTION_HEADER LastRvaSection;
-    ULONG NumberOfSections;
-    PIMAGE_SECTION_HEADER Sections;
-    ULONG Characteristics;
-    BOOLEAN fSystemImage;
-    BOOLEAN fDOSImage;
-    BOOLEAN fReadOnly;
-    UCHAR Version;
-    LIST_ENTRY Links;
-    ULONG SizeOfImage;
-  } LOADED_IMAGE, *PLOADED_IMAGE;
-
-/*************************
- *    IMAGEHLP equiv     *
- *************************/
-
-  typedef enum {
-    AddrMode1616,
-    AddrMode1632,
-    AddrModeReal,
-    AddrModeFlat
-  } ADDRESS_MODE;
-
-  typedef struct _tagADDRESS {
-    DWORD Offset;
-    WORD Segment;
-    ADDRESS_MODE Mode;
-  } ADDRESS, *LPADDRESS;
-
-  typedef struct _tagADDRESS64 {
-    DWORD64 Offset;
-    WORD Segment;
-    ADDRESS_MODE Mode;
-  } ADDRESS64, *LPADDRESS64;
-
-#define SYMF_OMAP_GENERATED   0x00000001
-#define SYMF_OMAP_MODIFIED    0x00000002
-#define SYMF_USER_GENERATED   0x00000004
-#define SYMF_REGISTER         0x00000008
-#define SYMF_REGREL           0x00000010
-#define SYMF_FRAMEREL         0x00000020
-#define SYMF_PARAMETER        0x00000040
-#define SYMF_LOCAL            0x00000080
-#define SYMF_CONSTANT         0x00000100
-#define SYMF_EXPORT           0x00000200
-#define SYMF_FORWARDER        0x00000400
-#define SYMF_FUNCTION         0x00000800
-#define SYMF_VIRTUAL          0x00001000
-#define SYMF_THUNK            0x00002000
-#define SYMF_TLSREL           0x00004000
-
-  typedef enum {
-    SymNone = 0,
-    SymCoff,
-    SymCv,
-    SymPdb,
-    SymExport,
-    SymDeferred,
-    SymSym,
-    SymDia,
-    SymVirtual,
-    NumSymTypes
-  } SYM_TYPE;
-
-  typedef struct _IMAGEHLP_SYMBOL {
-    DWORD SizeOfStruct;
-    DWORD Address;
-    DWORD Size;
-    DWORD Flags;
-    DWORD MaxNameLength;
-    CHAR Name[1];
-  } IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL;
-
-  typedef struct _IMAGEHLP_SYMBOL64 {
-    DWORD SizeOfStruct;
-    DWORD64 Address;
-    DWORD Size;
-    DWORD Flags;
-    DWORD MaxNameLength;
-    CHAR Name[1];
-  } IMAGEHLP_SYMBOL64, *PIMAGEHLP_SYMBOL64;
-
-  typedef struct _IMAGEHLP_SYMBOLW64 {
-    DWORD SizeOfStruct;
-    DWORD64 Address;
-    DWORD Size;
-    DWORD Flags;
-    DWORD MaxNameLength;
-    WCHAR Name[1];
-  } IMAGEHLP_SYMBOLW64, *PIMAGEHLP_SYMBOLW64;
-
-  typedef struct _IMAGEHLP_MODULE {
-    DWORD SizeOfStruct;
-    DWORD BaseOfImage;
-    DWORD ImageSize;
-    DWORD TimeDateStamp;
-    DWORD CheckSum;
-    DWORD NumSyms;
-    SYM_TYPE SymType;
-    CHAR ModuleName[32];
-    CHAR ImageName[256];
-    CHAR LoadedImageName[256];
-  } IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;
-
-  typedef struct _IMAGEHLP_MODULEW {
-    DWORD SizeOfStruct;
-    DWORD BaseOfImage;
-    DWORD ImageSize;
-    DWORD TimeDateStamp;
-    DWORD CheckSum;
-    DWORD NumSyms;
-    SYM_TYPE SymType;
-    WCHAR ModuleName[32];
-    WCHAR ImageName[256];
-    WCHAR LoadedImageName[256];
-  } IMAGEHLP_MODULEW, *PIMAGEHLP_MODULEW;
-
-  typedef struct _IMAGEHLP_MODULE64 {
-    DWORD SizeOfStruct;
-    DWORD64 BaseOfImage;
-    DWORD ImageSize;
-    DWORD TimeDateStamp;
-    DWORD CheckSum;
-    DWORD NumSyms;
-    SYM_TYPE SymType;
-    CHAR ModuleName[32];
-    CHAR ImageName[256];
-    CHAR LoadedImageName[256];
-    CHAR LoadedPdbName[256];
-    DWORD CVSig;
-    CHAR CVData[MAX_PATH * 3];
-    DWORD PdbSig;
-    GUID PdbSig70;
-    DWORD PdbAge;
-    BOOL PdbUnmatched;
-    BOOL DbgUnmatched;
-    BOOL LineNumbers;
-    BOOL GlobalSymbols;
-    BOOL TypeInfo;
-    BOOL SourceIndexed;
-    BOOL Publics;
-  } IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64;
-
-  typedef struct _IMAGEHLP_MODULEW64 {
-    DWORD SizeOfStruct;
-    DWORD64 BaseOfImage;
-    DWORD ImageSize;
-    DWORD TimeDateStamp;
-    DWORD CheckSum;
-    DWORD NumSyms;
-    SYM_TYPE SymType;
-    WCHAR ModuleName[32];
-    WCHAR ImageName[256];
-    WCHAR LoadedImageName[256];
-    WCHAR LoadedPdbName[256];
-    DWORD CVSig;
-    WCHAR CVData[MAX_PATH * 3];
-    DWORD PdbSig;
-    GUID PdbSig70;
-    DWORD PdbAge;
-    BOOL PdbUnmatched;
-    BOOL DbgUnmatched;
-    BOOL LineNumbers;
-    BOOL GlobalSymbols;
-    BOOL TypeInfo;
-    BOOL SourceIndexed;
-    BOOL Publics;
-  } IMAGEHLP_MODULEW64, *PIMAGEHLP_MODULEW64;
-
-  typedef struct _IMAGEHLP_LINE {
-    DWORD SizeOfStruct;
-    PVOID Key;
-    DWORD LineNumber;
-    PCHAR FileName;
-    DWORD Address;
-  } IMAGEHLP_LINE, *PIMAGEHLP_LINE;
-
-  typedef struct _IMAGEHLP_LINEW {
-    DWORD SizeOfStruct;
-    PVOID Key;
-    DWORD LineNumber;
-    PWSTR FileName;
-    DWORD Address;
-  } IMAGEHLP_LINEW, *PIMAGEHLP_LINEW;
-
-  typedef struct _IMAGEHLP_LINE64 {
-    DWORD SizeOfStruct;
-    PVOID Key;
-    DWORD LineNumber;
-    PCHAR FileName;
-    DWORD64 Address;
-  } IMAGEHLP_LINE64, *PIMAGEHLP_LINE64;
-
-  typedef struct _IMAGEHLP_LINEW64 {
-    DWORD SizeOfStruct;
-    PVOID Key;
-    DWORD LineNumber;
-    PWSTR FileName;
-    DWORD64 Address;
-  } IMAGEHLP_LINEW64, *PIMAGEHLP_LINEW64;
-
-  typedef struct _SOURCEFILE {
-    DWORD64 ModBase;
-    PCHAR FileName;
-  } SOURCEFILE, *PSOURCEFILE;
-
-  typedef struct _SOURCEFILEW {
-    DWORD64 ModBase;
-    PWSTR FileName;
-  } SOURCEFILEW, *PSOURCEFILEW;
-
-#define CBA_DEFERRED_SYMBOL_LOAD_START          0x00000001
-#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE       0x00000002
-#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE        0x00000003
-#define CBA_SYMBOLS_UNLOADED                    0x00000004
-#define CBA_DUPLICATE_SYMBOL                    0x00000005
-#define CBA_READ_MEMORY                         0x00000006
-#define CBA_DEFERRED_SYMBOL_LOAD_CANCEL         0x00000007
-#define CBA_SET_OPTIONS                         0x00000008
-#define CBA_EVENT                               0x00000010
-#define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL        0x00000020
-#define CBA_DEBUG_INFO                          0x10000000
-
-  typedef struct _IMAGEHLP_CBA_READ_MEMORY {
-    DWORD64 addr;
-    PVOID buf;
-    DWORD bytes;
-    DWORD *bytesread;
-  } IMAGEHLP_CBA_READ_MEMORY, *PIMAGEHLP_CBA_READ_MEMORY;
-
-  enum {
-    sevInfo = 0,
-    sevProblem,
-    sevAttn,
-    sevFatal,
-    sevMax
-  };
-
-#define EVENT_SRCSPEW_START 100
-#define EVENT_SRCSPEW       100
-#define EVENT_SRCSPEW_END   199
-
-  typedef struct _IMAGEHLP_CBA_EVENT {
-    DWORD severity;
-    DWORD code;
-    PCHAR desc;
-    PVOID object;
-  } IMAGEHLP_CBA_EVENT, *PIMAGEHLP_CBA_EVENT;
-
-  typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
-    DWORD SizeOfStruct;
-    DWORD BaseOfImage;
-    DWORD CheckSum;
-    DWORD TimeDateStamp;
-    CHAR FileName[MAX_PATH];
-    BOOLEAN Reparse;
-    HANDLE hFile;
-  } IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
-
-  typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 {
-    DWORD SizeOfStruct;
-    DWORD64 BaseOfImage;
-    DWORD CheckSum;
-    DWORD TimeDateStamp;
-    CHAR FileName[MAX_PATH];
-    BOOLEAN Reparse;
-    HANDLE hFile;
-    DWORD Flags;
-  } IMAGEHLP_DEFERRED_SYMBOL_LOAD64, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
-
-  typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOADW64 {
-    DWORD SizeOfStruct;
-    DWORD64 BaseOfImage;
-    DWORD CheckSum;
-    DWORD TimeDateStamp;
-    WCHAR FileName[MAX_PATH + 1];
-    BOOLEAN Reparse;
-    HANDLE hFile;
-    DWORD Flags;
-  } IMAGEHLP_DEFERRED_SYMBOL_LOADW64, *PIMAGEHLP_DEFERRED_SYMBOL_LOADW64;
-
-  typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
-    DWORD SizeOfStruct;
-    DWORD NumberOfDups;
-    PIMAGEHLP_SYMBOL Symbol;
-    DWORD SelectedSymbol;
-  } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL;
-
-  typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 {
-    DWORD SizeOfStruct;
-    DWORD NumberOfDups;
-    PIMAGEHLP_SYMBOL64 Symbol;
-    DWORD SelectedSymbol;
-  } IMAGEHLP_DUPLICATE_SYMBOL64, *PIMAGEHLP_DUPLICATE_SYMBOL64;
-
-#define SYMOPT_CASE_INSENSITIVE         0x00000001
-#define SYMOPT_UNDNAME                  0x00000002
-#define SYMOPT_DEFERRED_LOADS           0x00000004
-#define SYMOPT_NO_CPP                   0x00000008
-#define SYMOPT_LOAD_LINES               0x00000010
-#define SYMOPT_OMAP_FIND_NEAREST        0x00000020
-#define SYMOPT_LOAD_ANYTHING            0x00000040
-#define SYMOPT_IGNORE_CVREC             0x00000080
-#define SYMOPT_NO_UNQUALIFIED_LOADS     0x00000100
-#define SYMOPT_FAIL_CRITICAL_ERRORS     0x00000200
-#define SYMOPT_EXACT_SYMBOLS            0x00000400
-#define SYMOPT_WILD_UNDERSCORE          0x00000800
-#define SYMOPT_USE_DEFAULTS             0x00001000
-/* latest SDK defines:
-#define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS   0x00000800
-#define SYMOPT_IGNORE_NT_SYMPATH        0x00001000
-*/
-#define SYMOPT_INCLUDE_32BIT_MODULES    0x00002000
-#define SYMOPT_PUBLICS_ONLY             0x00004000
-#define SYMOPT_NO_PUBLICS               0x00008000
-#define SYMOPT_AUTO_PUBLICS             0x00010000
-#define SYMOPT_NO_IMAGE_SEARCH          0x00020000
-#define SYMOPT_SECURE                   0x00040000
-#define SYMOPT_NO_PROMPTS               0x00080000
-#define SYMOPT_OVERWRITE                0x00100000
-#define SYMOPT_IGNORE_IMAGEDIR          0x00200000
-
-#define SYMOPT_DEBUG                    0x80000000
-
-  typedef struct _IMAGEHLP_STACK_FRAME {
-    ULONG64 InstructionOffset;
-    ULONG64 ReturnOffset;
-    ULONG64 FrameOffset;
-    ULONG64 StackOffset;
-    ULONG64 BackingStoreOffset;
-    ULONG64 FuncTableEntry;
-    ULONG64 Params[4];
-    ULONG64 Reserved[5];
-    BOOL Virtual;
-    ULONG Reserved2;
-  } IMAGEHLP_STACK_FRAME, *PIMAGEHLP_STACK_FRAME;
-
-  typedef VOID IMAGEHLP_CONTEXT, *PIMAGEHLP_CONTEXT;
-
-#define DBHHEADER_DEBUGDIRS     0x1
-  typedef struct _DBGHELP_MODLOAD_DATA {
-    DWORD ssize;
-    DWORD ssig;
-    PVOID data;
-    DWORD size;
-    DWORD flags;
-  } MODLOAD_DATA, *PMODLOAD_DATA;
-
-/*************************
- *       MiniDUMP        *
- *************************/
-
-#include <pshpack4.h>
-/* DebugHelp */
-
-#define MINIDUMP_SIGNATURE 0x504D444D   /* 'MDMP' */
-#define MINIDUMP_VERSION   (42899)
-
-  typedef DWORD RVA;
-  typedef ULONG64 RVA64;
-
-  typedef enum _MINIDUMP_TYPE {
-    MiniDumpNormal = 0x0000,
-    MiniDumpWithDataSegs = 0x0001,
-    MiniDumpWithFullMemory = 0x0002,
-    MiniDumpWithHandleData = 0x0004,
-    MiniDumpFilterMemory = 0x0008,
-    MiniDumpScanMemory = 0x0010,
-    MiniDumpWithUnloadedModules = 0x0020,
-    MiniDumpWithIndirectlyReferencedMemory = 0x0040,
-    MiniDumpFilterModulePaths = 0x0080,
-    MiniDumpWithProcessThreadData = 0x0100,
-    MiniDumpWithPrivateReadWriteMemory = 0x0200,
-    MiniDumpWithoutOptionalData = 0x0400,
-    MiniDumpWithFullMemoryInfo = 0x0800,
-    MiniDumpWithThreadInfo = 0x1000,
-    MiniDumpWithCodeSegs = 0x2000
-  } MINIDUMP_TYPE;
-
-  typedef enum _MINIDUMP_CALLBACK_TYPE {
-    ModuleCallback,
-    ThreadCallback,
-    ThreadExCallback,
-    IncludeThreadCallback,
-    IncludeModuleCallback,
-    MemoryCallback,
-  } MINIDUMP_CALLBACK_TYPE;
-
-  typedef struct _MINIDUMP_THREAD_CALLBACK {
-    ULONG ThreadId;
-    HANDLE ThreadHandle;
-    CONTEXT Context;
-    ULONG SizeOfContext;
-    ULONG64 StackBase;
-    ULONG64 StackEnd;
-  } MINIDUMP_THREAD_CALLBACK, *PMINIDUMP_THREAD_CALLBACK;
-
-  typedef struct _MINIDUMP_THREAD_EX_CALLBACK {
-    ULONG ThreadId;
-    HANDLE ThreadHandle;
-    CONTEXT Context;
-    ULONG SizeOfContext;
-    ULONG64 StackBase;
-    ULONG64 StackEnd;
-    ULONG64 BackingStoreBase;
-    ULONG64 BackingStoreEnd;
-  } MINIDUMP_THREAD_EX_CALLBACK, *PMINIDUMP_THREAD_EX_CALLBACK;
-
-  typedef struct _MINIDUMP_INCLUDE_THREAD_CALLBACK {
-    ULONG ThreadId;
-  } MINIDUMP_INCLUDE_THREAD_CALLBACK, *PMINIDUMP_INCLUDE_THREAD_CALLBACK;
-
-  typedef enum _THREAD_WRITE_FLAGS {
-    ThreadWriteThread = 0x0001,
-    ThreadWriteStack = 0x0002,
-    ThreadWriteContext = 0x0004,
-    ThreadWriteBackingStore = 0x0008,
-    ThreadWriteInstructionWindow = 0x0010,
-    ThreadWriteThreadData = 0x0020,
-    ThreadWriteThreadInfo = 0x0040
-  } THREAD_WRITE_FLAGS;
-
-  typedef struct _MINIDUMP_MODULE_CALLBACK {
-    PWCHAR FullPath;
-    ULONG64 BaseOfImage;
-    ULONG SizeOfImage;
-    ULONG CheckSum;
-    ULONG TimeDateStamp;
-    VS_FIXEDFILEINFO VersionInfo;
-    PVOID CvRecord;
-    ULONG SizeOfCvRecord;
-    PVOID MiscRecord;
-    ULONG SizeOfMiscRecord;
-  } MINIDUMP_MODULE_CALLBACK, *PMINIDUMP_MODULE_CALLBACK;
-
-  typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK {
-    ULONG64 BaseOfImage;
-  } MINIDUMP_INCLUDE_MODULE_CALLBACK, *PMINIDUMP_INCLUDE_MODULE_CALLBACK;
-
-  typedef enum _MODULE_WRITE_FLAGS {
-    ModuleWriteModule = 0x0001,
-    ModuleWriteDataSeg = 0x0002,
-    ModuleWriteMiscRecord = 0x0004,
-    ModuleWriteCvRecord = 0x0008,
-    ModuleReferencedByMemory = 0x0010,
-    ModuleWriteTlsData = 0x0020,
-    ModuleWriteCodeSegs = 0x0040,
-  } MODULE_WRITE_FLAGS;
-
-  typedef struct _MINIDUMP_CALLBACK_INPUT {
-    ULONG ProcessId;
-    HANDLE ProcessHandle;
-    ULONG CallbackType;
-    union {
-      MINIDUMP_THREAD_CALLBACK Thread;
-      MINIDUMP_THREAD_EX_CALLBACK ThreadEx;
-      MINIDUMP_MODULE_CALLBACK Module;
-      MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread;
-      MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule;
-    } DUMMYUNIONNAME;
-  } MINIDUMP_CALLBACK_INPUT, *PMINIDUMP_CALLBACK_INPUT;
-
-  typedef struct _MINIDUMP_CALLBACK_OUTPUT {
-    union {
-      ULONG ModuleWriteFlags;
-      ULONG ThreadWriteFlags;
-      struct {
-        ULONG64 MemoryBase;
-        ULONG MemorySize;
-      } DUMMYSTRUCTNAME;
-    } DUMMYUNIONNAME;
-  } MINIDUMP_CALLBACK_OUTPUT, *PMINIDUMP_CALLBACK_OUTPUT;
-
-  typedef BOOL(WINAPI * MINIDUMP_CALLBACK_ROUTINE) (PVOID,
-                                                    const
-                                                    PMINIDUMP_CALLBACK_INPUT,
-                                                    PMINIDUMP_CALLBACK_OUTPUT);
-
-  typedef struct _MINIDUMP_CALLBACK_INFORMATION {
-    MINIDUMP_CALLBACK_ROUTINE CallbackRoutine;
-    void *CallbackParam;
-  } MINIDUMP_CALLBACK_INFORMATION, *PMINIDUMP_CALLBACK_INFORMATION;
-
-  typedef struct _MINIDUMP_LOCATION_DESCRIPTOR {
-    ULONG DataSize;
-    RVA Rva;
-  } MINIDUMP_LOCATION_DESCRIPTOR;
-
-  typedef struct _MINIDUMP_LOCATION_DESCRIPTOR64 {
-    ULONG64 DataSize;
-    RVA64 Rva;
-  } MINIDUMP_LOCATION_DESCRIPTOR64;
-
-  typedef struct _MINIDUMP_DIRECTORY {
-    ULONG StreamType;
-    MINIDUMP_LOCATION_DESCRIPTOR Location;
-  } MINIDUMP_DIRECTORY, *PMINIDUMP_DIRECTORY;
-
-  typedef struct _MINIDUMP_EXCEPTION {
-    ULONG ExceptionCode;
-    ULONG ExceptionFlags;
-    ULONG64 ExceptionRecord;
-    ULONG64 ExceptionAddress;
-    ULONG NumberParameters;
-    ULONG __unusedAlignment;
-    ULONG64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
-  } MINIDUMP_EXCEPTION, *PMINIDUMP_EXCEPTION;
-
-  typedef struct _MINIDUMP_EXCEPTION_INFORMATION {
-    DWORD ThreadId;
-    PEXCEPTION_POINTERS ExceptionPointers;
-    BOOL ClientPointers;
-  } MINIDUMP_EXCEPTION_INFORMATION, *PMINIDUMP_EXCEPTION_INFORMATION;
-
-  typedef struct MINIDUMP_EXCEPTION_STREAM {
-    ULONG ThreadId;
-    ULONG __alignment;
-    MINIDUMP_EXCEPTION ExceptionRecord;
-    MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
-  } MINIDUMP_EXCEPTION_STREAM, *PMINIDUMP_EXCEPTION_STREAM;
-
-  typedef struct _MINIDUMP_HEADER {
-    DWORD Signature;
-    DWORD Version;
-    DWORD NumberOfStreams;
-    RVA StreamDirectoryRva;
-    DWORD CheckSum;
-    union {
-      DWORD Reserved;
-      DWORD TimeDateStamp;
-    } DUMMYUNIONNAME;
-    ULONG64 Flags;
-  } MINIDUMP_HEADER, *PMINIDUMP_HEADER;
-
-  typedef struct _MINIDUMP_MEMORY_DESCRIPTOR {
-    ULONG64 StartOfMemoryRange;
-    MINIDUMP_LOCATION_DESCRIPTOR Memory;
-  } MINIDUMP_MEMORY_DESCRIPTOR, *PMINIDUMP_MEMORY_DESCRIPTOR;
-
-  typedef struct _MINIDUMP_MEMORY_LIST {
-    ULONG NumberOfMemoryRanges;
-    MINIDUMP_MEMORY_DESCRIPTOR MemoryRanges[1]; /* FIXME: 0-sized array not supported */
-  } MINIDUMP_MEMORY_LIST, *PMINIDUMP_MEMORY_LIST;
-
-#define MINIDUMP_MISC1_PROCESS_ID       0x00000001
-#define MINIDUMP_MISC1_PROCESS_TIMES    0x00000002
-
-  typedef struct _MINIDUMP_MISC_INFO {
-    ULONG SizeOfInfo;
-    ULONG Flags1;
-    ULONG ProcessId;
-    ULONG ProcessCreateTime;
-    ULONG ProcessUserTime;
-    ULONG ProcessKernelTime;
-  } MINIDUMP_MISC_INFO, *PMINIDUMP_MISC_INFO;
-
-  typedef struct _MINIDUMP_MODULE {
-    ULONG64 BaseOfImage;
-    ULONG SizeOfImage;
-    ULONG CheckSum;
-    ULONG TimeDateStamp;
-    RVA ModuleNameRva;
-    VS_FIXEDFILEINFO VersionInfo;
-    MINIDUMP_LOCATION_DESCRIPTOR CvRecord;
-    MINIDUMP_LOCATION_DESCRIPTOR MiscRecord;
-    ULONG64 Reserved0;
-    ULONG64 Reserved1;
-  } MINIDUMP_MODULE, *PMINIDUMP_MODULE;
-
-  typedef struct _MINIDUMP_MODULE_LIST {
-    ULONG NumberOfModules;
-    MINIDUMP_MODULE Modules[1]; /* FIXME: 0-sized array not supported */
-  } MINIDUMP_MODULE_LIST, *PMINIDUMP_MODULE_LIST;
-
-  typedef struct _MINIDUMP_STRING {
-    ULONG Length;
-    WCHAR Buffer[1];            /* FIXME: O-sized array not supported */
-  } MINIDUMP_STRING, *PMINIDUMP_STRING;
-
-  typedef struct _MINIDUMP_SYSTEM_INFO {
-    USHORT ProcessorArchitecture;
-    USHORT ProcessorLevel;
-    USHORT ProcessorRevision;
-    union {
-      USHORT Reserved0;
-      struct {
-        UCHAR NumberOfProcessors;
-        UCHAR ProductType;
-      } DUMMYSTRUCTNAME;
-    } DUMMYUNIONNAME;
-
-    ULONG MajorVersion;
-    ULONG MinorVersion;
-    ULONG BuildNumber;
-    ULONG PlatformId;
-
-    RVA CSDVersionRva;
-    union {
-      ULONG Reserved1;
-      struct {
-        USHORT SuiteMask;
-        USHORT Reserved2;
-      } DUMMYSTRUCTNAME;
-    } DUMMYUNIONNAME1;
-    union _CPU_INFORMATION {
-      struct {
-        ULONG VendorId[3];
-        ULONG VersionInformation;
-        ULONG FeatureInformation;
-        ULONG AMDExtendedCpuFeatures;
-      } X86CpuInfo;
-      struct {
-        ULONG64 ProcessorFeatures[2];
-      } OtherCpuInfo;
-    } Cpu;
-
-  } MINIDUMP_SYSTEM_INFO, *PMINIDUMP_SYSTEM_INFO;
-
-  typedef struct _MINIDUMP_THREAD {
-    ULONG ThreadId;
-    ULONG SuspendCount;
-    ULONG PriorityClass;
-    ULONG Priority;
-    ULONG64 Teb;
-    MINIDUMP_MEMORY_DESCRIPTOR Stack;
-    MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
-  } MINIDUMP_THREAD, *PMINIDUMP_THREAD;
-
-  typedef struct _MINIDUMP_THREAD_LIST {
-    ULONG NumberOfThreads;
-    MINIDUMP_THREAD Threads[1]; /* FIXME: no support of 0 sized array */
-  } MINIDUMP_THREAD_LIST, *PMINIDUMP_THREAD_LIST;
-
-  typedef struct _MINIDUMP_USER_STREAM {
-    ULONG Type;
-    ULONG BufferSize;
-    void *Buffer;
-  } MINIDUMP_USER_STREAM, *PMINIDUMP_USER_STREAM;
-
-  typedef struct _MINIDUMP_USER_STREAM_INFORMATION {
-    ULONG UserStreamCount;
-    PMINIDUMP_USER_STREAM UserStreamArray;
-  } MINIDUMP_USER_STREAM_INFORMATION, *PMINIDUMP_USER_STREAM_INFORMATION;
-
-  typedef enum _MINIDUMP_STREAM_TYPE {
-    UnusedStream = 0,
-    ReservedStream0 = 1,
-    ReservedStream1 = 2,
-    ThreadListStream = 3,
-    ModuleListStream = 4,
-    MemoryListStream = 5,
-    ExceptionStream = 6,
-    SystemInfoStream = 7,
-    ThreadExListStream = 8,
-    Memory64ListStream = 9,
-    CommentStreamA = 10,
-    CommentStreamW = 11,
-    HandleDataStream = 12,
-    FunctionTableStream = 13,
-    UnloadedModuleListStream = 14,
-    MiscInfoStream = 15,
-    MemoryInfoListStream = 16,
-    ThreadInfoListStream = 17,
-
-    LastReservedStream = 0xffff
-  } MINIDUMP_STREAM_TYPE;
-
-  BOOL WINAPI MiniDumpWriteDump(HANDLE, DWORD, HANDLE, MINIDUMP_TYPE,
-                                const PMINIDUMP_EXCEPTION_INFORMATION,
-                                const PMINIDUMP_USER_STREAM_INFORMATION,
-                                const PMINIDUMP_CALLBACK_INFORMATION);
-  BOOL WINAPI MiniDumpReadDumpStream(PVOID, ULONG, PMINIDUMP_DIRECTORY *,
-                                     PVOID *, ULONG *);
-
-#include <poppack.h>
-
-/*************************
- *    MODULE handling    *
- *************************/
-
-/* flags for SymLoadModuleEx */
-#define SLMFLAG_VIRTUAL         0x1
-#define SLMFLAG_NO_SYMBOLS      0x4
-
-  typedef BOOL(CALLBACK * PENUMLOADED_MODULES_CALLBACK) (PSTR, ULONG,
-                                                         ULONG, PVOID);
-  BOOL WINAPI EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK,
-                                     PVOID);
-  typedef BOOL(CALLBACK * PENUMLOADED_MODULES_CALLBACK64) (PCSTR, DWORD64,
-                                                           ULONG, PVOID);
-  BOOL WINAPI EnumerateLoadedModules64(HANDLE,
-                                       PENUMLOADED_MODULES_CALLBACK64,
-                                       PVOID);
-  typedef BOOL(CALLBACK * PENUMLOADED_MODULES_CALLBACKW64) (PCWSTR,
-                                                            DWORD64, ULONG,
-                                                            PVOID);
-  BOOL WINAPI EnumerateLoadedModulesW64(HANDLE,
-                                        PENUMLOADED_MODULES_CALLBACKW64,
-                                        PVOID);
-  typedef BOOL(CALLBACK * PSYM_ENUMMODULES_CALLBACK) (PCSTR, ULONG, PVOID);
-  BOOL WINAPI SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK,
-                                  PVOID);
-  typedef BOOL(CALLBACK * PSYM_ENUMMODULES_CALLBACK64) (PCSTR, DWORD64,
-                                                        PVOID);
-  BOOL WINAPI SymEnumerateModules64(HANDLE, PSYM_ENUMMODULES_CALLBACK64,
-                                    PVOID);
-  typedef BOOL(CALLBACK * PSYM_ENUMMODULES_CALLBACKW64) (PCWSTR, DWORD64,
-                                                         PVOID);
-  BOOL WINAPI SymEnumerateModulesW64(HANDLE, PSYM_ENUMMODULES_CALLBACKW64,
-                                     PVOID);
-  BOOL WINAPI SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE);
-  BOOL WINAPI SymGetModuleInfoW(HANDLE, DWORD, PIMAGEHLP_MODULEW);
-  BOOL WINAPI SymGetModuleInfo64(HANDLE, DWORD64, PIMAGEHLP_MODULE64);
-  BOOL WINAPI SymGetModuleInfoW64(HANDLE, DWORD64, PIMAGEHLP_MODULEW64);
-  DWORD WINAPI SymGetModuleBase(HANDLE, DWORD);
-  DWORD64 WINAPI SymGetModuleBase64(HANDLE, DWORD64);
-  DWORD WINAPI SymLoadModule(HANDLE, HANDLE, PCSTR, PCSTR, DWORD, DWORD);
-  DWORD64 WINAPI SymLoadModule64(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64,
-                                 DWORD);
-  DWORD64 WINAPI SymLoadModuleEx(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64,
-                                 DWORD, PMODLOAD_DATA, DWORD);
-  DWORD64 WINAPI SymLoadModuleExW(HANDLE, HANDLE, PCWSTR, PCWSTR, DWORD64,
-                                  DWORD, PMODLOAD_DATA, DWORD);
-  BOOL WINAPI SymUnloadModule(HANDLE, DWORD);
-  BOOL WINAPI SymUnloadModule64(HANDLE, DWORD64);
-
-/*************************
- *    Symbol Handling    *
- *************************/
-
-#define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT          1
-#define IMAGEHLP_SYMBOL_INFO_REGISTER              SYMF_REGISTER        /*  0x08 */
-#define IMAGEHLP_SYMBOL_INFO_REGRELATIVE           SYMF_REGREL  /*  0x10 */
-#define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE         SYMF_FRAMEREL        /*  0x20 */
-#define IMAGEHLP_SYMBOL_INFO_PARAMETER             SYMF_PARAMETER       /*  0x40 */
-#define IMAGEHLP_SYMBOL_INFO_LOCAL                 SYMF_LOCAL   /*  0x80 */
-#define IMAGEHLP_SYMBOL_INFO_CONSTANT              SYMF_CONSTANT        /* 0x100 */
-#define IMAGEHLP_SYMBOL_FUNCTION                   SYMF_FUNCTION        /* 0x800 */
-
-#define SYMFLAG_VALUEPRESENT     0x00000001
-#define SYMFLAG_REGISTER         0x00000008
-#define SYMFLAG_REGREL           0x00000010
-#define SYMFLAG_FRAMEREL         0x00000020
-#define SYMFLAG_PARAMETER        0x00000040
-#define SYMFLAG_LOCAL            0x00000080
-#define SYMFLAG_CONSTANT         0x00000100
-#define SYMFLAG_EXPORT           0x00000200
-#define SYMFLAG_FORWARDER        0x00000400
-#define SYMFLAG_FUNCTION         0x00000800
-#define SYMFLAG_VIRTUAL          0x00001000
-#define SYMFLAG_THUNK            0x00002000
-#define SYMFLAG_TLSREL           0x00004000
-#define SYMFLAG_SLOT             0x00008000
-
-#define MAX_SYM_NAME    2000
-
-  typedef struct _SYMBOL_INFO {
-    ULONG SizeOfStruct;
-    ULONG TypeIndex;
-    ULONG64 Reserved[2];
-    ULONG info;                 /* sdk states info, while MSDN says it's Index... */
-    ULONG Size;
-    ULONG64 ModBase;
-    ULONG Flags;
-    ULONG64 Value;
-    ULONG64 Address;
-    ULONG Register;
-    ULONG Scope;
-    ULONG Tag;
-    ULONG NameLen;
-    ULONG MaxNameLen;
-    CHAR Name[1];
-  } SYMBOL_INFO, *PSYMBOL_INFO;
-
-  typedef struct _SYMBOL_INFOW {
-    ULONG SizeOfStruct;
-    ULONG TypeIndex;
-    ULONG64 Reserved[2];
-    ULONG Index;
-    ULONG Size;
-    ULONG64 ModBase;
-    ULONG Flags;
-    ULONG64 Value;
-    ULONG64 Address;
-    ULONG Register;
-    ULONG Scope;
-    ULONG Tag;
-    ULONG NameLen;
-    ULONG MaxNameLen;
-    WCHAR Name[1];
-  } SYMBOL_INFOW, *PSYMBOL_INFOW;
-
-  typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO {
-    TI_GET_SYMTAG,
-    TI_GET_SYMNAME,
-    TI_GET_LENGTH,
-    TI_GET_TYPE,
-    TI_GET_TYPEID,
-    TI_GET_BASETYPE,
-    TI_GET_ARRAYINDEXTYPEID,
-    TI_FINDCHILDREN,
-    TI_GET_DATAKIND,
-    TI_GET_ADDRESSOFFSET,
-    TI_GET_OFFSET,
-    TI_GET_VALUE,
-    TI_GET_COUNT,
-    TI_GET_CHILDRENCOUNT,
-    TI_GET_BITPOSITION,
-    TI_GET_VIRTUALBASECLASS,
-    TI_GET_VIRTUALTABLESHAPEID,
-    TI_GET_VIRTUALBASEPOINTEROFFSET,
-    TI_GET_CLASSPARENTID,
-    TI_GET_NESTED,
-    TI_GET_SYMINDEX,
-    TI_GET_LEXICALPARENT,
-    TI_GET_ADDRESS,
-    TI_GET_THISADJUST,
-    TI_GET_UDTKIND,
-    TI_IS_EQUIV_TO,
-    TI_GET_CALLING_CONVENTION,
-  } IMAGEHLP_SYMBOL_TYPE_INFO;
-
-#define IMAGEHLP_GET_TYPE_INFO_UNCACHED            0x00000001
-#define IMAGEHLP_GET_TYPE_INFO_CHILDREN            0x00000002
-  typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS {
-    ULONG SizeOfStruct;
-    ULONG Flags;
-    ULONG NumIds;
-    PULONG TypeIds;
-    ULONG64 TagFilter;
-    ULONG NumReqs;
-    IMAGEHLP_SYMBOL_TYPE_INFO *ReqKinds;
-    PULONG_PTR ReqOffsets;
-    PULONG ReqSizes;
-    ULONG_PTR ReqStride;
-    ULONG_PTR BufferSize;
-    PVOID Buffer;
-    ULONG EntriesMatched;
-    ULONG EntriesFilled;
-    ULONG64 TagsFound;
-    ULONG64 AllReqsValid;
-    ULONG NumReqsValid;
-    PULONG64 ReqsValid;
-  } IMAGEHLP_GET_TYPE_INFO_PARAMS, *PIMAGEHLP_GET_TYPE_INFO_PARAMS;
-
-  typedef struct _TI_FINDCHILDREN_PARAMS {
-    ULONG Count;
-    ULONG Start;
-    ULONG ChildId[1];
-  } TI_FINDCHILDREN_PARAMS;
-
-#define UNDNAME_COMPLETE                 (0x0000)
-#define UNDNAME_NO_LEADING_UNDERSCORES   (0x0001)
-#define UNDNAME_NO_MS_KEYWORDS           (0x0002)
-#define UNDNAME_NO_FUNCTION_RETURNS      (0x0004)
-#define UNDNAME_NO_ALLOCATION_MODEL      (0x0008)
-#define UNDNAME_NO_ALLOCATION_LANGUAGE   (0x0010)
-#define UNDNAME_NO_MS_THISTYPE           (0x0020)
-#define UNDNAME_NO_CV_THISTYPE           (0x0040)
-#define UNDNAME_NO_THISTYPE              (0x0060)
-#define UNDNAME_NO_ACCESS_SPECIFIERS     (0x0080)
-#define UNDNAME_NO_THROW_SIGNATURES      (0x0100)
-#define UNDNAME_NO_MEMBER_TYPE           (0x0200)
-#define UNDNAME_NO_RETURN_UDT_MODEL      (0x0400)
-#define UNDNAME_32_BIT_DECODE            (0x0800)
-#define UNDNAME_NAME_ONLY                (0x1000)
-#define UNDNAME_NO_ARGUMENTS             (0x2000)
-#define UNDNAME_NO_SPECIAL_SYMS          (0x4000)
-
-#define SYMSEARCH_MASKOBJS              0x01
-#define SYMSEARCH_RECURSE               0x02
-#define SYMSEARCH_GLOBALSONLY           0x04
-
-  BOOL WINAPI SymGetTypeInfo(HANDLE, DWORD64, ULONG,
-                             IMAGEHLP_SYMBOL_TYPE_INFO, PVOID);
-  BOOL WINAPI SymGetTypeInfoEx(HANDLE, DWORD64,
-                               PIMAGEHLP_GET_TYPE_INFO_PARAMS);
-  typedef BOOL(CALLBACK * PSYM_ENUMERATESYMBOLS_CALLBACK) (PSYMBOL_INFO,
-                                                           ULONG, PVOID);
-  typedef BOOL(CALLBACK * PSYM_ENUMERATESYMBOLS_CALLBACKW) (PSYMBOL_INFOW,
-                                                            ULONG, PVOID);
-  BOOL WINAPI SymEnumTypes(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACK,
-                           PVOID);
-  BOOL WINAPI SymEnumTypesW(HANDLE, ULONG64,
-                            PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID);
-  BOOL WINAPI SymFromAddr(HANDLE, DWORD64, DWORD64 *, SYMBOL_INFO *);
-  BOOL WINAPI SymFromAddrW(HANDLE, DWORD64, DWORD64 *, SYMBOL_INFOW *);
-  BOOL WINAPI SymFromToken(HANDLE, DWORD64, DWORD, PSYMBOL_INFO);
-  BOOL WINAPI SymFromTokenW(HANDLE, DWORD64, DWORD, PSYMBOL_INFOW);
-  BOOL WINAPI SymFromName(HANDLE, PCSTR, PSYMBOL_INFO);
-  BOOL WINAPI SymFromNameW(HANDLE, PCWSTR, PSYMBOL_INFOW);
-  BOOL WINAPI SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL);
-  BOOL WINAPI SymGetSymFromAddr64(HANDLE, DWORD64, PDWORD64,
-                                  PIMAGEHLP_SYMBOL64);
-  BOOL WINAPI SymGetSymFromName(HANDLE, PCSTR, PIMAGEHLP_SYMBOL);
-  BOOL WINAPI SymGetSymFromName64(HANDLE, PCSTR, PIMAGEHLP_SYMBOL64);
-  BOOL WINAPI SymGetTypeFromName(HANDLE, ULONG64, PCSTR, PSYMBOL_INFO);
-  BOOL WINAPI SymGetTypeFromNameW(HANDLE, ULONG64, PCWSTR, PSYMBOL_INFOW);
-  BOOL WINAPI SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL);
-  BOOL WINAPI SymGetSymNext64(HANDLE, PIMAGEHLP_SYMBOL64);
-  BOOL WINAPI SymGetSymNextW64(HANDLE, PIMAGEHLP_SYMBOLW64);
-  BOOL WINAPI SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL);
-  BOOL WINAPI SymGetSymPrev64(HANDLE, PIMAGEHLP_SYMBOL64);
-  BOOL WINAPI SymGetSymPrevW64(HANDLE, PIMAGEHLP_SYMBOLW64);
-  BOOL WINAPI SymEnumSymbols(HANDLE, ULONG64, PCSTR,
-                             PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID);
-  BOOL WINAPI SymEnumSymbolsW(HANDLE, ULONG64, PCWSTR,
-                              PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID);
-  typedef BOOL(CALLBACK * PSYM_ENUMSYMBOLS_CALLBACK) (PCSTR, DWORD, ULONG,
-                                                      PVOID);
-  typedef BOOL(CALLBACK * PSYM_ENUMSYMBOLS_CALLBACKW) (PCWSTR, DWORD,
-                                                       ULONG, PVOID);
-  BOOL WINAPI SymEnumerateSymbols(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACK,
-                                  PVOID);
-  BOOL WINAPI SymEnumerateSymbolsW(HANDLE, ULONG,
-                                   PSYM_ENUMSYMBOLS_CALLBACKW, PVOID);
-  typedef BOOL(CALLBACK * PSYM_ENUMSYMBOLS_CALLBACK64) (PCSTR, DWORD64,
-                                                        ULONG, PVOID);
-  typedef BOOL(CALLBACK * PSYM_ENUMSYMBOLS_CALLBACK64W) (PCWSTR, DWORD64,
-                                                         ULONG, PVOID);
-  BOOL WINAPI SymEnumerateSymbols64(HANDLE, ULONG64,
-                                    PSYM_ENUMSYMBOLS_CALLBACK64, PVOID);
-  BOOL WINAPI SymEnumerateSymbolsW64(HANDLE, ULONG64,
-                                     PSYM_ENUMSYMBOLS_CALLBACK64W, PVOID);
-  BOOL WINAPI SymEnumSymbolsForAddr(HANDLE, DWORD64,
-                                    PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID);
-  BOOL WINAPI SymEnumSymbolsForAddrW(HANDLE, DWORD64,
-                                     PSYM_ENUMERATESYMBOLS_CALLBACKW,
-                                     PVOID);
-  typedef BOOL(CALLBACK * PSYMBOL_REGISTERED_CALLBACK) (HANDLE, ULONG,
-                                                        PVOID, PVOID);
-  BOOL WINAPI SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK,
-                                  PVOID);
-  typedef BOOL(CALLBACK * PSYMBOL_REGISTERED_CALLBACK64) (HANDLE, ULONG,
-                                                          ULONG64,
-                                                          ULONG64);
-  BOOL WINAPI SymRegisterCallback64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64,
-                                    ULONG64);
-  BOOL WINAPI SymRegisterCallbackW64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64,
-                                     ULONG64);
-  BOOL WINAPI SymUnDName(PIMAGEHLP_SYMBOL, PSTR, DWORD);
-  BOOL WINAPI SymUnDName64(PIMAGEHLP_SYMBOL64, PSTR, DWORD);
-  BOOL WINAPI SymMatchString(PCSTR, PCSTR, BOOL);
-  BOOL WINAPI SymMatchStringA(PCSTR, PCSTR, BOOL);
-  BOOL WINAPI SymMatchStringW(PCWSTR, PCWSTR, BOOL);
-  BOOL WINAPI SymSearch(HANDLE, ULONG64, DWORD, DWORD, PCSTR, DWORD64,
-                        PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID, DWORD);
-  BOOL WINAPI SymSearchW(HANDLE, ULONG64, DWORD, DWORD, PCWSTR, DWORD64,
-                         PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID, DWORD);
-  DWORD WINAPI UnDecorateSymbolName(PCSTR, PSTR, DWORD, DWORD);
-  DWORD WINAPI UnDecorateSymbolNameW(PCWSTR, PWSTR, DWORD, DWORD);
-  BOOL WINAPI SymGetScope(HANDLE, ULONG64, DWORD, PSYMBOL_INFO);
-  BOOL WINAPI SymGetScopeW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW);
-  BOOL WINAPI SymFromIndex(HANDLE, ULONG64, DWORD, PSYMBOL_INFO);
-  BOOL WINAPI SymFromIndexW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW);
-  BOOL WINAPI SymAddSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD, DWORD);
-  BOOL WINAPI SymAddSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD,
-                            DWORD);
-  BOOL WINAPI SymDeleteSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD);
-  BOOL WINAPI SymDeleteSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD);
-
-/*************************
- *      Source Files     *
- *************************/
-  typedef BOOL(CALLBACK * PSYM_ENUMSOURCEFILES_CALLBACK) (PSOURCEFILE,
-                                                          PVOID);
-  typedef BOOL(CALLBACK * PSYM_ENUMSOURCEFILES_CALLBACKW) (PSOURCEFILEW,
-                                                           PVOID);
-
-  BOOL WINAPI SymEnumSourceFiles(HANDLE, ULONG64, PCSTR,
-                                 PSYM_ENUMSOURCEFILES_CALLBACK, PVOID);
-  BOOL WINAPI SymEnumSourceFilesW(HANDLE, ULONG64, PCWSTR,
-                                  PSYM_ENUMSOURCEFILES_CALLBACKW, PVOID);
-  BOOL WINAPI SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE);
-  BOOL WINAPI SymGetLineFromAddrW(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINEW);
-  BOOL WINAPI SymGetLineFromAddr64(HANDLE, DWORD64, PDWORD,
-                                   PIMAGEHLP_LINE64);
-  BOOL WINAPI SymGetLineFromAddrW64(HANDLE, DWORD64, PDWORD,
-                                    PIMAGEHLP_LINEW64);
-  BOOL WINAPI SymGetLinePrev(HANDLE, PIMAGEHLP_LINE);
-  BOOL WINAPI SymGetLinePrevW(HANDLE, PIMAGEHLP_LINEW);
-  BOOL WINAPI SymGetLinePrev64(HANDLE, PIMAGEHLP_LINE64);
-  BOOL WINAPI SymGetLinePrevW64(HANDLE, PIMAGEHLP_LINEW64);
-  BOOL WINAPI SymGetLineNext(HANDLE, PIMAGEHLP_LINE);
-  BOOL WINAPI SymGetLineNextW(HANDLE, PIMAGEHLP_LINEW);
-  BOOL WINAPI SymGetLineNext64(HANDLE, PIMAGEHLP_LINE64);
-  BOOL WINAPI SymGetLineNextW64(HANDLE, PIMAGEHLP_LINEW64);
-  BOOL WINAPI SymGetLineFromName(HANDLE, PCSTR, PCSTR, DWORD, PLONG,
-                                 PIMAGEHLP_LINE);
-  BOOL WINAPI SymGetLineFromName64(HANDLE, PCSTR, PCSTR, DWORD, PLONG,
-                                   PIMAGEHLP_LINE64);
-  BOOL WINAPI SymGetLineFromNameW64(HANDLE, PCWSTR, PCWSTR, DWORD, PLONG,
-                                    PIMAGEHLP_LINEW64);
-  ULONG WINAPI SymGetFileLineOffsets64(HANDLE, PCSTR, PCSTR, PDWORD64,
-                                       ULONG);
-  BOOL WINAPI SymGetSourceFile(HANDLE, ULONG64, PCSTR, PCSTR, PSTR, DWORD);
-  BOOL WINAPI SymGetSourceFileW(HANDLE, ULONG64, PCWSTR, PCWSTR, PWSTR,
-                                DWORD);
-  BOOL WINAPI SymGetSourceFileToken(HANDLE, ULONG64, PCSTR, PVOID *,
-                                    DWORD *);
-  BOOL WINAPI SymGetSourceFileTokenW(HANDLE, ULONG64, PCWSTR, PVOID *,
-                                     DWORD *);
-  BOOL WINAPI SymGetSourceFileFromToken(HANDLE, PVOID, PCSTR, PSTR, DWORD);
-  BOOL WINAPI SymGetSourceFileFromTokenW(HANDLE, PVOID, PCWSTR, PWSTR,
-                                         DWORD);
-  BOOL WINAPI SymGetSourceVarFromToken(HANDLE, PVOID, PCSTR, PCSTR, PSTR,
-                                       DWORD);
-  BOOL WINAPI SymGetSourceVarFromTokenW(HANDLE, PVOID, PCWSTR, PCWSTR,
-                                        PWSTR, DWORD);
-
-  typedef struct _SRCCODEINFO {
-    DWORD SizeOfStruct;
-    PVOID Key;
-    DWORD64 ModBase;
-    CHAR Obj[MAX_PATH + 1];
-    CHAR FileName[MAX_PATH + 1];
-    DWORD LineNumber;
-    DWORD64 Address;
-  } SRCCODEINFO, *PSRCCODEINFO;
-
-  typedef struct _SRCCODEINFOW {
-    DWORD SizeOfStruct;
-    PVOID Key;
-    DWORD64 ModBase;
-    WCHAR Obj[MAX_PATH + 1];
-    WCHAR FileName[MAX_PATH + 1];
-    DWORD LineNumber;
-    DWORD64 Address;
-  } SRCCODEINFOW, *PSRCCODEINFOW;
-
-  typedef BOOL(CALLBACK * PSYM_ENUMLINES_CALLBACK) (PSRCCODEINFO, PVOID);
-  typedef BOOL(CALLBACK * PSYM_ENUMLINES_CALLBACKW) (PSRCCODEINFOW, PVOID);
-  BOOL WINAPI SymEnumLines(HANDLE, ULONG64, PCSTR, PCSTR,
-                           PSYM_ENUMLINES_CALLBACK, PVOID);
-  BOOL WINAPI SymEnumLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR,
-                            PSYM_ENUMLINES_CALLBACKW, PVOID);
-  BOOL WINAPI SymEnumSourceLines(HANDLE, ULONG64, PCSTR, PCSTR, DWORD,
-                                 DWORD, PSYM_ENUMLINES_CALLBACK, PVOID);
-  BOOL WINAPI SymEnumSourceLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, DWORD,
-                                  DWORD, PSYM_ENUMLINES_CALLBACKW, PVOID);
-
-/*************************
- * File & image handling *
- *************************/
-  BOOL WINAPI SymInitialize(HANDLE, PCSTR, BOOL);
-  BOOL WINAPI SymInitializeW(HANDLE, PCWSTR, BOOL);
-  BOOL WINAPI SymCleanup(HANDLE);
-
-  HANDLE WINAPI FindDebugInfoFile(PCSTR, PCSTR, PSTR);
-  typedef BOOL(CALLBACK * PFIND_DEBUG_FILE_CALLBACK) (HANDLE, PCSTR,
-                                                      PVOID);
-  typedef BOOL(CALLBACK * PFIND_DEBUG_FILE_CALLBACKW) (HANDLE, PCWSTR,
-                                                       PVOID);
-  HANDLE WINAPI FindDebugInfoFileEx(PCSTR, PCSTR, PSTR,
-                                    PFIND_DEBUG_FILE_CALLBACK, PVOID);
-  HANDLE WINAPI FindDebugInfoFileExW(PCWSTR, PCWSTR, PWSTR,
-                                     PFIND_DEBUG_FILE_CALLBACKW, PVOID);
-  HANDLE WINAPI SymFindDebugInfoFile(HANDLE, PCSTR, PSTR,
-                                     PFIND_DEBUG_FILE_CALLBACK, PVOID);
-  HANDLE WINAPI SymFindDebugInfoFileW(HANDLE, PCWSTR, PWSTR,
-                                      PFIND_DEBUG_FILE_CALLBACKW, PVOID);
-  typedef BOOL(CALLBACK * PFINDFILEINPATHCALLBACK) (PCSTR, PVOID);
-  typedef BOOL(CALLBACK * PFINDFILEINPATHCALLBACKW) (PCWSTR, PVOID);
-  BOOL WINAPI FindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD,
-                             DWORD, PSTR, PFINDFILEINPATHCALLBACK, PVOID);
-  BOOL WINAPI SymFindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD,
-                                DWORD, PSTR, PFINDFILEINPATHCALLBACK,
-                                PVOID);
-  BOOL WINAPI SymFindFileInPathW(HANDLE, PCWSTR, PCWSTR, PVOID, DWORD,
-                                 DWORD, DWORD, PWSTR,
-                                 PFINDFILEINPATHCALLBACKW, PVOID);
-  HANDLE WINAPI FindExecutableImage(PCSTR, PCSTR, PSTR);
-  typedef BOOL(CALLBACK * PFIND_EXE_FILE_CALLBACK) (HANDLE, PCSTR, PVOID);
-  typedef BOOL(CALLBACK * PFIND_EXE_FILE_CALLBACKW) (HANDLE, PCWSTR,
-                                                     PVOID);
-  HANDLE WINAPI FindExecutableImageEx(PCSTR, PCSTR, PSTR,
-                                      PFIND_EXE_FILE_CALLBACK, PVOID);
-  HANDLE WINAPI FindExecutableImageExW(PCWSTR, PCWSTR, PWSTR,
-                                       PFIND_EXE_FILE_CALLBACKW, PVOID);
-  HANDLE WINAPI SymFindExecutableImage(HANDLE, PCSTR, PSTR,
-                                       PFIND_EXE_FILE_CALLBACK, PVOID);
-  HANDLE WINAPI SymFindExecutableImageW(HANDLE, PCWSTR, PWSTR,
-                                        PFIND_EXE_FILE_CALLBACKW, PVOID);
-  PIMAGE_NT_HEADERS WINAPI ImageNtHeader(PVOID);
-  PVOID WINAPI ImageDirectoryEntryToDataEx(PVOID, BOOLEAN, USHORT, PULONG,
-                                           PIMAGE_SECTION_HEADER *);
-  PVOID WINAPI ImageDirectoryEntryToData(PVOID, BOOLEAN, USHORT, PULONG);
-  PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(PIMAGE_NT_HEADERS, PVOID,
-                                                 ULONG);
-  PVOID WINAPI ImageRvaToVa(PIMAGE_NT_HEADERS, PVOID, ULONG,
-                            PIMAGE_SECTION_HEADER *);
-  BOOL WINAPI SymGetSearchPath(HANDLE, PSTR, DWORD);
-  BOOL WINAPI SymGetSearchPathW(HANDLE, PWSTR, DWORD);
-  BOOL WINAPI SymSetSearchPath(HANDLE, PCSTR);
-  BOOL WINAPI SymSetSearchPathW(HANDLE, PCWSTR);
-  DWORD WINAPI GetTimestampForLoadedLibrary(HMODULE);
-  BOOL WINAPI MakeSureDirectoryPathExists(PCSTR);
-  BOOL WINAPI SearchTreeForFile(PCSTR, PCSTR, PSTR);
-  BOOL WINAPI SearchTreeForFileW(PCWSTR, PCWSTR, PWSTR);
-  typedef BOOL(CALLBACK * PENUMDIRTREE_CALLBACK) (PCSTR, PVOID);
-  typedef BOOL(CALLBACK * PENUMDIRTREE_CALLBACKW) (PCWSTR, PVOID);
-  BOOL WINAPI EnumDirTree(HANDLE, PCSTR, PCSTR, PSTR,
-                          PENUMDIRTREE_CALLBACK, PVOID);
-  BOOL WINAPI EnumDirTreeW(HANDLE, PCWSTR, PCWSTR, PWSTR,
-                           PENUMDIRTREE_CALLBACKW, PVOID);
-  BOOL WINAPI SymMatchFileName(PCSTR, PCSTR, PSTR *, PSTR *);
-  BOOL WINAPI SymMatchFileNameW(PCWSTR, PCWSTR, PWSTR *, PWSTR *);
-  PCHAR WINAPI SymSetHomeDirectory(HANDLE, PCSTR);
-  PWSTR WINAPI SymSetHomeDirectoryW(HANDLE, PCWSTR);
-  PCHAR WINAPI SymGetHomeDirectory(DWORD, PSTR, size_t);
-  PWSTR WINAPI SymGetHomeDirectoryW(DWORD, PWSTR, size_t);
-#define hdBase  0
-#define hdSym   1
-#define hdSrc   2
-#define hdMax   3
-
-/*************************
- *   Context management  *
- *************************/
-  BOOL WINAPI SymSetContext(HANDLE, PIMAGEHLP_STACK_FRAME,
-                            PIMAGEHLP_CONTEXT);
-
-
-/*************************
- *    Stack management   *
- *************************/
-
-  typedef struct _KDHELP {
-    DWORD Thread;
-    DWORD ThCallbackStack;
-    DWORD NextCallback;
-    DWORD FramePointer;
-    DWORD KiCallUserMode;
-    DWORD KeUserCallbackDispatcher;
-    DWORD SystemRangeStart;
-  } KDHELP, *PKDHELP;
-
-  typedef struct _KDHELP64 {
-    DWORD64 Thread;
-    DWORD ThCallbackStack;
-    DWORD ThCallbackBStore;
-    DWORD NextCallback;
-    DWORD FramePointer;
-    DWORD64 KiCallUserMode;
-    DWORD64 KeUserCallbackDispatcher;
-    DWORD64 SystemRangeStart;
-    DWORD64 Reserved[8];
-  } KDHELP64, *PKDHELP64;
-
-  typedef struct _STACKFRAME {
-    ADDRESS AddrPC;
-    ADDRESS AddrReturn;
-    ADDRESS AddrFrame;
-    ADDRESS AddrStack;
-    PVOID FuncTableEntry;
-    DWORD Params[4];
-    BOOL Far;
-    BOOL Virtual;
-    DWORD Reserved[3];
-    KDHELP KdHelp;
-    ADDRESS AddrBStore;
-  } STACKFRAME, *LPSTACKFRAME;
-
-  typedef struct _STACKFRAME64 {
-    ADDRESS64 AddrPC;
-    ADDRESS64 AddrReturn;
-    ADDRESS64 AddrFrame;
-    ADDRESS64 AddrStack;
-    ADDRESS64 AddrBStore;
-    PVOID FuncTableEntry;
-    DWORD64 Params[4];
-    BOOL Far;
-    BOOL Virtual;
-    DWORD64 Reserved[3];
-    KDHELP64 KdHelp;
-  } STACKFRAME64, *LPSTACKFRAME64;
-
-  typedef BOOL(CALLBACK * PREAD_PROCESS_MEMORY_ROUTINE)
-   (HANDLE, DWORD, PVOID, DWORD, PDWORD);
-  typedef PVOID(CALLBACK * PFUNCTION_TABLE_ACCESS_ROUTINE) (HANDLE, DWORD);
-  typedef DWORD(CALLBACK * PGET_MODULE_BASE_ROUTINE) (HANDLE, DWORD);
-  typedef DWORD(CALLBACK * PTRANSLATE_ADDRESS_ROUTINE) (HANDLE, HANDLE,
-                                                        LPADDRESS);
-  BOOL WINAPI StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, PVOID,
-                        PREAD_PROCESS_MEMORY_ROUTINE,
-                        PFUNCTION_TABLE_ACCESS_ROUTINE,
-                        PGET_MODULE_BASE_ROUTINE,
-                        PTRANSLATE_ADDRESS_ROUTINE);
-
-  typedef BOOL(CALLBACK * PREAD_PROCESS_MEMORY_ROUTINE64)
-   (HANDLE, DWORD64, PVOID, DWORD, PDWORD);
-  typedef PVOID(CALLBACK * PFUNCTION_TABLE_ACCESS_ROUTINE64) (HANDLE,
-                                                              DWORD64);
-  typedef DWORD64(CALLBACK * PGET_MODULE_BASE_ROUTINE64) (HANDLE, DWORD64);
-  typedef DWORD64(CALLBACK * PTRANSLATE_ADDRESS_ROUTINE64) (HANDLE, HANDLE,
-                                                            LPADDRESS64);
-  BOOL WINAPI StackWalk64(DWORD, HANDLE, HANDLE, LPSTACKFRAME64, PVOID,
-                          PREAD_PROCESS_MEMORY_ROUTINE64,
-                          PFUNCTION_TABLE_ACCESS_ROUTINE64,
-                          PGET_MODULE_BASE_ROUTINE64,
-                          PTRANSLATE_ADDRESS_ROUTINE64);
-
-  PVOID WINAPI SymFunctionTableAccess(HANDLE, DWORD);
-  PVOID WINAPI SymFunctionTableAccess64(HANDLE, DWORD64);
-
-  typedef PVOID(CALLBACK * PSYMBOL_FUNCENTRY_CALLBACK) (HANDLE, DWORD,
-                                                        PVOID);
-  typedef PVOID(CALLBACK * PSYMBOL_FUNCENTRY_CALLBACK64) (HANDLE, ULONG64,
-                                                          ULONG64);
-
-  BOOL WINAPI SymRegisterFunctionEntryCallback(HANDLE,
-                                               PSYMBOL_FUNCENTRY_CALLBACK,
-                                               PVOID);
-  BOOL WINAPI SymRegisterFunctionEntryCallback64(HANDLE,
-                                                 PSYMBOL_FUNCENTRY_CALLBACK64,
-                                                 ULONG64);
-
-/*************************
- * Version, global stuff *
- *************************/
-
-#define API_VERSION_NUMBER 9
-
-  typedef struct API_VERSION {
-    USHORT MajorVersion;
-    USHORT MinorVersion;
-    USHORT Revision;
-    USHORT Reserved;
-  } API_VERSION, *LPAPI_VERSION;
-
-  LPAPI_VERSION WINAPI ImagehlpApiVersion(void);
-  LPAPI_VERSION WINAPI ImagehlpApiVersionEx(LPAPI_VERSION);
-
-  typedef struct _IMAGE_DEBUG_INFORMATION {
-    LIST_ENTRY List;
-    DWORD ReservedSize;
-    PVOID ReservedMappedBase;
-    USHORT ReservedMachine;
-    USHORT ReservedCharacteristics;
-    DWORD ReservedCheckSum;
-    DWORD ImageBase;
-    DWORD SizeOfImage;
-    DWORD ReservedNumberOfSections;
-    PIMAGE_SECTION_HEADER ReservedSections;
-    DWORD ReservedExportedNamesSize;
-    PSTR ReservedExportedNames;
-    DWORD ReservedNumberOfFunctionTableEntries;
-    PIMAGE_FUNCTION_ENTRY ReservedFunctionTableEntries;
-    DWORD ReservedLowestFunctionStartingAddress;
-    DWORD ReservedHighestFunctionEndingAddress;
-    DWORD ReservedNumberOfFpoTableEntries;
-    PFPO_DATA ReservedFpoTableEntries;
-    DWORD SizeOfCoffSymbols;
-    PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
-    DWORD ReservedSizeOfCodeViewSymbols;
-    PVOID ReservedCodeViewSymbols;
-    PSTR ImageFilePath;
-    PSTR ImageFileName;
-    PSTR ReservedDebugFilePath;
-    DWORD ReservedTimeDateStamp;
-    BOOL ReservedRomImage;
-    PIMAGE_DEBUG_DIRECTORY ReservedDebugDirectory;
-    DWORD ReservedNumberOfDebugDirectories;
-    DWORD ReservedOriginalFunctionTableBaseAddress;
-    DWORD Reserved[2];
-  } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
-
-
-  PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(HANDLE, PCSTR, PCSTR,
-                                                      ULONG);
-
-  BOOL WINAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION);
-
-  DWORD WINAPI SymGetOptions(void);
-  DWORD WINAPI SymSetOptions(DWORD);
-
-  BOOL WINAPI SymSetParentWindow(HWND);
-
-/*************************
- * Version, global stuff *
- *************************/
-
-  typedef BOOL(WINAPI * PSYMBOLSERVERPROC) (PCSTR, PCSTR, PVOID, DWORD,
-                                            DWORD, PSTR);
-  typedef BOOL(WINAPI * PSYMBOLSERVERPROCA) (PCSTR, PCSTR, PVOID, DWORD,
-                                             DWORD, PSTR);
-  typedef BOOL(WINAPI * PSYMBOLSERVERPROCW) (PCWSTR, PCWSTR, PVOID, DWORD,
-                                             DWORD, PWSTR);
-  typedef BOOL(WINAPI * PSYMBOLSERVEROPENPROC) (void);
-  typedef BOOL(WINAPI * PSYMBOLSERVERCLOSEPROC) (void);
-  typedef BOOL(WINAPI * PSYMBOLSERVERSETOPTIONSPROC) (UINT_PTR, ULONG64);
-  typedef BOOL(CALLBACK * PSYMBOLSERVERCALLBACKPROC) (UINT_PTR, ULONG64,
-                                                      ULONG64);
-  typedef UINT_PTR(WINAPI * PSYMBOLSERVERGETOPTIONSPROC) (void);
-  typedef BOOL(WINAPI * PSYMBOLSERVERPINGPROC) (PCSTR);
-  typedef BOOL(WINAPI * PSYMBOLSERVERPINGPROCA) (PCSTR);
-  typedef BOOL(WINAPI * PSYMBOLSERVERPINGPROCW) (PCWSTR);
-
-#define SSRVOPT_CALLBACK            0x0001
-#define SSRVOPT_DWORD               0x0002
-#define SSRVOPT_DWORDPTR            0x0004
-#define SSRVOPT_GUIDPTR             0x0008
-#define SSRVOPT_OLDGUIDPTR          0x0010
-#define SSRVOPT_UNATTENDED          0x0020
-#define SSRVOPT_NOCOPY              0x0040
-#define SSRVOPT_PARENTWIN           0x0080
-#define SSRVOPT_PARAMTYPE           0x0100
-#define SSRVOPT_SECURE              0x0200
-#define SSRVOPT_TRACE               0x0400
-#define SSRVOPT_SETCONTEXT          0x0800
-#define SSRVOPT_PROXY               0x1000
-#define SSRVOPT_DOWNSTREAM_STORE    0x2000
-#define SSRVOPT_RESET               ((ULONG_PTR)-1)
-
-#define SSRVACTION_TRACE        1
-#define SSRVACTION_QUERYCANCEL  2
-#define SSRVACTION_EVENT        3
-
-#ifdef __cplusplus
-}                               /* extern "C" */
-#endif                          /* defined(__cplusplus) */
-#endif                          /* __WINE_DBGHELP_H */
diff --git a/src/xbt/backtrace_windows.c b/src/xbt/backtrace_windows.c
deleted file mode 100644 (file)
index 5b6b98e..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-/* backtrace_windows - backtrace displaying on windows platform             */
-/* This file is included by ex.c on need (windows x86)                      */
-
-/* Copyright (c) 2008-2015. The SimGrid Team.
- * All rights reserved.                                                     */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-/*
- * Win32 (x86) implementation backtrace, backtrace_symbols:
- *  support for application self-debugging.
- */
-
-#if defined(_XBT_VISUALC_COMPILER)
-/* native windows build */
-#  include <dbghelp.h>
-#else
-/* gcc-based cross-compiling */
-#  include "xbt/wine_dbghelp.h"
-#endif
-
-
-/* SymInitialize() */
-typedef BOOL(WINAPI * fun_initialize_t) (HANDLE, PSTR, BOOL);
-static fun_initialize_t fun_initialize;
-
-/* SymCleanup() */
-typedef BOOL(WINAPI * fun_cleanup_t) (HANDLE hProcess);
-static fun_cleanup_t fun_cleanup;
-
-/* SymFunctionTableAccess() */
-typedef PVOID(WINAPI * fun_function_table_access_t) (HANDLE, DWORD);
-static fun_function_table_access_t fun_function_table_access;
-
-/* SymGetLineFromAddr() */
-typedef BOOL(WINAPI * fun_get_line_from_addr_t) (HANDLE, DWORD,
-                                                 PDWORD, PIMAGEHLP_LINE);
-static fun_get_line_from_addr_t fun_get_line_from_addr;
-
-/* SymGetModuleBase() */
-typedef DWORD(WINAPI * fun_get_module_base_t) (HANDLE, DWORD);
-static fun_get_module_base_t fun_get_module_base;
-
-/* SymGetOptions() */
-typedef DWORD(WINAPI * fun_get_options_t) (VOID);
-static fun_get_options_t fun_get_options;
-
-/* SymSetOptions() */
-typedef DWORD(WINAPI * fun_set_options_t) (DWORD);
-static fun_set_options_t fun_set_options;
-
-/* Pointer function to SymGetSymFromAddr() */
-typedef BOOL(WINAPI * fun_get_sym_from_addr_t) (HANDLE, DWORD, PDWORD,
-                                                OUT PIMAGEHLP_SYMBOL);
-static fun_get_sym_from_addr_t fun_get_sym_from_addr;
-
-/* Pointer function to StackWalk() */
-typedef BOOL(WINAPI * fun_stack_walk_t) (DWORD, HANDLE, HANDLE,
-                                         LPSTACKFRAME, PVOID,
-                                         PREAD_PROCESS_MEMORY_ROUTINE,
-                                         PFUNCTION_TABLE_ACCESS_ROUTINE,
-                                         PGET_MODULE_BASE_ROUTINE,
-                                         PTRANSLATE_ADDRESS_ROUTINE);
-static fun_stack_walk_t fun_stack_walk;
-
-static HINSTANCE hlp_dbg_instance = NULL;
-static HANDLE process_handle = NULL;
-
-
-/* Module creation/destruction: initialize our tables */
-void xbt_backtrace_preinit(void)
-{
-  process_handle = GetCurrentProcess();
-
-  if (hlp_dbg_instance) {
-    /* debug help is already loaded */
-    return;
-  }
-
-  /* load the library */
-  hlp_dbg_instance = LoadLibraryA("Dbghelp.dll");
-
-  if (!hlp_dbg_instance)
-    return;
-
-  /* get the pointers to debug help library exported functions */
-  fun_initialize =
-      (fun_initialize_t) GetProcAddress(hlp_dbg_instance, "SymInitialize");
-  fun_cleanup =
-      (fun_cleanup_t) GetProcAddress(hlp_dbg_instance, "SymCleanup");
-  fun_function_table_access =
-      (fun_function_table_access_t) GetProcAddress(hlp_dbg_instance,
-                                                   "SymFunctionTableAccess");
-  fun_get_line_from_addr =
-      (fun_get_line_from_addr_t) GetProcAddress(hlp_dbg_instance,
-                                                "SymGetLineFromAddr");
-  fun_get_module_base =
-      (fun_get_module_base_t) GetProcAddress(hlp_dbg_instance,
-                                             "SymGetModuleBase");
-  fun_get_options =
-      (fun_get_options_t) GetProcAddress(hlp_dbg_instance,
-                                         "SymGetOptions");
-  fun_get_sym_from_addr =
-      (fun_get_sym_from_addr_t) GetProcAddress(hlp_dbg_instance,
-                                               "SymGetSymFromAddr");
-  fun_set_options =
-      (fun_set_options_t) GetProcAddress(hlp_dbg_instance,
-                                         "SymSetOptions");
-  fun_stack_walk =
-      (fun_stack_walk_t) GetProcAddress(hlp_dbg_instance, "StackWalk");
-
-  /* Check that everything worked well */
-  if (!fun_initialize ||
-      !fun_cleanup ||
-      !fun_function_table_access ||
-      !fun_get_line_from_addr ||
-      !fun_get_module_base ||
-      !fun_get_options ||
-      !fun_get_sym_from_addr || !fun_set_options || !fun_stack_walk) {
-    FreeLibrary(hlp_dbg_instance);
-    hlp_dbg_instance = NULL;
-    return;
-  }
-
-  fun_set_options(fun_get_options() |
-                      SYMOPT_LOAD_LINES | SYMOPT_DEFERRED_LOADS);
-
-  if (!fun_initialize(process_handle, 0, 1)) {
-    FreeLibrary(hlp_dbg_instance);
-    hlp_dbg_instance = NULL;
-  }
-}
-
-void xbt_backtrace_postexit(void)
-{
-  if (!hlp_dbg_instance)
-    return;
-
-  if (fun_cleanup(process_handle))
-    FreeLibrary(hlp_dbg_instance);
-
-  hlp_dbg_instance = NULL;
-}
-
-/*
- * backtrace() function.
- *
- * Returns a backtrace for the calling program, in  the  array
- * pointed  to  by  buffer.  A backtrace is the series of currently active
- * function calls for the program.  Each item in the array pointed  to  by
- * buffer  is  of  type  void *, and is the return address from the corre-
- * sponding stack frame.  The size argument specifies the  maximum  number
- * of  addresses that can be stored in buffer.  If the backtrace is larger
- * than size, then the addresses corresponding to  the  size  most  recent
- * function  calls  are  returned;  to obtain the complete backtrace, make
- * sure that buffer and size are large enough.
- */
-
-int backtrace(void **buffer, int size);
-
-/*
- * backtrace_symbols() function.
- *
- * Given the set of addresses returned by  backtrace()  in  buffer,  back-
- * trace_symbols()  translates the addresses into an array of strings containing
- * the name, the source file and the line number or the las called functions.
- */
-char **backtrace_symbols(void *const *buffer, int size);
-
-void xbt_backtrace_current(xbt_ex_t * e)
-{
-  e->used = backtrace((void **) e->bt, XBT_BACKTRACE_SIZE);
-}
-
-
-void xbt_ex_setup_backtrace(xbt_ex_t * e)
-{
-  int i;
-  char **backtrace_syms;
-
-  xbt_assert(e, "Backtrace not setup yet, cannot set it up for display");
-
-  if (!e->used)
-    return;
-
-  backtrace_syms = backtrace_symbols(e->bt, e->used);
-  e->bt_strings = NULL;
-  /* parse the output and build a new backtrace */
-  e->bt_strings = xbt_new(char *, e->used);
-
-  for (i = 0; i < e->used; i++)
-    e->bt_strings[i] = backtrace_syms[i];
-
-  free(backtrace_syms);
-}
-
-int backtrace(void **buffer, int size)
-{
-  int pos = 0;
-  STACKFRAME *stack_frame;
-  int first = 1;
-
-  IMAGEHLP_SYMBOL *pSym;
-  unsigned long offset = 0;
-  IMAGEHLP_LINE line_info = { 0 };
-  byte __buffer[(sizeof(SYMBOL_INFO) + MAX_SYM_NAME * sizeof(TCHAR) +
-                 sizeof(ULONG64) - 1) / sizeof(ULONG64)];
-
-  CONTEXT context = { CONTEXT_FULL };
-  GetThreadContext(GetCurrentThread(), &context);
-
-  /* ebp points on stack base */
-  /* esp points on stack pointer, ie on last stacked element (current element) */
-  _asm call $ + 5
-      _asm pop eax
-      _asm mov context.Eip, eax
-      _asm mov eax, esp
-      _asm mov context.Esp, eax
-      _asm mov context.Ebp, ebp
-      if ((NULL == hlp_dbg_instance) || (size <= 0) || (NULL == buffer)) {
-    errno = EINVAL;
-    return 0;
-  }
-
-  for (pos = 0; pos < size; pos++)
-    buffer[pos] = NULL;
-
-  pos = 0;
-
-  pSym = (IMAGEHLP_SYMBOL *) __buffer;
-
-  pSym->SizeOfStruct = sizeof(IMAGEHLP_SYMBOL);
-  pSym->MaxNameLength = MAX_SYM_NAME;
-
-
-  line_info.SizeOfStruct = sizeof(IMAGEHLP_LINE);
-
-
-  while (pos < size) {
-    stack_frame = (void *) xbt_new0(STACKFRAME, 1);
-
-    stack_frame->AddrPC.Offset = context.Eip;
-    stack_frame->AddrPC.Mode = AddrModeFlat;
-
-    stack_frame->AddrFrame.Offset = context.Ebp;
-    stack_frame->AddrFrame.Mode = AddrModeFlat;
-
-    stack_frame->AddrStack.Offset = context.Esp;
-    stack_frame->AddrStack.Mode = AddrModeFlat;
-
-    if ((*fun_stack_walk) (IMAGE_FILE_MACHINE_I386,
-                           process_handle,
-                           GetCurrentThread(),
-                           stack_frame,
-                           &context,
-                           NULL,
-                           fun_function_table_access,
-                           fun_get_module_base, NULL)
-        && !first) {
-      if (stack_frame->AddrReturn.Offset) {
-
-        if ((*fun_get_sym_from_addr)
-            (process_handle, stack_frame->AddrPC.Offset, &offset, pSym)) {
-          if ((*fun_get_line_from_addr)
-              (process_handle, stack_frame->AddrPC.Offset, &offset,
-               &line_info))
-            buffer[pos++] = (void *) stack_frame;
-        }
-      } else {
-        free(stack_frame);      /* no symbol or no line info */
-        break;
-      }
-    } else {
-      free(stack_frame);
-
-      if (first)
-        first = 0;
-      else
-        break;
-    }
-  }
-
-  return pos;
-}
-
-char **backtrace_symbols(void *const *buffer, int size)
-{
-  int pos;
-  int success = 0;
-  char **strings;
-  STACKFRAME *stack_frame;
-  IMAGEHLP_SYMBOL *pSym;
-  unsigned long offset = 0;
-  IMAGEHLP_LINE line_info = { 0 };
-  IMAGEHLP_MODULE module = { 0 };
-  byte __buffer[(sizeof(SYMBOL_INFO) + MAX_SYM_NAME * sizeof(TCHAR) +
-                 sizeof(ULONG64) - 1) / sizeof(ULONG64)];
-
-  if ((NULL == hlp_dbg_instance) || (size <= 0) || (NULL == buffer)) {
-    errno = EINVAL;
-    return NULL;
-  }
-
-  strings = xbt_new0(char *, size);
-
-  pSym = (IMAGEHLP_SYMBOL *) __buffer;
-
-  pSym->SizeOfStruct = sizeof(IMAGEHLP_SYMBOL);
-  pSym->MaxNameLength = MAX_SYM_NAME;
-
-
-  line_info.SizeOfStruct = sizeof(IMAGEHLP_LINE);
-  module.SizeOfStruct = sizeof(IMAGEHLP_MODULE);
-
-  for (pos = 0; pos < size; pos++) {
-    stack_frame = (STACKFRAME *) (buffer[pos]);
-
-    if (NULL != stack_frame) {
-
-      if (fun_get_sym_from_addr
-          (process_handle, stack_frame->AddrPC.Offset, &offset, pSym)) {
-        if (fun_get_line_from_addr
-            (process_handle, stack_frame->AddrPC.Offset, &offset,
-             &line_info)) {
-          strings[pos] =
-              bprintf("**   In %s() at %s:%d", pSym->Name,
-                      line_info.FileName, (int) line_info.LineNumber);
-        } else {
-          strings[pos] = bprintf("**   In %s()", pSym->Name);
-        }
-        success = 1;
-      } else {
-        strings[pos] = xbt_strdup("**   <no symbol>");
-      }
-
-      free(stack_frame);
-    } else
-      break;
-  }
-
-  if (!success) {
-    free(strings);
-    strings = NULL;
-  }
-
-  return strings;
-}
index 97a9c33..7db2ce5 100644 (file)
@@ -122,8 +122,6 @@ void xbt_backtrace_display_current(void)
 
 #if defined(HAVE_EXECINFO_H) && defined(HAVE_POPEN) && defined(ADDR2LINE)
 # include "src/xbt/backtrace_linux.c"
-#elif (defined(_WIN32) && defined (_M_IX86)) && !defined(__GNUC__)
-# include "src/xbt/backtrace_windows.c"
 #else
 # include "src/xbt/backtrace_dummy.c"
 #endif
index abbd3b1..7aac810 100644 (file)
@@ -13,7 +13,6 @@ set(EXTRA_DIST
   src/include/surf/datatypes.h
   src/include/surf/maxmin.h
   src/include/surf/surf.h
-  src/include/xbt/wine_dbghelp.h
   src/msg/msg_private.h
   src/portable.h
   src/simdag/dax.dtd
@@ -90,7 +89,6 @@ set(EXTRA_DIST
   src/xbt/automaton/parserPromela.yacc
   src/xbt/backtrace_dummy.c
   src/xbt/backtrace_linux.c
-  src/xbt/backtrace_windows.c
   src/xbt/dict_private.h
   src/xbt/ex_interface.h
   src/xbt/fifo_private.h