2003-12-08 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / Mono.CSharp.Debugger / ChangeLog
1 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
2
3         * MonoSymbolWriter.cs: Create ArrayLists only when needed.
4
5 2003-12-07 Ben Maurer  <bmaurer@users.sourceforge.net>
6
7         * MonoSymbolTable.cs: It is faster to do a linear search
8         than it is to make a hashtable. Even though the linear
9         search is O(n^2) while the hashtable is O(n), the allocation
10         cost for a hashtable is *very* high, especially when only
11         a few members will be added.
12
13 2003-09-06  Martin Baulig  <martin@ximian.com>
14
15         * MonoSymbolFile.cs: Removed debugging output.
16
17 2003-08-05  Martin Baulig  <martin@ximian.com>
18
19         * MonoSymbolTable.cs (MethodEntry.Index): New public field.
20
21 2003-06-27  Zoltan Varga  <vargaz@freemail.hu>
22
23         * MonoSymbolWriter.cs: Enable calling of DefineDocument multiple
24         times with the same URL.
25
26 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
27
28         * MonoSymbolFile.cs: Fix off-by-one error.
29
30 2003-03-22  Martin Baulig  <martin@ximian.com>
31
32         * MonoSymbolTable.cs (MethodEntry.LocalNamesAmbiguous): New public
33         field.  Specifies whether two local variables have the same name.
34
35 2003-03-13  Martin Baulig  <martin@ximian.com>
36
37         Added basic support for lexical scopes.  This is just to tell a
38         debugger that a local variable is only available in a specific
39         lexical scope and that another variable of the same name may exist
40         in another lexical scope.  See debugger/test/TestLexicalScope.cs
41         for examples.
42
43         * MonoSymbolTable.cs (LexicalScopeEntry): New class.
44         (LocalVariableEntry): Added `BlockIndex' field which specifies the
45         lexical scope of this variable.
46
47         * MonoSymbolWriter.cs (SourceBlock): Removed, we're now using
48         LexicalScopeEntry instead.
49
50 2003-02-22  Martin Baulig  <martin@ximian.com>
51
52         * MonoSymbolTable.cs: Incremented version number.
53
54 2003-02-22  Martin Baulig  <martin@ximian.com>
55
56         * MonoSymbolFile.cs (MonoSymbolFile.FindMethod): Fixed a bug.
57         (MonoSymbolFile.MethodLookup): New method.
58
59 2003-02-18  Martin Baulig  <martin@ximian.com>
60
61         * MonoSymbolFile.cs (MonoSymbolFile.GetMethod): Added overloaded
62         version which takes a MethodBase.
63
64 2003-02-18  Martin Baulig  <martin@ximian.com>
65
66         * MonoSymbolTable.cs (MethodIndexEntry): New public struct.
67
68         * MonoSymbolFile.cs (MonoSymbolFile.GetMethodByToken): New method.
69
70 2003-02-18  Martin Baulig  <martin@ximian.com>
71
72         * MonoSymbolFile.cs (MonoSymbolFile.Assembly): New public property.
73
74         * MonoSymbolTable.cs (MethodEntry.MethodBase): New public property.
75         (MethodEntry.LocalTypes): New public variable.
76
77 2003-02-18  Martin Baulig  <martin@ximian.com>
78
79         * MonoSymbolFile.cs (MethodEntry.ThisTypeIndex): Renamed to
80         ClassTypeIndex; provide this for all methods so we can get the
81         class of static methods.
82
83 2003-02-10  Nick Drochak  <ndrochak@gol.com>
84
85         * Mono.CSharp.Debugger.build: passing the /r using an 'arg' node works.
86         The <include> node wasn't getting to the compiler. This fixes build
87         breakage on cygwin.
88
89         * MonoSymbolFile.cs: Qualify which Min method. Fixes build breakage
90         on cygwin.
91
92 2003-02-09  Martin Baulig  <martin@ximian.com>
93
94         * MonoSymbolWriter.cs (MonoSymbolWriter.ctor): We don't need the
95         `mbuilder_array' anymore.
96
97 2003-02-09  Martin Baulig  <martin@ximian.com>
98
99         * MonoSymbolWriter.cs (SourceFile): Derive from SourceFileEntry.
100         (SourceBlock): We don't need source lines here.
101         (SourceMethod): We're always constructed with source info.
102
103         * MonoSymbolTable.cs: Added support for namespaces.
104         (NamespaceEntry): New struct.
105         (SourceFileEntry.DefineNamespace): New method.
106         (MethodEntry.BuildLineNumberTable): The table is already sorted,
107         so we don't need to do this here.
108
109 2003-02-09  Martin Baulig  <martin@ximian.com>
110
111         * IMonoSymbolWriter.cs: Ooops, I forgot to remove this.
112
113 2003-02-08  Martin Baulig  <martin@ximian.com>
114
115         * MonoSymbolDocumentWriter.cs: Removed.
116
117         * MonoSymbolWriter.cs (SourceFile): Implement ISymbolDocumentWriter.
118
119 2003-02-08  Martin Baulig  <martin@ximian.com>
120
121         * MonoSymbolFile.cs (GetMethodSource): New public method.
122         (FindMethod): Return the correct index.
123
124 2003-02-07  Martin Baulig  <martin@ximian.com>
125
126         * MonoSymbolFile.cs (Methods, Sources): New public properties.
127
128 2003-02-07  Martin Baulig  <martin@ximian.com>
129
130         * MonoSymbolFile.cs (MonoSymbolFile.ReadSymbolFile): New public
131         static method, returns null (without throwing an exception) if the
132         assembly doesn't have any debugging info.
133
134 2003-02-07  Martin Baulig  <martin@ximian.com>
135
136         * MonoSymbolWriter.cs (MonoSymbolWriter.Initialize): Removed the
137         custom initialization function.
138
139         * MonoSymbolTableWriter.cs: Removed; the code is now in
140         MonoSymbolFile.cs and MonoSymbolWriter.cs.
141
142 2003-02-07  Martin Baulig  <martin@ximian.com>
143
144         * MonoSymbolFile.cs: The symbol file is now a resource in the
145         assembly instead of a separate file.
146
147         * MonoSymbolTable.cs: Did a few more cleanups, sort the line
148         number table and remove duplicate line numbers.
149
150 2003-02-05  Martin Baulig  <martin@ximian.com>
151
152         Modified the symbol file format to speed up method looks by name
153         and cleaned this up a lot.
154
155         * MonoSymbolFile.cs: New public class.  This is now a public class
156         and writes and reads the symbol file.
157
158         * IMonoBinaryReader.cs: Removed.
159
160         * MonoSymbolTable.cs: Set version number to 29.
161
162 2003-01-17  Zoltan Varga  <vargaz@freemail.hu>
163
164         * MonoSymbolWriter.cs (OpenMethod): Make it work on constructors.
165
166 2002-10-13  Martin Baulig  <martin@gnome.org>
167
168         * MonoSymbolTable.cs: Set version number to 28.
169         (SourceFileEntry): Read the methods when they're needed.
170         (MethodSourceEntry): Made this a struct, not a class.
171
172 2002-10-13  Martin Baulig  <martin@gnome.org>
173
174         * MonoSymbolTable.cs: Set version number to 27.  Added a source
175         file table which is used to search a method by source file + line number.
176
177 2002-09-21  Martin Baulig  <martin@gnome.org>
178
179         * MonoSymbolTable.cs: Set version number to 26.  Removed all the dynamic
180         stuff, this library now just deals with the compiler generated symbol table.
181         The dynamic stuff is private between the JIT and the debugger.
182
183 2002-09-21  Martin Baulig  <martin@gnome.org>
184
185         * MonoSymbolTable.cs: Set version number to 25.  Added information about
186         local variables.
187
188 2002-09-20  Martin Baulig  <martin@gnome.org>
189
190         * MonoSymbolTable.cs: Set version number to 24.  Added a type index
191         table.  Write the type of a local variable or a parameter as an index
192         into this table.
193
194 2002-09-20  Martin Baulig  <martin@gnome.org>
195
196         * IMonoSymbolWriter.cs: Remove all the unused interfaces.
197
198 2002-09-20  Martin Baulig  <martin@gnome.org>
199
200         * MonoSymbolTable.cs: Set version number to 23, include the size
201         of a variable.
202
203 2002-09-20  Martin Baulig  <martin@gnome.org>
204
205         * MonoSymbolTable.cs: Set version number to 22.  Provide information
206         about parameters and local variables.
207
208 2002-09-20  Martin Baulig  <martin@gnome.org>
209
210         * IMonoSymbolWriter.cs: Use fullly qualified name for
211         System.Diagnostics.SymbolStore.ISymbolWriter rather than `using' this
212         namespace.  This allows us to use the name `ISymbolWriter' in our own
213         code.
214
215 2002-09-18  Martin Baulig  <martin@gnome.org>
216
217         * MonoSymbolTable.cs: Set version number to 21.  Encode the source file
218         as a 4-byte length field followed by the UTF8 encoded string.
219
220 2002-09-18  Martin Baulig  <martin@gnome.org>
221
222         * IMonoBinaryReader.cs: New interface.
223
224         * MonoSymbolTable.cs: Use IMonoBinaryReader instead of binary reader.
225
226 2002-09-16  Martin Baulig  <martin@gnome.org>
227
228         * MonoSymbolTable.cs: Set version number to 20.
229
230 2002-09-14  Martin Baulig  <martin@gnome.org>
231
232         * MonoSymbolWriter.cs, IMonoSymbolWriter.cs, MonoSymbolTableWriter.cs:
233         Make all classes and interfaces which don't need to be public internal.
234
235 2002-09-14  Martin Baulig  <martin@gnome.org>
236
237         * MonoSymbolTable.cs: Use only CLS-compliant types here, bumped version
238         number to 19.
239
240         * MonoSymbolTableReader.cs: Removed, this is now in the debugger.
241
242 2002-09-03  Martin Baulig  <martin@gnome.org>
243
244         * AssemblerWriterI386.cs, IAssemblerWriter.cs, MonoDwarfFileWriter.cs,
245         README, README.relocation-table, csharp-lang.[ch], gdb-csharp-support.patch,
246         gdb-variable-scopes.patch: Removed.
247
248 2002-09-03  Martin Baulig  <martin@gnome.org>
249
250         * MonoSymbolTableReader.cs (MonoSymbolTableReader.ImageFile): New
251         public property.
252
253         * MonoSymbolTable.cs: Bumped version number to 18.
254
255 2002-08-27  Martin Baulig  <martin@gnome.org>
256
257         * MonoSymbolTable.cs (MethodAddress): Removed `TrampolineAddress'.
258
259 2002-08-27  Martin Baulig  <martin@gnome.org>
260
261         * MonoSymbolTable.cs: Changed the file format in a way that allows us
262         open it read-only and to use a specially malloced area for all the
263         dynamic data.   
264
265 2002-08-25  Martin Baulig  <martin@gnome.org>
266
267         * MonoSymbolTableReader.cs: New file.  This is the reader for the
268         new symbol file format.
269
270 2002-08-24  Martin Baulig  <martin@gnome.org>
271
272         * MonoSymbolTable.cs, MonoSymbolTableWriter.cs: New files.  This
273         creates a binary application.dbg file which will be used by the
274         JIT to display source lines for exceptions.
275
276         * list.unix: Disabled the dwarf file writer in the build.
277
278 2002-08-23  Martin Baulig  <martin@gnome.org>
279
280         * MonoSymbolWriter.cs (MonoSymbolWriter.Initialize): Added
281         assembly name argument.  Since the symbol writer needs to read the
282         final assembly, we need to give it its full pathname.
283
284 2002-08-23  Martin Baulig  <martin@gnome.org>
285
286         * makefile.gnu, list.unix: Added.
287
288 2002-07-05  Martin Baulig  <martin@gnome.org>
289
290         * MonoDwarfFileWriter.cs: Added support for types in referenced assemblies.
291
292 2002-07-05  Martin Baulig  <martin@gnome.org>
293
294         * MonoDwarfFileWriter.cs: Added support for arrays.
295
296         * gdb-csharp-support.patch: Updated.
297
298 2002-06-29  Martin Baulig  <martin@gnome.org>
299
300         * MonoDwarfFileWriter.cs (DieInheritance): Make this actually work.
301
302 2002-06-29  Martin Baulig  <martin@gnome.org>
303
304         * MonoDwarfFileWriter.cs, MonoSymbolWriter.cs: Put all TAG_subprogram's into their
305         corresponding struct/class declarations.
306
307 2002-06-28  Martin Baulig  <martin@gnome.org>
308
309         * gdb-csharp-support.patch: Updated.
310
311 2002-06-28  Martin Baulig  <martin@gnome.org>
312
313         * MonoDwarfFileWriter.cs: Use a TAG_string_type when we're using GNU extensions.
314         Make static struct/class fields actually work.  Provide a TAG_typedef for struct's
315         and classes.
316
317 2002-05-30  Martin Baulig  <martin@gnome.org>
318
319         * IMonoSymbolWriter (IMonoSymbolWriter): Added custom `Initialize' method.
320
321         * MonoSymbolWriter.cs (Initialize): The ISymbolWriter's `Initialize' method
322         is no longer supported and throws an exception.
323         (Initialize (string, string[])): New custom initialization function.
324
325         * MonoDwarfFileWriter.cs (DwarfFileWriter): Added `string[] args' argument
326         to the constructor to pass command line arguments.
327
328         * gdb-csharp-support.patch: Updated for GDB 5.2.
329
330 2002-05-30  Martin Baulig  <martin@gnome.org>
331
332         * MonoSymbolWriter.cs (MonoSymbolWriter): The constructor now get's the
333         AssemblyBuilder's `methods' array as third argument.
334         (OpenMethod): Use this array to get the method builder rather than using an
335         interncall for it.
336         (get_method_builder): Removed this interncall.
337
338 2002-05-25  Martin Baulig  <martin@gnome.org>
339
340         * MonoDwarfFileWriter.cs: Finished the type rewrite, put back strings and arrays.
341
342 2002-05-24  Martin Baulig  <martin@gnome.org>
343
344         * IMonoSymbolWriter.cs (ISourceMethod): Added `FullName' and `Parameters'.
345         (ITypeHandle): New interface.
346
347         * DwarfFileWriter.cs: Largely reorganized the type writing code.  Types are
348         now represented by ITypeHandle objects which are stored in a per-dwarf-writer
349         hash table.  At the moment, all types still need to be in one compile unit due
350         to lacking support in gdb - but this new type code here already supports this.
351
352         * MonoSymbolWriter.cs: Moved all the subclasses to the top-level and made them
353         public, cleaned up the code, put everything into one compile unit.
354         (DefineLocalVariable): Added a version of this function which takes useful args.
355
356 2002-05-22  Martin Baulig  <martin@gnome.org>
357
358         * IMonoSymbolWriter.cs (IMonoSymbolWriter): Added `Sources' and `Methods'
359         properties.
360
361         * MonoDwarfFileWriter.cs (WriteSymbolTable): New public method.  Moved the
362         code that writes the "mono_line_numbers" section here from the LineNumberEngine.
363
364 2002-05-22  Martin Baulig  <martin@gnome.org>
365
366         * IMonoSymbolWriter.cs (IVariable): Replaced Token with `ISourceMethod Method'.
367
368         * MonoSymbolWriter.cs (MonoSymbolWriter): The constructor now has an additional
369         ModuleBuilder argument.
370         (OpenMethod): Immediately call the `get_method' interncall to get the MethodBase
371         from the token, then store the MethodBase instead of the token.  The token may
372         still change during the metadata library's fixup process.
373         (DoFixups): When the image has been written to disk, call the GetToken () method
374         on all MethodBuilders and all ConstructorBuilders to get the final metadata tokens.
375
376 2002-05-22  Martin Baulig  <martin@gnome.org>
377
378         * AssemblerWriterI386.cs: Don't use GNU extensions and produce assembler
379         output which is free of comments and extra whitespaces so that it's suitable
380         for `as -f'.
381
382 2002-05-22  Martin Baulig  <martin@gnome.org>
383
384         * IMonoSymbolWriter.cs (ISourceMethod): Replaced `MethodInfo MethodInfo' with
385         `MethodBase MethodBase' and added `Type ReturnType'.  We're now correctly
386         dealing with constructors and not crashing anymore.
387
388 2002-05-21  Martin Baulig  <martin@gnome.org>
389
390         * MonoDwarfFileWriter.cs: Write a special line number table which can be read
391         in by the metadata library to get line number information in backtraces.
392
393 2002-05-06  Martin Baulig  <martin@gnome.org>
394
395         * MonoSymbolWriter.cs (MonoSymbolWriter.Close): Use Assembly.LoadFrom (), not
396         AppDomain.Load () to load the assembly.
397
398 2002-04-26  Martin Baulig  <martin@gnome.org>
399
400         * gdb-csharp-support.patch: A patch for GDB (against the latest CVS version)
401         to implement C# support.
402
403         * csharp-lang.c, csharp-lang.h, csharp-mono-lang.c: Copy these into your GDB
404         source directory after applying the patch.
405
406 2002-04-26  Martin Baulig  <martin@gnome.org>
407
408         * MonoDwarfFileWriter.cs (DieInternalString): Removed.
409
410 2002-04-25  Martin Baulig  <martin@gnome.org>
411
412         * MonoDwarfFileWriter.cs: Reflect latest MonoString changes.
413
414 2002-04-13  Martin Baulig  <martin@gnome.org>
415
416         * IMonoSymbolWriter.cs (ISourceBlock): Added `Blocks' property and `AddBlock'
417         method to support nested blocks.
418
419         * MonoSymbolWriter.cs: Correctly handle nested blocks.
420
421         * MonoDwarfFileWriter.cs (DieMember): Provide info for all fields, not just for
422         public ones; also added DW_AT_accessibility.
423         (DieVariable): Reflected latest debug-symfile.c changes.
424
425 2002-04-12  Martin Baulig  <martin@gnome.org>
426
427         * gdb-variable-scopes.patch: A patch for GDB (against the latest CVS version)
428         to implement variable lifetimes.
429
430 2002-04-12  Martin Baulig  <martin@gnome.org>
431
432         * MonoDwarfFileWriter.cs (DieVariable): Provide info about the variable's
433         lifetime using DW_AT_begin_scope and a new baulig extension DW_AT_end_scope.
434
435 2002-03-29  Martin Baulig  <martin@gnome.org>
436
437         * AssemblerWriterI386.cs: Rewrote most of the string output function, do the
438         number->string conversion manually. It's now taking about 15 seconds to write
439         a symbol file for MCS, no longer more than a minute.
440
441         * MonoDwarfFileWriter.cs: Added some profiling code, speeded things up, fixed
442         a few bugs.
443
444 2002-03-25  Martin Baulig  <martin@gnome.org>
445
446         * MonoDwarfFileWriter.cs (CreateType): Return a `DieType'.
447         (RegisterType): Add the type to the type hash before creating dependency types
448         so we don't get recursion loops.
449         (RegisterPointerType): New func to register a "pointer to type" type.
450         (DieTypeDef, DiePointerType, DieArrayType, DieStringType, DieClassType): New
451         types; added support for strings, arrays and basic support for classes.
452         
453 2002-03-24  Martin Baulig  <martin@gnome.org>
454
455         * IMonoSymbolWriter.cs: Killed all methods in this interface, no longer needed.
456
457         * MonoSymbolWriter.cs (MonoSymbolWriter): The constructor now takes a string
458         argument which is the full pathname of the assembly - you must call Close()
459         after the assembly has been written to disk since the symbol writer needs to
460         load the finished assembly to get its metadata.
461
462         * MonoDwarfFileWriter.cs: Added support for enums and structs.
463         
464 2002-03-24  Martin Baulig  <martin@gnome.org>
465
466         * MonoDwarfFileWriter.cs: Added support for method parameters.
467
468 2002-03-24  Martin Baulig  <martin@gnome.org>
469
470         * IMonoSymbolWriter.cs (IMonoSymbolWriter): Removed my custom OpenMethod(),
471         we're now using the ISymbolWriter's method.
472         (IVariable): Added `byte[] Signature' property.
473
474         * MonoSymbolWriter.cs (SetAssembly): New method. This must be called before
475         Close(); the assembly parameter is the already-written assembly, ie. it must
476         contain the full metadata.
477         (OpenMethod): Only take the token argument and set MethodInfo later in DoFixups.
478         (SetMethodSourceRange): You must call this function to tell the symbol writer
479         in which source file the method is defined.
480         (DefineLocal): Store the signature in the local.
481         (DoFixups): Use two new interncalls to set the SourceMethod's MethodInfo field
482         and the LocalVariable's Type field.
483
484 2002-03-23  Martin Baulig  <martin@gnome.org>
485
486         * IMonoSymbolWriter.cs (ISourceBlock): New interface.
487         (ILocalVariable): Renamed this interface to IVariable.
488         (IVariable): Added Line, Type, Token.
489         (ILocalVariable, IMethodParameter): New interfaces, derive from IVariable.
490         (ISourceMethod): Added Blocks. Renamed FirstLine and LastLine to Start and End,
491         changed their type to ISourceLine. Removed CodeSize.
492         (ISourceLine): Renamed Line to Row, added Column. Added OffsetType and Offset.
493
494         * MonoDwarfFileWriter.cs (MonoDwarfFileWriter.DieLexicalBlock): New class.
495         (MonoDwarfFileWriter.DieMethodVariable): New class.
496
497         * MonoSymbolWriter.cs (OpenScope, CloseScope): Implemented.
498         Reflected latest IMonoSymbolWriter interface changes.
499
500 2002-03-20  Martin Baulig  <martin@gnome.org>
501
502         * IAssemblerWriter.cs: New interface.
503
504         * AssemblerWriterI386.cs: New class.
505
506         * MonoDwarfFileWriter.cs: Use the IAssemblerWriter interface to make this class
507         platform and assembler independent.
508
509 2002-03-20  Martin Baulig  <martin@gnome.org>
510
511         * IMonoSymbolWriter.cs (ISourceMethod): Added FirstLine, LastLine, CodeSize and
512         Token properties.
513
514         * MonoDwarfFileWriter.cs: Implemented line number support.
515
516 2002-03-19  Martin Baulig  <martin@gnome.org>
517
518         * IMonoSymbolWriter.cs (ISourceFile, ISourceMethod, ISourceLine, ILocalVariable):
519         New interfaces.
520
521         * IMonoSymbolWriter.cs (OpenMethod): Take a System.Reflection.MethodInfo, not
522         a string.
523
524 2002-03-19  Martin Baulig  <martin@gnome.org>
525
526         This is an implementation of the System.Diagnostics.SymbolStore.SymbolWriter
527         interface. It's still work in progress and not yet used anywhere.
528
529         There is some preliminary documentation in the source files and some more
530         docu in the README and README.relocation-table files.
531
532         * IMonoSymbolWriter.cs: New file.
533         * MonoDwarfFileWriter.cs: New file.
534         * MonoSymbolDocumentWriter.cs: New file.
535         * MonoSymbolWriter.cs: New file.
536
537         * README, README.relocation-table: Documentation.
538