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