summaryrefslogtreecommitdiffstats
path: root/CHANGES
blob: 28400582e5a09d6aa4b4f5a89bb6e8f17880b9b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330

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

2017-11-30 Version 0.43

  * DWARF: fix crash with AUX data in symbol table
  * improve reallocation strategy

2018-03-30 Version 0.44

  * DWARF: improvements for ADA: better enumerator types, improved lexical scope (thanks to @pmderodat)
  * if no debug information found in executable, now looks for epononymous DBG file 
    to load CV from (thanks to @AlexWhiter)

2019-01-25 Version 0.45

  * support converting DBG file to PDB
  * fiexd alignment of debug section.
  * DWARF: add support for local variables with location list via DW_FORM_sec_offset
  * fixed some minor DWARF issues/crashes
  * detect Visual Studio through COM API
  * set architecture of .pdb for a 64 bit .dbg
  * always convert S_BPREL_V1 to S_BPREL_V3 (no longer supported by mspdb 14.16.27012/VS 15.9)
  * emit "elemtype[keytype]" instead of "dAssocArray"
  * DWARF: fixed converting unnamed structs/unions as part of other structs

2019-09-03 Version 0.46

  * DWARF: fix writing info for aggregates larger than 32kB

2019-11-02 Version 0.47

  * add support for char16_t and char32_t (emitted by dmd 2.089+ for dchar)
  * fix loading 64-bit mspdb140.dll in VS2019

2020-03-26 Version 0.48

  * DWARF: add support for data symbols imported from DLL

2021-10-30 Version 0.49

  * Added rudimentary support for DWARF5. Thanks to dscho.

  * also search mspdb* DLL via vswhere.exe. Thanks to dscho.

2021-12-13 Version 0.50

  * Added support for DWARF5. Thanks to neerajsi-msft.

2022-03-27 Version 0.51

  * fix handling of UNC paths. Thanks to sonyps5201314.
  * DWARF: added support for non-contiguous functions. Thanks to marc-groundctl
  * Fixed stalling if vswhere doesn't produce any output

2022-05-28 Version 0.52

  * support DW_FORM_data1 and DW_FORM_data2 in DW_LNCT_directory_index
  * fix emitting bad debug info if struct description exceeds 64 kB, clipped for now

2023-06-10 Version 0.53

  * DWARF: fully-qualified name generation for procs, structs, enums and classes.
    Thanks to alexbudfb