summaryrefslogtreecommitdiff
path: root/protocols
diff options
context:
space:
mode:
authorKirill Volinsky <Mataes2007@gmail.com>2017-11-27 15:30:18 +0300
committerKirill Volinsky <Mataes2007@gmail.com>2017-11-27 15:30:18 +0300
commitb5a72ee1fc2f94db34970db9f1973ea5188517f5 (patch)
tree62187ba0c502cd8e3c66493442c48535ba9b0e23 /protocols
parentcc79c1d36c07b905f9d47e5002f90783de92e6cb (diff)
cv2pdb: updated to version 0.42. Now it works with mspdb140.dll
Diffstat (limited to 'protocols')
-rw-r--r--protocols/Tox/tools/CHANGES266
-rw-r--r--protocols/Tox/tools/FEATURES33
-rw-r--r--protocols/Tox/tools/INSTALL71
-rw-r--r--protocols/Tox/tools/LICENSE201
-rw-r--r--protocols/Tox/tools/README (renamed from protocols/Tox/tools/cv2pdb_readme.txt)278
-rw-r--r--protocols/Tox/tools/TODO28
-rw-r--r--protocols/Tox/tools/VERSION1
-rw-r--r--protocols/Tox/tools/cv2pdb.exebin238080 -> 243712 bytes
8 files changed, 739 insertions, 139 deletions
diff --git a/protocols/Tox/tools/CHANGES b/protocols/Tox/tools/CHANGES
new file mode 100644
index 0000000000..c2f308e980
--- /dev/null
+++ b/protocols/Tox/tools/CHANGES
@@ -0,0 +1,266 @@
+
+This is the CHANGES file for cv2pdb, a
+converter of DMD CodeView/DWARF debug information to PDB files
+
+Copyright (c) 2009-2012 by Rainer Schuetze, All Rights Reserved
+
+Version history
+---------------
+
+2009-05-08 Version 0.1
+
+ * initial release
+
+2009-05-16 Version 0.2
+
+ * replace .debug section in executable rather than rename it. (only works
+ if it is the last section).
+ * support for field type LF_VFUNCTAB and symbol type S_CONSTANT used by DMC.
+ * added stringview to autoexp.dat for full length text display.
+
+2009-06-04 Version 0.3
+
+ * static members' debug info was not correctly converted, causing debugger confusion
+ * now works on executables compiled by DMC
+ - added command line switch -C to disable some D feature and
+ to remove function name from local variables
+ - added support for type LF_BITFIELD.
+ * added fields __viewhelper to classes string and object
+ * new addin dviewhelper.dll to display correctly terminated strings
+ and derived object type
+
+2009-06-05 Version 0.4
+
+ * fixed crash when long is used as index or element type of dynamic or
+ associative arrays
+
+2009-06-06 Version 0.5
+
+ * fixed error in __viewhelper field of string type, that could screw up type info
+ * added support for wstring and dstring
+ * fixed problems with debug info inside library by combining debug info of different modules
+ into a single pseudo-module
+ * now also replaces '.' by '@' in enumerator types for more consistent debug info
+
+2009-06-07 Version 0.6
+
+ * removed LF_DERIVED info from debug info, as it is inconsistent in DMD generated info
+ with more than 4096 type entries
+
+2009-06-08 Version 0.7
+
+ * corrected number of field entries in classes or struct, because DMD miscounts private members
+
+2009-06-11 Version 0.8
+
+ * tweaked visualizer macros to detect uninitialized associative arrays and to limit expansion
+ to arrays with less than 1024 entries
+ * renamed data pointer member of dynamic arrays to "ptr" to be consistent with the array property
+ in D.
+
+2009-06-19 Version 0.9
+
+ * fixed line number info at the end of a segment or when switching to another file
+ because of inline expansion
+ * fixed line numbers > 32767 and sections with 0 line number entries
+
+2009-08-12 Version 0.10
+
+ * better support for DMC:
+ - entries LF_FRIENDFCN removed
+ - entries LF_FRIENDCLS, LF_VBCLASS and LF_IVBCLASS converted
+ thanks to Andrew.
+ * derived-classes info in class entry now cleared to be consistent with removal of LF_DERIVED
+
+2009-12-29 Version 0.11
+
+ * basic types now show with their D names, not as C types
+ * "enum" prefix removed from type names of enumerator types
+ * added type information for complex data types
+ * dmd-patch needed for long/ulong support (http://d.puremagic.com/issues/show_bug.cgi?id=3373)
+ * experimental hack to add lexical scope to local variables (dmd patch in
+ http://d.puremagic.com/issues/show_bug.cgi?id=3657 needed)
+
+2010-04-13 Version 0.12
+
+ * added patch to convert binaries produced by Metroworks CodeWarrior
+ * names of local function are now demangled
+ * dmd 2.041 fixes long/ulong support (patch http://d.puremagic.com/issues/show_bug.cgi?id=3373
+ no longer needed)
+ * added managed C++ project to integrate cv2pdb with CLR (thanks to Alexander Bothe)
+ * dmd 2.043 uses different implementation of associative arrays, use command line
+ option -D 2.043 or above to produce the respective debug info
+
+2010-06-03 Version 0.13
+
+ * adapted to mspdb100.dll which comes with VS2010
+ * tweaked autoexp.dat modifications to be more stable with uninitialized data
+ * autoexp.snippet now split into two files: autoexp.expand and autoexp.visualizer
+
+2010-06-23 Version 0.14
+
+ * 64-integer types are now displayed as "dlong" and "ulong" instead of "__int64" and
+ "unsigned __int64"
+ * improved support for long and ulong for DMD versions before 1.057 and 2.041
+ * DMC also emits D-types for "long long" and "unsigned long long", these are
+ translated back to the correct types if command option -C is used
+ * now adding properties "has nested type" and "is nested type" to class/struct/union/enum types
+ * better support for enumerators: now added as user defined types (DMD patch needed)
+
+2010-08-08 Version 0.15
+
+ * thanks to patches by Z3N, the resulting pdb is now usable by more debuggers
+ * now uses shared file access to executable
+ * incomplete structs/classes are now added as user defined types to avoid confusing
+ debugger for following symbols
+ * fixed name demangling of very long names
+ * added name demangling support for @safe/@trusted/@property/pure/nothrow/ref
+ * base classes are added to D/cpp-interfaces to allow viewing the virtual function
+ table pointer
+ * structs, classes and interfaces now have an internal qualifier attached that allows
+ the preview in autoexp.dat to show better info for structs and interfaces
+
+2010-08-10 Version 0.16
+
+ * fixed crash when working with -C (introduced in last version)
+
+2010-09-04 Version 0.17
+
+ * fixed crash that could occur for user-defined types longer than 90 characters
+
+2010-10-24 Version 0.18
+
+ * fixed error with nested types longer than 255 characters
+ * more fixes for names longer than 300 characters
+
+2010-12-10 Version 0.19
+
+ * now converting only class pointers to references, not pointers to structs or void
+ * changed default D-version to 2.043 to create correct associative array type
+ information for recent compilers by default
+
+2010-12-30 Version 0.20
+
+ * fixed another issue with user defined type names longer than 300 characters
+ * now corrects the debug info when dmc/optlink emits multiple struct definitions,
+ but only one UDT record.
+
+2010-05-08 Version 0.21
+
+ * fixed decoding of compressed symbols
+ * added command line switch -n to disable symbol demangling
+ * fixed crash with more than 32767 types
+
+unreleased Version 0.22
+
+ * added command line switch -s to specify the replacement character for '.' in symbols
+ * fixed another crash where compressed symbols expand to more than 4096 characters
+
+2012-02-12 Version 0.23
+
+ * disabled named enumerator for D basic types to avoid debugger troubles displaying arrays
+ * added command line switch -e to enable using named enumerator for D basic types
+ * added DWARF support
+ * added x64 support
+ * tweaked visualizer for associative array element to just show key and value
+
+2012-05-01 Version 0.24
+
+ * supports unicode characters in file names
+ * improve interpretation of DWARF location expression
+
+2012-06-18 Version 0.25
+
+ * new option -p allows to specify the embedded PDB reference in the binary
+ * added support for VS2012
+
+2012-11-09 Version 0.26
+
+ * now iterating over multiple entries in the debug directory to find CV info
+
+2013-05-11 Version 0.27
+
+ * fixed crash when converting DWARF locations using 8 bytes or more
+
+2013-11-16 Version 0.28
+
+ * added searching mspdb120.dll for VS 2013
+ * changed search order for mspdb*.dll: trying to load through PATH first
+ newest VS versions preferred, then trying through installation paths for VS 2013-2005
+ * dviewhelper.dll now avoids being reloaded for every expression
+
+2014-02-19 Version 0.29
+
+ * fix DWARF conversion for newer gcc versions (4.8.0 or even earlier)
+
+2014-02-25 Version 0.30
+
+ * fixed crash when converting DWARF for executables without .reloc segment
+
+2014-03-01 Version 0.31
+
+ * added support for local variables accessed through esp
+
+2014-09-24 Version 0.32
+
+ * DWARF: fixed relocations in .debug_line section
+ * tweaked visualizer macros to display void[], limit array preview to 64 entries
+
+2014-12-19 Version 0.33
+
+ * DWARF: revamped location expression evaluator by Vadim Chugunov
+
+2015-02-17 Version 0.34
+
+ * DWARF: fixed issues with DW_FORM_strp, DW_AT_upper_bound and DW_AT_lower_bound
+ * DWARF: translate __int128 to CV code 0x14, just a wild guesss
+
+ * DWARF: add support for DW_ATE_UTF, remove bad assert
+
+2015-05-08 Version 0.35
+
+ * new tool dumplines to display the debug line number info
+
+2015-06-03 Version 0.36
+
+ * last version introduced a regression that could cause DWARF conversion to crash
+ * DWARF sections now stripped from image (if last sections)
+ * add support for VS 2015
+
+2015-06-17 Version 0.37
+
+ * DWARF: improved support for gcc 4.9.0 and clang 3.6
+ * DWARF: support debug_frame (CFA) and debug_loc (for frame base) for better support for locals
+ * write correct machine type for x64 to PDB
+
+2016-08-09 Version 0.38
+
+ * allow anonymous typedefs
+ * cv2pdb now builds as x64 application
+ * truncate symbols that are to long
+ * better support for symbols that contain non-ascii characters: do not uncompress names in field lists
+ * copy symbol unmodified if uncompression fails
+
+2017-01-20 Version 0.39
+
+ * do not assume sorted line numbers per segment
+
+2017-05-13 Version 0.40
+
+ * set source language 'D' in compilation unit
+ * for D version >= 2.068, write AA debug info compatible with dmd COFF output
+ * prefer struct over class for internal structs
+ * handle class/struct property "uniquename"
+
+2017-05-13 Version 0.41
+
+ * when using mspdb120.dll (VS2013) or later, do not emit view helpers
+ * remove method declarations from struct or class records (they confuse mspdb*.dll if having forward references?)
+
+2017-09-02 Version 0.42
+
+ * search VS2017 registry entries to find mspdb140.dll
+ * when using mspdb140.dll (VS2015) or later, use symbols to emit line numbers
+ * translate S_UDT_V1 to V3 version
+ * translate S_BLOCK_V1 to V3 version
+ * remove "this" from delegate parameter list if inconsistent with procedure type
diff --git a/protocols/Tox/tools/FEATURES b/protocols/Tox/tools/FEATURES
new file mode 100644
index 0000000000..d6767e3bc8
--- /dev/null
+++ b/protocols/Tox/tools/FEATURES
@@ -0,0 +1,33 @@
+Main Features
+
+* conversion of DMD/DMC CodeView information to PDB file
+* converted line number info allows setting breakpoints
+* display of variables, fields and objects in watch, local and auto
+ window and in data tooltips
+* convenient display of dynamic and associative arrays in watch windows
+* demangled function names for convenient display of callstack
+
+More features
+
+This list is a bit more technical and shows what is actually done to
+achieve the desired functionality:
+
+* replaces '.' in class names with '@' to avoid confusing debugger
+* converts class pointers to reference for "clss.field" syntax
+* converts the type of member function, so that "this" is an object
+ pointer, allowing the debugger to display fields without "this."
+* generates generic debug info for dynamic arrays, associative arrays
+ and delegates
+* creates readable type names for display of D specific types
+* autoexp.dat formats output for dynamic and associative arrays in
+ watch windows
+* autoexp.dat filters display of null references
+* adds object class debug info
+* "char[]", "wchar[]" and "dchar[]" (D1) or "const char[]",
+ "const wchar[]" and "const dchar[]" (D2) translated to "string",
+ "wstring" and "dstring", respectively
+* converts type delegate<void*,int> to __int64
+* addin dviewhelper.dll allows correct display of D style strings
+ and derived object type
+* maps D basic types to enumerators to overload C style names
+* add struct definitions for complex data types
diff --git a/protocols/Tox/tools/INSTALL b/protocols/Tox/tools/INSTALL
new file mode 100644
index 0000000000..93863dd740
--- /dev/null
+++ b/protocols/Tox/tools/INSTALL
@@ -0,0 +1,71 @@
+
+This is the INSTALL file for cv2pdb, a
+converter of DMD CodeView/DWARF debug information to PDB files
+
+Copyright (c) 2009-2010 by Rainer Schuetze, All Rights Reserved
+
+Prerequisites
+-------------
+
+For this program to be useful, you should have you should have the
+Digital Mars D Compiler (http://www.digitalmars.com/d/2.0/dmd-windows.html)
+and either Microsoft Visual Studio 2005, 2008 or 2010 or one of the Express
+versions installed. cv2pdb uses one of the Microsoft DLLs to actually
+write the PDB file.
+
+If you are using some other program, you'll still need some
+files from one of the distributions. These are mspdb80.dll, mspdbsrv.exe,
+msobj80.dll, mspdbcore.dll and msvcr90.dll from the VS2008 installation or
+mspdb100.dll, mspdbsrv.exe, msobj100.dll, mspdbcore.dll and msvcr100.dll
+from VS2010. They should be accessible through the PATH environment variable.
+(The VS Shell is missing the msobj80.dll/msobj100.dll only).
+
+Installation
+------------
+You might want to consider installing Visual D (www.dsource.org/projects/visuald)
+instead of cv2pdb. Visual D provides both project and language integration
+into Visual Studio and comes with an installer that includes cv2pdb.
+
+There is no full featured installer available for cv2pdb, you'll have
+to do some simple manual steps to use cv2pdb.
+
+1. The binary package of cv2pdb contains an executable cv2pdb.exe, which
+should be copied somewhere accessible through your PATH environment
+variable.
+
+2. cv2pdb.exe must be able to locate the DLL mspdb80.dll/mspdb100.dll from the Visual
+Studio installation. It tries to read the installation path of the latter from the registry, but
+if this fails, mspdb80.dll/mspdb100.dll should also be accessible through your PATH
+environment variable.
+
+3. For best debugging experience, you should configure Visual Studio
+to use C/C++ syntax highlighting for D files. This is done by
+navigating to the file extensions option page (found in Tools -> Options
+-> Text editor -> File Extensions) and adding extensions "d" and "di"
+with editor "Microsoft Visual C++". This will also enable display of
+variables in the "Auto" watch window.
+
+4. You should also add the contents of the files autoexp.expand and
+autoexp.visualizer to the respective [AutoExpand] and [Visualizer]
+sections of the file autoexp.dat found in
+<Visual Studio Installation Path>\Common7\Packages\Debugger.
+Please note that in a standard installation of Visual Studio, the
+section [AutoExpand] is at the beginning of that file, followed by
+the section [Visualizer], which extends to the bottom of the file but a few lines
+for the section [hresult].
+These lines will enable a convenient display of strings, dynamic arrays,
+associative arrays, object types and null references.
+
+5. The file dviewhelper.dll must be copied into a directory where
+the debugger can find it. This can be any directory accessible through your
+PATH variable or <Visual Studio Installation Path>\Common7\IDE. Alternatively,
+the full path can be specified in the corresponding entries in the
+[AutoExpand] section of autoexp.dat.
+
+
+Building from source
+--------------------
+The source package comes with a Visual Studio 2008 project and solution
+that work with both the Standard and the Express version. These won't
+work in VS2005, but creating VS2005 projects should be easy.
+
diff --git a/protocols/Tox/tools/LICENSE b/protocols/Tox/tools/LICENSE
new file mode 100644
index 0000000000..32efefcf63
--- /dev/null
+++ b/protocols/Tox/tools/LICENSE
@@ -0,0 +1,201 @@
+ The Artistic License 2.0
+
+ Copyright (c) 2000-2006, The Perl Foundation.
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+Preamble
+
+This license establishes the terms under which a given free software
+Package may be copied, modified, distributed, and/or redistributed.
+The intent is that the Copyright Holder maintains some artistic
+control over the development of that Package while still keeping the
+Package available as open source and free software.
+
+You are always permitted to make arrangements wholly outside of this
+license directly with the Copyright Holder of a given Package. If the
+terms of this license do not permit the full use that you propose to
+make of the Package, you should contact the Copyright Holder and seek
+a different licensing arrangement.
+
+Definitions
+
+ "Copyright Holder" means the individual(s) or organization(s)
+ named in the copyright notice for the entire Package.
+
+ "Contributor" means any party that has contributed code or other
+ material to the Package, in accordance with the Copyright Holder's
+ procedures.
+
+ "You" and "your" means any person who would like to copy,
+ distribute, or modify the Package.
+
+ "Package" means the collection of files distributed by the
+ Copyright Holder, and derivatives of that collection and/or of
+ those files. A given Package may consist of either the Standard
+ Version, or a Modified Version.
+
+ "Distribute" means providing a copy of the Package or making it
+ accessible to anyone else, or in the case of a company or
+ organization, to others outside of your company or organization.
+
+ "Distributor Fee" means any fee that you charge for Distributing
+ this Package or providing support for this Package to another
+ party. It does not mean licensing fees.
+
+ "Standard Version" refers to the Package if it has not been
+ modified, or has been modified only in ways explicitly requested
+ by the Copyright Holder.
+
+ "Modified Version" means the Package, if it has been changed, and
+ such changes were not explicitly requested by the Copyright
+ Holder.
+
+ "Original License" means this Artistic License as Distributed with
+ the Standard Version of the Package, in its current version or as
+ it may be modified by The Perl Foundation in the future.
+
+ "Source" form means the source code, documentation source, and
+ configuration files for the Package.
+
+ "Compiled" form means the compiled bytecode, object code, binary,
+ or any other form resulting from mechanical transformation or
+ translation of the Source form.
+
+
+Permission for Use and Modification Without Distribution
+
+(1) You are permitted to use the Standard Version and create and use
+Modified Versions for any purpose without restriction, provided that
+you do not Distribute the Modified Version.
+
+
+Permissions for Redistribution of the Standard Version
+
+(2) You may Distribute verbatim copies of the Source form of the
+Standard Version of this Package in any medium without restriction,
+either gratis or for a Distributor Fee, provided that you duplicate
+all of the original copyright notices and associated disclaimers. At
+your discretion, such verbatim copies may or may not include a
+Compiled form of the Package.
+
+(3) You may apply any bug fixes, portability changes, and other
+modifications made available from the Copyright Holder. The resulting
+Package will still be considered the Standard Version, and as such
+will be subject to the Original License.
+
+
+Distribution of Modified Versions of the Package as Source
+
+(4) You may Distribute your Modified Version as Source (either gratis
+or for a Distributor Fee, and with or without a Compiled form of the
+Modified Version) provided that you clearly document how it differs
+from the Standard Version, including, but not limited to, documenting
+any non-standard features, executables, or modules, and provided that
+you do at least ONE of the following:
+
+ (a) make the Modified Version available to the Copyright Holder
+ of the Standard Version, under the Original License, so that the
+ Copyright Holder may include your modifications in the Standard
+ Version.
+
+ (b) ensure that installation of your Modified Version does not
+ prevent the user installing or running the Standard Version. In
+ addition, the Modified Version must bear a name that is different
+ from the name of the Standard Version.
+
+ (c) allow anyone who receives a copy of the Modified Version to
+ make the Source form of the Modified Version available to others
+ under
+
+ (i) the Original License or
+
+ (ii) a license that permits the licensee to freely copy,
+ modify and redistribute the Modified Version using the same
+ licensing terms that apply to the copy that the licensee
+ received, and requires that the Source form of the Modified
+ Version, and of any works derived from it, be made freely
+ available in that license fees are prohibited but Distributor
+ Fees are allowed.
+
+
+Distribution of Compiled Forms of the Standard Version
+or Modified Versions without the Source
+
+(5) You may Distribute Compiled forms of the Standard Version without
+the Source, provided that you include complete instructions on how to
+get the Source of the Standard Version. Such instructions must be
+valid at the time of your distribution. If these instructions, at any
+time while you are carrying out such distribution, become invalid, you
+must provide new instructions on demand or cease further distribution.
+If you provide valid instructions or cease distribution within thirty
+days after you become aware that the instructions are invalid, then
+you do not forfeit any of your rights under this license.
+
+(6) You may Distribute a Modified Version in Compiled form without
+the Source, provided that you comply with Section 4 with respect to
+the Source of the Modified Version.
+
+
+Aggregating or Linking the Package
+
+(7) You may aggregate the Package (either the Standard Version or
+Modified Version) with other packages and Distribute the resulting
+aggregation provided that you do not charge a licensing fee for the
+Package. Distributor Fees are permitted, and licensing fees for other
+components in the aggregation are permitted. The terms of this license
+apply to the use and Distribution of the Standard or Modified Versions
+as included in the aggregation.
+
+(8) You are permitted to link Modified and Standard Versions with
+other works, to embed the Package in a larger work of your own, or to
+build stand-alone binary or bytecode versions of applications that
+include the Package, and Distribute the result without restriction,
+provided the result does not expose a direct interface to the Package.
+
+
+Items That are Not Considered Part of a Modified Version
+
+(9) Works (including, but not limited to, modules and scripts) that
+merely extend or make use of the Package, do not, by themselves, cause
+the Package to be a Modified Version. In addition, such works are not
+considered parts of the Package itself, and are not subject to the
+terms of this license.
+
+
+General Provisions
+
+(10) Any use, modification, and distribution of the Standard or
+Modified Versions is governed by this Artistic License. By using,
+modifying or distributing the Package, you accept this license. Do not
+use, modify, or distribute the Package, if you do not accept this
+license.
+
+(11) If your Modified Version has been derived from a Modified
+Version made by someone other than you, you are nevertheless required
+to ensure that your Modified Version complies with the requirements of
+this license.
+
+(12) This license does not grant you the right to use any trademark,
+service mark, tradename, or logo of the Copyright Holder.
+
+(13) This license includes the non-exclusive, worldwide,
+free-of-charge patent license to make, have made, use, offer to sell,
+sell, import and otherwise transfer the Package with respect to any
+patent claims licensable by the Copyright Holder that are necessarily
+infringed by the Package. If you institute patent litigation
+(including a cross-claim or counterclaim) against any party alleging
+that the Package constitutes direct or contributory patent
+infringement, then this Artistic License to you shall terminate on the
+date that such litigation is filed.
+
+(14) Disclaimer of Warranty:
+THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
+IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL
+LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/protocols/Tox/tools/cv2pdb_readme.txt b/protocols/Tox/tools/README
index 141f7dcd8b..25fe632c74 100644
--- a/protocols/Tox/tools/cv2pdb_readme.txt
+++ b/protocols/Tox/tools/README
@@ -1,139 +1,139 @@
-
-This is the README file for cv2pdb, a
-converter of DMD CodeView/DWARF debug information to PDB files
-
-Copyright (c) 2009-2010 by Rainer Schuetze, All Rights Reserved
-
-The goal of this project is to make debugging of D applications that
-were created with the Digital Mars DMD compiler, as seamless as possible
-in current versions of Visual Studio (i.e Visual Studio 2008 and
-VCExpress).
-As a side effect, other applications might also benefit from the
-converted debug information, like WinDbg or DMC.
-
-Features
---------
-* conversion of DMD CodeView information to PDB file
-* conversion of DWARF information to PDB file
-* converted line number info allows setting breakpoints
-* display of variables, fields and objects in watch, local and auto window and in data tooltips
-* generates generic debug info for dynamic arrays, associative arrays and delegates
-* autoexp.dat allows convenient display of dynamic and associative arrays in watch windows
-* demangles function names for convenient display of callstack
-* also works debugging executables built with the Digital Mars C/C++ compiler DMC
-
-License information
--------------------
-
-This code is distributed under the term of the Artistic License 2.0.
-For more details, see the full text of the license in the file LICENSE.
-
-The file demangle.cpp is an adaption of denangle.d to C++ distributed with
-the DMD compiler. It is placed into the Public Domain.
-
-The file mscvpdb.h is taken from the WINE-project (http://www.winehq.org)
-and is distributed 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.
-See the file header for more details and
-http://www.gnu.org/licenses/lgpl.html for the full license.
-
-The file dwarf.h is taken from the libdwarf project
-(http://reality.sgiweb.org/davea/dwarf.html)
-and is distributed 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.
-See the file header for more details and
-http://www.gnu.org/licenses/lgpl.html for the full license.
-
-Installation
-------------
-Sorry, there is no full featured installer available yet, you'll have
-to do some simple manual steps to use cv2pdb.
-
-See the file INSTALL for further details.
-
-Usage
------
-
-Quick start:
-
-Simply run
-
- cv2pdb debuggee.exe
-
-on your executable to debug and start the debugger, e.g.
-
- devenv debuggee.exe
-or
- vcexpress debuggee.exe
-
-Description:
-
-cv2pdb.exe is a command line tool which outputs its usage information
-if run without arguments:
-
- usage: cv2pdb [-Dversion|-C] <exe-file> [new-exe-file] [pdb-file]
-
-With the -D option, you can specify the version of the DMD compiler
-you are using. Unfortunately, this information is not embedded into
-the debug information. The default is -D2. So far, this information
-is only needed to determine whether "char[]" or "const char[]" is
-translated to "string".
-
-Starting with DMD 2.043, assoiciative arrays have a slightly different
-implementation, so debug information needs to be adjusted aswell.
-Use -D 2.043 or higher to produce the matching debug info.
-
-Option -C tells the program, that you want to debug a program compiled
-with DMC, the Digital Mars C/C++ compiler. It will disable some of the
-D specific functions and will enable adjustment of stack variable names.
-
-The first file name on the command line is expected to be the executable
-or dynamic library compiled by the DMD compiler and containing the
-CodeView debug information (-g option used when running dmd).
-
-If no further file name is given, a PDB file will be created with the
-same base name as the executable, but with extension "pdb", and the
-executable will be modified to redirect debuggers to this pdb-file instead
-of the original debug information.
-
-Example:
- cv2pdb debuggee.exe
-
-In an environment using make-like tools, it is often useful to create
-a new file instead of modifying existing files. That way the file
-modification time can be used to continue the build process at the
-correct step.
-If another file name is specified, the new executable is written
-to this file and leaves the input executable unmodified.. The naming
-of the pdb-file will use the base name of the output file.
-
-Example:
- cv2pdb debuggee.exe debuggee_pdb.exe
-
-Last but not least, the resulting pdb-file can be renamed by specifying
-a third file name.
-
-Example:
- cv2pdb debuggee.exe debuggee_pdb.exe debug.pdb
-
-
-
-Changes
--------
-
-For documentation on the changes between this version and
-previous versions, please see the file CHANGES.
-
-Feedback
---------
-The project home for cv2pdb is here:
-
- http://www.dsource.org/projects/cv2pdb
- https://github.com/rainers/cv2pdb
-
-There's also a forum, where you can leave your comments and suggestions.
-
-Have fun,
-Rainer Schuetze
+
+This is the README file for cv2pdb, a
+converter of DMD CodeView/DWARF debug information to PDB files
+
+Copyright (c) 2009-2010 by Rainer Schuetze, All Rights Reserved
+
+The goal of this project is to make debugging of D applications that
+were created with the Digital Mars DMD compiler, as seamless as possible
+in current versions of Visual Studio (i.e Visual Studio 2008 and
+VCExpress).
+As a side effect, other applications might also benefit from the
+converted debug information, like WinDbg or DMC.
+
+Features
+--------
+* conversion of DMD CodeView information to PDB file
+* conversion of DWARF information to PDB file
+* converted line number info allows setting breakpoints
+* display of variables, fields and objects in watch, local and auto window and in data tooltips
+* generates generic debug info for dynamic arrays, associative arrays and delegates
+* autoexp.dat allows convenient display of dynamic and associative arrays in watch windows
+* demangles function names for convenient display of callstack
+* also works debugging executables built with the Digital Mars C/C++ compiler DMC
+
+License information
+-------------------
+
+This code is distributed under the term of the Artistic License 2.0.
+For more details, see the full text of the license in the file LICENSE.
+
+The file demangle.cpp is an adaption of denangle.d to C++ distributed with
+the DMD compiler. It is placed into the Public Domain.
+
+The file mscvpdb.h is taken from the WINE-project (http://www.winehq.org)
+and is distributed 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.
+See the file header for more details and
+http://www.gnu.org/licenses/lgpl.html for the full license.
+
+The file dwarf.h is taken from the libdwarf project
+(http://reality.sgiweb.org/davea/dwarf.html)
+and is distributed 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.
+See the file header for more details and
+http://www.gnu.org/licenses/lgpl.html for the full license.
+
+Installation
+------------
+Sorry, there is no full featured installer available yet, you'll have
+to do some simple manual steps to use cv2pdb.
+
+See the file INSTALL for further details.
+
+Usage
+-----
+
+Quick start:
+
+Simply run
+
+ cv2pdb debuggee.exe
+
+on your executable to debug and start the debugger, e.g.
+
+ devenv debuggee.exe
+or
+ vcexpress debuggee.exe
+
+Description:
+
+cv2pdb.exe is a command line tool which outputs its usage information
+if run without arguments:
+
+ usage: cv2pdb [-Dversion|-C] <exe-file> [new-exe-file] [pdb-file]
+
+With the -D option, you can specify the version of the DMD compiler
+you are using. Unfortunately, this information is not embedded into
+the debug information. The default is -D2. So far, this information
+is only needed to determine whether "char[]" or "const char[]" is
+translated to "string".
+
+Starting with DMD 2.043, assoiciative arrays have a slightly different
+implementation, so debug information needs to be adjusted aswell.
+Use -D 2.043 or higher to produce the matching debug info.
+
+Option -C tells the program, that you want to debug a program compiled
+with DMC, the Digital Mars C/C++ compiler. It will disable some of the
+D specific functions and will enable adjustment of stack variable names.
+
+The first file name on the command line is expected to be the executable
+or dynamic library compiled by the DMD compiler and containing the
+CodeView debug information (-g option used when running dmd).
+
+If no further file name is given, a PDB file will be created with the
+same base name as the executable, but with extension "pdb", and the
+executable will be modified to redirect debuggers to this pdb-file instead
+of the original debug information.
+
+Example:
+ cv2pdb debuggee.exe
+
+In an environment using make-like tools, it is often useful to create
+a new file instead of modifying existing files. That way the file
+modification time can be used to continue the build process at the
+correct step.
+If another file name is specified, the new executable is written
+to this file and leaves the input executable unmodified.. The naming
+of the pdb-file will use the base name of the output file.
+
+Example:
+ cv2pdb debuggee.exe debuggee_pdb.exe
+
+Last but not least, the resulting pdb-file can be renamed by specifying
+a third file name.
+
+Example:
+ cv2pdb debuggee.exe debuggee_pdb.exe debug.pdb
+
+
+
+Changes
+-------
+
+For documentation on the changes between this version and
+previous versions, please see the file CHANGES.
+
+Feedback
+--------
+The project home for cv2pdb is here:
+
+ http://www.dsource.org/projects/cv2pdb
+ https://github.com/rainers/cv2pdb
+
+There's also a forum, where you can leave your comments and suggestions.
+
+Have fun,
+Rainer Schuetze
diff --git a/protocols/Tox/tools/TODO b/protocols/Tox/tools/TODO
new file mode 100644
index 0000000000..7cc2fff3c0
--- /dev/null
+++ b/protocols/Tox/tools/TODO
@@ -0,0 +1,28 @@
+
+This is the TODO file for cv2pdb, a
+converter of DMD CodeView/DWARF debug information to PDB files
+
+Copyright (c) 2009-2010 by Rainer Schuetze, All Rights Reserved
+
+There are some quirks that you might run into when using
+Visual Studio to debug D programs. These will hopefully be removed
+in the future, but not all have a known solution.
+
+* has to use '@' instead of '.' in class names to avoid confusing debugger,
+ but it looks ugly
+* "this.var" is not a valid debugger expression, you have to use
+ "var" or "this->var"
+* global/static vars have to be watched with full module and class name
+ specified (e.g. module@globvar)
+* type of associative arrays is displayed as aa<*> to allow overload
+ in autoexp.dat
+* DMD does not emit different debug information for const and invariant,
+ type info is the same
+* DMD does not emit different debug information for float and ifloat,
+ type info is the same
+* type display of delegate does not have arguments
+* assoc_array.length cannot be displayed (it is assoc_array.a->nodes)
+* enum values not displayed
+* watch incorrect if same variable name used in different parts of a function
+* line number in templates sometimes off by 1 or 2
+* call to other function jumps to called function while pushing default arguments
diff --git a/protocols/Tox/tools/VERSION b/protocols/Tox/tools/VERSION
new file mode 100644
index 0000000000..2b70a49ad0
--- /dev/null
+++ b/protocols/Tox/tools/VERSION
@@ -0,0 +1 @@
+VERSION = 0.42
diff --git a/protocols/Tox/tools/cv2pdb.exe b/protocols/Tox/tools/cv2pdb.exe
index 53292a98d3..f65cd291bc 100644
--- a/protocols/Tox/tools/cv2pdb.exe
+++ b/protocols/Tox/tools/cv2pdb.exe
Binary files differ