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