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