diff options
Diffstat (limited to 'protocols/Tox')
-rw-r--r-- | protocols/Tox/tools/CHANGES | 266 | ||||
-rw-r--r-- | protocols/Tox/tools/FEATURES | 33 | ||||
-rw-r--r-- | protocols/Tox/tools/INSTALL | 71 | ||||
-rw-r--r-- | protocols/Tox/tools/LICENSE | 201 | ||||
-rw-r--r-- | protocols/Tox/tools/README (renamed from protocols/Tox/tools/cv2pdb_readme.txt) | 278 | ||||
-rw-r--r-- | protocols/Tox/tools/TODO | 28 | ||||
-rw-r--r-- | protocols/Tox/tools/VERSION | 1 | ||||
-rw-r--r-- | protocols/Tox/tools/cv2pdb.exe | bin | 238080 -> 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 Binary files differindex 53292a98d3..f65cd291bc 100644 --- a/protocols/Tox/tools/cv2pdb.exe +++ b/protocols/Tox/tools/cv2pdb.exe |