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