2008-07-01 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mcs / class / Mono.CompilerServices.SymbolWriter / ChangeLog
1 2008-06-18  Martin Baulig  <martin@ximian.com>
2
3         * MonoSymbolTable.cs
4         (OffsetTable): Bump version to 50.0.
5
6 2008-06-18  Martin Baulig  <martin@ximian.com>
7
8         * MonoSymbolTable.cs
9         (OffsetTable.MinorVersion): Bump to 7.
10         (OffsetTable.Flags): New public enum.
11         (OffsetTable.FileFlags): New public property.
12         (OffsetTable.IsAspxSource): Removed.
13
14 2008-06-17  Martin Baulig  <martin@ximian.com>
15
16         * MonoSymbolTable.cs
17         (MethodEntry.Flags): Removed `IsCompilerGenerated'.
18
19 2008-06-16  Martin Baulig  <martin@ximian.com>
20
21         * MonoSymbolWriter.cs
22         (SourceMethodBuilder.SetCompilerGenerated): Removed; we now use
23         the `DebuggerHiddenAttribute'.
24
25 2008-06-11  Martin Baulig  <martin@ximian.com>
26
27         * SymbolWriterImpl.cs: Put this back and make it work with the
28         current symbol writer.
29
30 2008-06-11  Martin Baulig  <martin@ximian.com>
31
32         * MonoSymbolWriter.cs
33         (MonoSymbolWriter.OpenMethod): Maintain a method stack, so we can
34         now recursively call OpenMethod().
35
36 2008-06-11  Martin Baulig  <martin@ximian.com>
37
38         * MonoSymbolTable.cs
39         (SourceFileEntry.WriteData): Silently ignore non-existing files.
40
41 2008-06-11  Martin Baulig  <martin@ximian.com>
42
43         * MonoSymbolWriter.cs
44         (MonoSymbolWriter.SetRealMethodName): Removed, call it on the
45         `SourceMethodBuilder'.
46         (MonoSymbolWriter.SetCompilerGenerated): Likewise.
47
48 2008-06-11  Martin Baulig  <martin@ximian.com>
49
50         * MonoSymbolWriter.cs
51         (ISourceMethod): Renamed to `IMethodDef'.
52         (SourceMethodBuilder): New public class.
53         (MonoSymbolWriter.OpenMethod): Added `int ns_id' argument and
54         return a `SourceMethodBuilder'.
55
56 2008-06-10  Martin Baulig  <martin@ximian.com>
57
58         * MonoSymbolTable.cs
59         (OffsetTable.MinorVersion): Bump to 6.  There were no changes to
60         the file format, but we were generating incorrect source file
61         indices in the line number table due to a bug, which made
62         backtraces report an incorrect source file.
63
64 2008-06-10  Martin Baulig  <martin@ximian.com>
65
66         * MonoSymbolWriter.cs
67         (MonoSymbolWriter.MarkSequencePoint): Added overloaded version
68         taking a `SourceFileEntry' instead of a file index.
69
70 2008-06-10  Martin Baulig  <martin@ximian.com>
71
72         * MonoSymbolWriter.cs
73         (MonoSymbolWriter.CloseMethod): Quick-fix; still a lot of broken
74         code out there.
75
76 2008-06-05  Martin Baulig  <martin@ximian.com>
77
78         * MonoSymbolTable.cs
79         (MethodEntry.Flags): New public enum.
80         (MethodEntry.MethodFlags): New public fields.
81         (MethodEntry.LocalNamesAmbiguous): Removed; this is now part of
82         the `MethodFlags'.
83
84         * MonoSymbolWriter.cs
85         (MonoSymbolWriter.SetCompilerGenerated): New public method.
86
87 2008-06-02  Martin Baulig  <martin@ximian.com>
88
89         * MonoSymbolWriter.cs
90         (ICompileUnit): New public interface.
91         (MonoSymbolWriter.Sources): Removed.
92         (MonoSymbolWriter.OpenMethod): Take an `ICompileUnit', removed
93         `startRow', `startColumn', `endRow' and `endColumn'.
94         (MonoSymbolWriter.DefineCompilationUnit): New public method.
95         (MonoSymbolWriter.DefineNamespace): Operate on `ICompileUnit'.
96
97         * MonoSymbolFile.cs
98         (MonoSymbolFile.CompileUnit): New public properties.
99
100         * MonoSymbolTable.cs
101         (OffsetTable): Replace `Version' by `MajorVersion' and
102         `MinorVersion'.  Add `CompileUnitCount', `CompileUnitTableOffset'
103         and `CompileUnitTableSize'.
104         (CompileUnitEntry): New public method.
105         (LineNumberTable): Removed `StartFile' and `StartRow'.
106         (MethodEntry): Removed `StartRow' and `EndRow'.
107
108 2008-06-02  Martin Baulig  <martin@ximian.com>
109
110         * SymbolWriterImpl.cs: Removed.
111
112 2008-05-28  Martin Baulig  <martin@ximian.com>
113
114         * MonoSymbolTable.cs
115         (MethodIndexEntry): Removed.
116         (MethodEntry): Moved everything into the data section, so it can
117         be read dynamically on-the-fly.  The `MethodEntry' now has a fixed
118         size of 12 bytes in the symbol file containing only token, data
119         offset and line number table offset.
120
121 2008-05-28  Martin Baulig  <martin@ximian.com>
122
123         * MonoSymbolTable.cs
124         (MethodEntry.LocalTypeIndices): Removed.
125         (MethodEntry.GetLineNumberTable): New public method; replaces the
126         `LineNumbers' and `NumLineNumbers' fields.
127         (MethodEntry.GetLocals): New public method; replaces the `Locals'
128         and `NumLocals' fields.
129         (MethodEntry.GetCodeBlocks): New public method; replaces the
130         `CodeBlocks' and `NumCodeBlocks' fields.
131         (MethodEntry.GetScopeVariables): New public method; replaces the
132         `ScopeVariables' and `NumScopeVariables' fields.
133         (MethodEntry.GetRealName): New public method; replaces `RealName'.
134         (MethodEntry): Removed the old fields.
135
136 2008-05-28  Martin Baulig  <martin@ximian.com>
137
138         * MonoSymbolTable.cs
139         (MethodSourceEntry): Removed.
140         (SourceFileEntry.Methods): Removed.
141
142 2008-05-26  Martin Baulig  <martin@ximian.com>
143
144         * MonoSymbolWriter.cs
145         (MonoSymbolWriter.DefineDocument): Added overloaded version taking
146         additional `byte[] guid' and `byte[] hash' arguments.
147
148         * MonoSymbolFile.cs
149         (OffsetTable.IsAspxSource): New public field.
150         (SourceFileEntry): Completely redesigned this; only write index
151         and data offset, everything else goes into the data section.
152         (SourceFileEntry.AutoGenerated): New public property.
153         (SourceFileEntry.CheckChecksum): New public method.
154
155 2008-05-16  Martin Baulig  <martin@ximian.com>
156
157         * MonoSymbolTable.cs
158         (LineNumberEntry.IsHidden): New public field.
159         (LineNumberTable): Add support for hidden line numbers.
160
161         * MonoSymbolWriter.cs
162         (MonoSymbolWriter.MarkSequencePoint): Add overloaded version
163         taking an additional `bool is_hidden' argument.
164
165 2008-05-05  Martin Baulig  <martin@ximian.com>
166
167         * MonoSymbolFile.cs
168         (MonoSymbolFile.OffsetTable): New public property.
169         (MonoSymbolFile.FileName): New public readonly field.
170
171         * MonoSymbolTable.cs
172         (OffsetTable): Make this a class and not a struct.
173         (OffsetTable): Add `LineNumberTable_LineBase',
174         `LineNumberTable_LineRange' and `LineNumberTable_OpcodeBase'.
175         (LineNumberEntry): Removed the reading/writing functions.
176         (LineNumberTable): Get `LineBase', `LineRange' and `OpcodeBase'
177         from the `OffsetTable' rather than hardcoding it here.
178         (MethodEntry): Make `NumLineNumbers' and `LineNumbers' properties;
179         massive cleanup, use leb128 everywhere and removed all the
180         obsolete fields.
181
182 2008-04-29  Martin Baulig  <martin@ximian.com>
183
184         * MonoSymbolTable.cs
185         (OffsetTable.Version): Bump to 42.
186         (LineNumberTable): New public class.  Provides a new line number
187         table format which is based on Dwarf 2.
188         (MethodEntry): Replaced BuildLineNumberTable() by
189         CheckLineNumberTable(); we're now more strict than we were before
190         and disallow not monotonic increasing entries,  we don't check for
191         duplicates anymore since the new LineNumberTable takes care of that.
192         (LineEntry): Added public `File' field which is a file index.
193
194         * MonoSymbolWriter.cs
195         (MonoSymbolWriter.MarkSequencePoint): Added `int file' argument.
196
197 2008-04-29  Martin Baulig  <martin@ximian.com>
198
199         **** Kahalo changes start here ****
200
201 2008-05-05  Martin Baulig  <martin@ximian.com>
202
203         Drop support for old pre-terrania symbol files.
204
205         * MonoSymbolFile.cs
206         (MonoSymbolFile.CompatibilityMode): Removed.
207
208         * MonoSymbolTable.cs
209         (LexicalBlockEntry): Removed this obsolete class.
210
211 2008-04-02  Martin Baulig  <martin@ximian.com>
212
213         * *.cs: Remove the `#if !DISABLE_TERRANIA_CHANGES' conditionals.
214
215 2008-03-14  Martin Baulig  <martin@ximian.com>
216
217         Merged the debugger's `terrania' branch into trunk.
218
219 2008-03-13  Martin Baulig  <martin@ximian.com>
220
221         * *.cs: Add `DISABLE_TERRANIA_CHANGES' conditionals everywhere
222         around the new code; they'll be removed when I'm back from my
223         vacations.
224
225 2008-03-13  Martin Baulig  <martin@ximian.com>
226
227         * MonoSymbolTable.cs
228         (LexicalBlockEntry): Mark this as obsolete.
229
230 2008-03-11  Martin Baulig  <martin@ximian.com>
231
232         * MonoSymbolTable.cs (MethodEntry): Removed `LocalTypeIndices'.
233
234 2008-03-10  Martin Baulig  <martin@ximian.com>
235
236         * MonoSymbolTable.cs
237         (LocalVariableEntry): Removed the `Signature' field; we don't
238         write this into the symbol file anymore.
239
240         * MonoSymbolWriter.cs
241         (MonoSymbolWriter.DefineLocalVariable): The `byte[] signature'
242         argument is now obsolete.
243
244 2008-02-19  Martin Baulig  <martin@ximian.com>
245
246         * MonoSymbolFile.cs
247         (MonoSymbolFile.Version): New public readonly field.
248         (MonoSymbolFile.CompatibilityMode): Likewise; this is enabled if
249         we're reading an old `39' file.
250
251         * MonoSymbolTable.cs
252         (OffsetTable.CompatibilityVersion): New public const; we keep
253         backwards compatibility with this version.
254         (OffsetTable.Write): Add `version' argument; allow writing the old
255         file format.
256         (MethodEntry): Check `file.CompatiblityMode'.
257
258 2008-02-19  Martin Baulig  <martin@ximian.com>
259
260         * MonoSymbolWriter.cs
261         (MonoSymbolWriter.SetRealMethodName): New public method.
262
263         * MonoSymbolTable.cs
264         (MethodEntry.RealName): New public field; this is only used for
265         anonymous methods and iterators.
266
267 2008-02-15  Martin Baulig  <martin@ximian.com>
268
269         * MonoSymbolTable.cs
270         (CodeBlockEntry): New public class.
271         (MethodEntry): Replace the old lexical blocks with a new concept
272         of `code blocks'.  Keep backwards compatibility.
273
274         * MonoSymbolWriter.cs
275         (MonoSymbolWriter): Add OpenCompilerGeneratedBlock(),
276         CloseCompilerGeneratedBlock(), StartIteratorBody(),
277         EndIteratorBody(), StartIteratorDispatcher(),
278         EndIteratorDispatcher().        
279
280 2008-02-02  Martin Baulig  <martin@ximian.com>
281
282         * MonoSymbolTable.cs
283         (OffsetTable.Version): Bump to 40.
284         (OffsetTable): Add `AnonymousScopeCount',
285         `AnonymousScopeTableOffset' and `AnonymousScopeTableSize'.
286         (CapturedVariable): New public struct.
287         (CapturedScope): New public struct.
288         (ScopeVariable): New public struct.
289         (AnonymousScopeEntry): New public class.
290         (SourceFileEntry.DefineMethod): Added overloaded version taking an
291         additional `ScopeVariable[]' argument.
292
293         * MonoSymbolFile.cs
294         (MonoSymbolFile.AnonymousScopeCount): New public property.
295         (MonoSymbolFile.GetAnonymousScope): New public method.
296
297         * MonoSymbolWriter.cs
298         (MonoSymbolWriter.DefineAnonymousScope): New public method.
299         (MonoSymbolWriter.DefineCapturedLocal): New public method.
300         (MonoSymbolWriter.DefineCapturedParameter): New public method.
301         (MonoSymbolWriter.DefineCapturedThis): New public method.
302         (MonoSymbolWriter.DefineCapturedScope): New public method.
303         (MonoSymbolWriter.DefineScopeVariable): New public method.
304
305 2008-02-02  Martin Baulig  <martin@ximian.com>
306
307         ***** Terrania changes start at this point *****
308
309 2007-08-27  Jb Evain  <jbevain@novell.com>
310
311         * MonoSymbolFile.cs, SymbolWriterImpl.cs: add some Cecil specific
312         code protected by a CECIL defined.
313
314 Mon Jan 29 16:51:33 CET 2007 Paolo Molaro <lupus@ximian.com>
315
316         * MonoSymbolWriter.cs: unlink the file before writing it, since it may
317         be mmapped by the runtime.
318
319 2007-01-29  Martin Baulig  <martin@ximian.com>
320
321         * MonoSymbolFile.cs
322         (MonoSymbolFile.Assembly): Removed this property.
323         (MonoSymbolFile.Guid): New public property.
324
325 2006-09-24  Joshua Tauberer  <jit@occams.info>
326
327         * MonoSymbolFile.cs: Allow MonoSymbolFile to be created
328           without passing a System.Reflection.Assembly, so we can
329           use this with Cecil.  Only the GUID check is avoided.
330
331 2005-09-14  Martin Baulig  <martin@ximian.com>
332
333         * MonoSymbolTable.cs (OffsetTable): Bump version to 39.
334         (LocalVariableEntry.Index): New field.
335
336         * MonoSymbolWriter.cs
337         (MonoSymbolWriter.DefineLocalVariable): Added `int index' argument.
338
339         * MonoSymbolFile.cs
340         (MonoDebuggerSupport.GetLocalIndex): New method.
341
342 2005-09-05  Martin Baulig  <martin@ximian.com>
343
344         * MonoSymbolFile.cs (MonoDebuggerSupport): Make this internal and
345         move everything we don't need here into the debugger.
346
347 2005-06-20  Chris Toshok  <toshok@ximian.com>
348
349         * MonoSymbolFile.cs (MonoSymbolFile.Dispose): make public.
350
351 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
352
353         * SymbolWriterImpl.cs: An implementation of ISymbolWriter. It is just a
354         wrapper for the MonoSymbolWriter class that mcs is using.
355
356 2005-04-04  Marek Safar  <marek.safar@seznam.cz>
357
358         * MonoSymbolFile.cs: Removed unused fields.
359
360 2005-02-10  Martin Baulig  <martin@ximian.com>
361
362         * MonoSymbolFile.cs
363         (MonoDebuggerSupport.MakeArrayType): New public method.
364         (MonoDebuggerSupport.ResolveType): New public method.
365         (MonoDebuggerSupport.GetTypeToken): New public method.
366
367 2005-02-10  Martin Baulig  <martin@ximian.com>
368
369         * MonoSymbolFile.cs (MonoDebuggerSupport.GetMethodIndex): New
370         public method.
371
372 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
373
374         * MonoSymbolFile.cs (CreateSymbolFile): Take a filestream to
375         write to. Do not return a byte array.
376
377         (MyMemoryStream): Unused now.
378
379         * MonoSymbolWriter.cs: Take advantage of the api change above.
380
381         Overall, this prevents us from having to allocate the debug file
382         in ram. For corlib, the debug file is about 1.5 mb. So it takes up
383         over 3 mb (you must write it in chunks then get the big array)
384
385         With the file stream, it takes up 4 kb or so for the buffer.
386
387 2004-10-20  Martin Baulig  <martin@ximian.com>
388
389         * MonoSymbolFile.cs (MonoSymbolFile.Write): Sort the method table
390         before actually writing it to disk and update MethodEntry.Index.
391
392         * MonoSymbolTable.cs (MethodEntry.Index): Make this a writable
393         property; set it after creating all the methods and sorting the
394         method table.
395
396 2004-09-21  Martin Baulig  <martin@ximian.com>
397
398         * MonoSymbolFile.cs (MonoDebuggerSupport.CheckRuntimeVersion): New
399         public method.
400
401 2004-08-27  Martin Baulig  <martin@ximian.com>
402
403         * MonoSymbolFile.cs (MonoSymbolFile..ctor): Read the GUID from the
404         symbol file before reading the OffsetTable.
405
406 2004-08-27  Chris Toshok  <toshok@ximian.com>
407
408         * MonoSymbolFile.cs (MonoSymbolFile.ReadSymbolFile): pass name to
409         MonoSymbolFile.ctor, not filename, so we load the .mdb file
410         instead of the .dll.
411         (MonoSymbolFile.ctor): pass FileAccess.Read to the FileStream
412         ctor.
413
414 2004-08-27  Martin Baulig  <martin@ximian.com>
415
416         * MonoSymbolFile.cs (MonoDebuggerSupport.GetGuid): The function is
417         called Module.Mono_GetGuid(), not Module.MonoDebugger_GetGuid().
418
419 2004-07-30  Martin Baulig  <martin@ximian.com>
420
421         The library is now called Mono.CompilerServices.SymbolWriter.dll
422         and is in the Mono.CompilerServices.SymbolWriter namespace.
423
424         * MonoSymbolFile.cs (MonoDebuggerSupport.GetGuid): New public
425         static method.
426         (MonoSymbolFile.WriteString): Use the BinaryWriter's method.
427         (MonoSymbolFile.ReadString): Use the BinaryReader's method.
428         (MonoSymbolFile.Write): Write the module's Guid into the symbol
429         file.
430
431         * MonoSymbolTable.cs, MonoSymbolWriter.cs: Reworked the API.
432
433 2004-07-27  Martin Baulig  <martin@ximian.com>
434
435         * MonoSymbolFile.cs (MonoSymbolFile.Write): Sort the methods
436         according to their token values.
437         (MonoSymbolFile.ReadSymbolFile): Support reading the debugging
438         information from an external ".mdb" file.
439
440         * MonoSymbolTable.cs
441         (SourceFileEntry): Make the .ctor protected, not internal.
442         (SourceFileEntry.DefineMethod): This is no longer specific to
443         System.Reflection(.Emit).
444         (MethodEntry): We don't need the class and parameter types, the
445         JIT is already getting this information automatically.
446         (MethodEntry.ClassTypeIndex): Make this obsolete.
447         (MethodEntry.ParamTypeIndicies): Likewise.
448
449 2004-07-02  Raja R Harinath  <rharinath@novell.com>
450
451         * Makefile (LIBRARY_USE_INTERMEDIATE_FILE): Define.
452         (LIBRARY_COMPILE): Simplify.
453
454 2004-06-24  Raja R Harinath  <rharinath@novell.com>
455
456         * Makefile (LIBRARY_COMPILE): Only define for W32.
457
458 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
459
460         * Makefile: build using mcs on windows.
461
462 2004-06-19  Martin Baulig  <martin@ximian.com>
463
464         * MonoSymbolTable.cs
465         (SourceFileTable.Namespaces): New public property.
466
467 2004-06-02  Martin Baulig  <martin@ximian.com>
468
469         Set version number to 37.
470
471 2004-05-23 Ben Maurer  <bmaurer@users.sourceforge.net>
472
473         * MonoSymbolTable.cs (BuildLineNumberTable): Avoid arraylist.
474
475 2004-01-16  Martin Baulig  <martin@ximian.com>
476
477         Set version number to 36.
478
479         * MonoSymbolFile.cs (MonoSymbolFile): Removed 'FindMethod' and
480         'MethodLookup'.
481
482         * MonoSymbolTable.cs (MethodEntry): Don't write the method's full
483         name into the symbol file.
484
485 2004-01-16  Martin Baulig  <martin@ximian.com>
486
487         * MonoSymbolFile.cs (MonoDebuggerSupport): As suggested by Ben
488         Maurer, create a delegate type for each of the methods and then
489         store the method.
490
491 2004-01-15  Martin Baulig  <martin@ximian.com>
492
493         * MonoSymbolFile.cs (MonoDebuggerSupport): New public class
494         containing static wrappers for calling the `MonoDebugger_*'
495         function in S.R.Assembly.
496
497 2004-01-13  Martin Baulig  <martin@ximian.com>
498
499         * MonoSymbolTable.cs: Added more #region's and a comment at the
500         top of the file.
501
502         * MonoSymbolWriter.cs (SourceMethod.BuildLineNumberTable): Removed
503         it here since it's in MethodEntry again.
504
505 2004-01-13  Martin Baulig  <martin@ximian.com>
506
507         * ChangeLog, MonoSymbolTable.cs: Reviewed Ben's patches.  For
508         those which are not ok, I'll add detailed comments to the source
509         code.   
510
511 2003-12-28 Ben Maurer  <bmaurer@users.sourceforge.net>
512
513         [Revision 1.41, not approved.  Martin]
514         * MonoSymbolTable.cs (MethodEntry): kill more
515         useless fields.
516
517 2003-12-28 Ben Maurer  <bmaurer@users.sourceforge.net>
518
519         [Revision 1.40, not approved.  Martin]
520         * MonoSymbolTable.cs (MethodEntry): Remove the
521         SourceFileIndex field, we already have the info.
522
523 2003-12-28 Ben Maurer  <bmaurer@users.sourceforge.net>
524
525         [Revision 1.39, approved.  Martin]
526         * MonoSymbolTable.cs: Don't make the MethodIndexEntry
527         part of the method entry class, because it just
528         takes up extra space.
529
530 2003-12-28 Ben Maurer  <bmaurer@users.sourceforge.net>
531
532         [Revisions 1.37 and 1.38; not approved.  Martin]
533         * MonoSymbolTable.cs (MethodEntry.BuildLineNumberTable): Removed.
534
535         * MonoSymbolTable.cs, MonoSymbolWriter.cs: Use
536         fewer arrays, dont use arraylists with structs.
537
538 2003-12-27 Ben Maurer  <bmaurer@users.sourceforge.net>
539
540         * MonoSymbolFile.cs: Much, much better string writing.
541
542 2003-12-20 Ben Maurer  <bmaurer@users.sourceforge.net>
543
544         [Revision 1.36, approved.  Martin]
545         * MonoSymbolTable.cs: Fewer StringBuilder allocs.
546
547 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
548
549         * MonoSymbolWriter.cs: Create ArrayLists only when needed.
550
551 2003-12-07 Ben Maurer  <bmaurer@users.sourceforge.net>
552
553         [Revision 1.35, approved.  Martin]
554         * MonoSymbolTable.cs: It is faster to do a linear search
555         than it is to make a hashtable. Even though the linear
556         search is O(n^2) while the hashtable is O(n), the allocation
557         cost for a hashtable is *very* high, especially when only
558         a few members will be added.
559
560 2003-09-06  Martin Baulig  <martin@ximian.com>
561
562         * MonoSymbolFile.cs: Removed debugging output.
563
564 2003-08-05  Martin Baulig  <martin@ximian.com>
565
566         * MonoSymbolTable.cs (MethodEntry.Index): New public field.
567
568 2003-06-27  Zoltan Varga  <vargaz@freemail.hu>
569
570         * MonoSymbolWriter.cs: Enable calling of DefineDocument multiple
571         times with the same URL.
572
573 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
574
575         * MonoSymbolFile.cs: Fix off-by-one error.
576
577 2003-03-22  Martin Baulig  <martin@ximian.com>
578
579         * MonoSymbolTable.cs (MethodEntry.LocalNamesAmbiguous): New public
580         field.  Specifies whether two local variables have the same name.
581
582 2003-03-13  Martin Baulig  <martin@ximian.com>
583
584         Added basic support for lexical scopes.  This is just to tell a
585         debugger that a local variable is only available in a specific
586         lexical scope and that another variable of the same name may exist
587         in another lexical scope.  See debugger/test/TestLexicalScope.cs
588         for examples.
589
590         * MonoSymbolTable.cs (LexicalScopeEntry): New class.
591         (LocalVariableEntry): Added `BlockIndex' field which specifies the
592         lexical scope of this variable.
593
594         * MonoSymbolWriter.cs (SourceBlock): Removed, we're now using
595         LexicalScopeEntry instead.
596
597 2003-02-22  Martin Baulig  <martin@ximian.com>
598
599         * MonoSymbolTable.cs: Incremented version number.
600
601 2003-02-22  Martin Baulig  <martin@ximian.com>
602
603         * MonoSymbolFile.cs (MonoSymbolFile.FindMethod): Fixed a bug.
604         (MonoSymbolFile.MethodLookup): New method.
605
606 2003-02-18  Martin Baulig  <martin@ximian.com>
607
608         * MonoSymbolFile.cs (MonoSymbolFile.GetMethod): Added overloaded
609         version which takes a MethodBase.
610
611 2003-02-18  Martin Baulig  <martin@ximian.com>
612
613         * MonoSymbolTable.cs (MethodIndexEntry): New public struct.
614
615         * MonoSymbolFile.cs (MonoSymbolFile.GetMethodByToken): New method.
616
617 2003-02-18  Martin Baulig  <martin@ximian.com>
618
619         * MonoSymbolFile.cs (MonoSymbolFile.Assembly): New public property.
620
621         * MonoSymbolTable.cs (MethodEntry.MethodBase): New public property.
622         (MethodEntry.LocalTypes): New public variable.
623
624 2003-02-18  Martin Baulig  <martin@ximian.com>
625
626         * MonoSymbolFile.cs (MethodEntry.ThisTypeIndex): Renamed to
627         ClassTypeIndex; provide this for all methods so we can get the
628         class of static methods.
629
630 2003-02-10  Nick Drochak  <ndrochak@gol.com>
631
632         * Mono.CSharp.Debugger.build: passing the /r using an 'arg' node works.
633         The <include> node wasn't getting to the compiler. This fixes build
634         breakage on cygwin.
635
636         * MonoSymbolFile.cs: Qualify which Min method. Fixes build breakage
637         on cygwin.
638
639 2003-02-09  Martin Baulig  <martin@ximian.com>
640
641         * MonoSymbolWriter.cs (MonoSymbolWriter.ctor): We don't need the
642         `mbuilder_array' anymore.
643
644 2003-02-09  Martin Baulig  <martin@ximian.com>
645
646         * MonoSymbolWriter.cs (SourceFile): Derive from SourceFileEntry.
647         (SourceBlock): We don't need source lines here.
648         (SourceMethod): We're always constructed with source info.
649
650         * MonoSymbolTable.cs: Added support for namespaces.
651         (NamespaceEntry): New struct.
652         (SourceFileEntry.DefineNamespace): New method.
653         (MethodEntry.BuildLineNumberTable): The table is already sorted,
654         so we don't need to do this here.
655
656 2003-02-09  Martin Baulig  <martin@ximian.com>
657
658         * IMonoSymbolWriter.cs: Ooops, I forgot to remove this.
659
660 2003-02-08  Martin Baulig  <martin@ximian.com>
661
662         * MonoSymbolDocumentWriter.cs: Removed.
663
664         * MonoSymbolWriter.cs (SourceFile): Implement ISymbolDocumentWriter.
665
666 2003-02-08  Martin Baulig  <martin@ximian.com>
667
668         * MonoSymbolFile.cs (GetMethodSource): New public method.
669         (FindMethod): Return the correct index.
670
671 2003-02-07  Martin Baulig  <martin@ximian.com>
672
673         * MonoSymbolFile.cs (Methods, Sources): New public properties.
674
675 2003-02-07  Martin Baulig  <martin@ximian.com>
676
677         * MonoSymbolFile.cs (MonoSymbolFile.ReadSymbolFile): New public
678         static method, returns null (without throwing an exception) if the
679         assembly doesn't have any debugging info.
680
681 2003-02-07  Martin Baulig  <martin@ximian.com>
682
683         * MonoSymbolWriter.cs (MonoSymbolWriter.Initialize): Removed the
684         custom initialization function.
685
686         * MonoSymbolTableWriter.cs: Removed; the code is now in
687         MonoSymbolFile.cs and MonoSymbolWriter.cs.
688
689 2003-02-07  Martin Baulig  <martin@ximian.com>
690
691         * MonoSymbolFile.cs: The symbol file is now a resource in the
692         assembly instead of a separate file.
693
694         * MonoSymbolTable.cs: Did a few more cleanups, sort the line
695         number table and remove duplicate line numbers.
696
697 2003-02-05  Martin Baulig  <martin@ximian.com>
698
699         Modified the symbol file format to speed up method looks by name
700         and cleaned this up a lot.
701
702         * MonoSymbolFile.cs: New public class.  This is now a public class
703         and writes and reads the symbol file.
704
705         * IMonoBinaryReader.cs: Removed.
706
707         * MonoSymbolTable.cs: Set version number to 29.
708
709 2003-01-17  Zoltan Varga  <vargaz@freemail.hu>
710
711         * MonoSymbolWriter.cs (OpenMethod): Make it work on constructors.
712
713 2002-10-13  Martin Baulig  <martin@gnome.org>
714
715         * MonoSymbolTable.cs: Set version number to 28.
716         (SourceFileEntry): Read the methods when they're needed.
717         (MethodSourceEntry): Made this a struct, not a class.
718
719 2002-10-13  Martin Baulig  <martin@gnome.org>
720
721         * MonoSymbolTable.cs: Set version number to 27.  Added a source
722         file table which is used to search a method by source file + line number.
723
724 2002-09-21  Martin Baulig  <martin@gnome.org>
725
726         * MonoSymbolTable.cs: Set version number to 26.  Removed all the dynamic
727         stuff, this library now just deals with the compiler generated symbol table.
728         The dynamic stuff is private between the JIT and the debugger.
729
730 2002-09-21  Martin Baulig  <martin@gnome.org>
731
732         * MonoSymbolTable.cs: Set version number to 25.  Added information about
733         local variables.
734
735 2002-09-20  Martin Baulig  <martin@gnome.org>
736
737         * MonoSymbolTable.cs: Set version number to 24.  Added a type index
738         table.  Write the type of a local variable or a parameter as an index
739         into this table.
740
741 2002-09-20  Martin Baulig  <martin@gnome.org>
742
743         * IMonoSymbolWriter.cs: Remove all the unused interfaces.
744
745 2002-09-20  Martin Baulig  <martin@gnome.org>
746
747         * MonoSymbolTable.cs: Set version number to 23, include the size
748         of a variable.
749
750 2002-09-20  Martin Baulig  <martin@gnome.org>
751
752         * MonoSymbolTable.cs: Set version number to 22.  Provide information
753         about parameters and local variables.
754
755 2002-09-20  Martin Baulig  <martin@gnome.org>
756
757         * IMonoSymbolWriter.cs: Use fullly qualified name for
758         System.Diagnostics.SymbolStore.ISymbolWriter rather than `using' this
759         namespace.  This allows us to use the name `ISymbolWriter' in our own
760         code.
761
762 2002-09-18  Martin Baulig  <martin@gnome.org>
763
764         * MonoSymbolTable.cs: Set version number to 21.  Encode the source file
765         as a 4-byte length field followed by the UTF8 encoded string.
766
767 2002-09-18  Martin Baulig  <martin@gnome.org>
768
769         * IMonoBinaryReader.cs: New interface.
770
771         * MonoSymbolTable.cs: Use IMonoBinaryReader instead of binary reader.
772
773 2002-09-16  Martin Baulig  <martin@gnome.org>
774
775         * MonoSymbolTable.cs: Set version number to 20.
776
777 2002-09-14  Martin Baulig  <martin@gnome.org>
778
779         * MonoSymbolWriter.cs, IMonoSymbolWriter.cs, MonoSymbolTableWriter.cs:
780         Make all classes and interfaces which don't need to be public internal.
781
782 2002-09-14  Martin Baulig  <martin@gnome.org>
783
784         * MonoSymbolTable.cs: Use only CLS-compliant types here, bumped version
785         number to 19.
786
787         * MonoSymbolTableReader.cs: Removed, this is now in the debugger.
788
789 2002-09-03  Martin Baulig  <martin@gnome.org>
790
791         * AssemblerWriterI386.cs, IAssemblerWriter.cs, MonoDwarfFileWriter.cs,
792         README, README.relocation-table, csharp-lang.[ch], gdb-csharp-support.patch,
793         gdb-variable-scopes.patch: Removed.
794
795 2002-09-03  Martin Baulig  <martin@gnome.org>
796
797         * MonoSymbolTableReader.cs (MonoSymbolTableReader.ImageFile): New
798         public property.
799
800         * MonoSymbolTable.cs: Bumped version number to 18.
801
802 2002-08-27  Martin Baulig  <martin@gnome.org>
803
804         * MonoSymbolTable.cs (MethodAddress): Removed `TrampolineAddress'.
805
806 2002-08-27  Martin Baulig  <martin@gnome.org>
807
808         * MonoSymbolTable.cs: Changed the file format in a way that allows us
809         open it read-only and to use a specially malloced area for all the
810         dynamic data.   
811
812 2002-08-25  Martin Baulig  <martin@gnome.org>
813
814         * MonoSymbolTableReader.cs: New file.  This is the reader for the
815         new symbol file format.
816
817 2002-08-24  Martin Baulig  <martin@gnome.org>
818
819         * MonoSymbolTable.cs, MonoSymbolTableWriter.cs: New files.  This
820         creates a binary application.dbg file which will be used by the
821         JIT to display source lines for exceptions.
822
823         * list.unix: Disabled the dwarf file writer in the build.
824
825 2002-08-23  Martin Baulig  <martin@gnome.org>
826
827         * MonoSymbolWriter.cs (MonoSymbolWriter.Initialize): Added
828         assembly name argument.  Since the symbol writer needs to read the
829         final assembly, we need to give it its full pathname.
830
831 2002-08-23  Martin Baulig  <martin@gnome.org>
832
833         * makefile.gnu, list.unix: Added.
834
835 2002-07-05  Martin Baulig  <martin@gnome.org>
836
837         * MonoDwarfFileWriter.cs: Added support for types in referenced assemblies.
838
839 2002-07-05  Martin Baulig  <martin@gnome.org>
840
841         * MonoDwarfFileWriter.cs: Added support for arrays.
842
843         * gdb-csharp-support.patch: Updated.
844
845 2002-06-29  Martin Baulig  <martin@gnome.org>
846
847         * MonoDwarfFileWriter.cs (DieInheritance): Make this actually work.
848
849 2002-06-29  Martin Baulig  <martin@gnome.org>
850
851         * MonoDwarfFileWriter.cs, MonoSymbolWriter.cs: Put all TAG_subprogram's into their
852         corresponding struct/class declarations.
853
854 2002-06-28  Martin Baulig  <martin@gnome.org>
855
856         * gdb-csharp-support.patch: Updated.
857
858 2002-06-28  Martin Baulig  <martin@gnome.org>
859
860         * MonoDwarfFileWriter.cs: Use a TAG_string_type when we're using GNU extensions.
861         Make static struct/class fields actually work.  Provide a TAG_typedef for struct's
862         and classes.
863
864 2002-05-30  Martin Baulig  <martin@gnome.org>
865
866         * IMonoSymbolWriter (IMonoSymbolWriter): Added custom `Initialize' method.
867
868         * MonoSymbolWriter.cs (Initialize): The ISymbolWriter's `Initialize' method
869         is no longer supported and throws an exception.
870         (Initialize (string, string[])): New custom initialization function.
871
872         * MonoDwarfFileWriter.cs (DwarfFileWriter): Added `string[] args' argument
873         to the constructor to pass command line arguments.
874
875         * gdb-csharp-support.patch: Updated for GDB 5.2.
876
877 2002-05-30  Martin Baulig  <martin@gnome.org>
878
879         * MonoSymbolWriter.cs (MonoSymbolWriter): The constructor now get's the
880         AssemblyBuilder's `methods' array as third argument.
881         (OpenMethod): Use this array to get the method builder rather than using an
882         interncall for it.
883         (get_method_builder): Removed this interncall.
884
885 2002-05-25  Martin Baulig  <martin@gnome.org>
886
887         * MonoDwarfFileWriter.cs: Finished the type rewrite, put back strings and arrays.
888
889 2002-05-24  Martin Baulig  <martin@gnome.org>
890
891         * IMonoSymbolWriter.cs (ISourceMethod): Added `FullName' and `Parameters'.
892         (ITypeHandle): New interface.
893
894         * DwarfFileWriter.cs: Largely reorganized the type writing code.  Types are
895         now represented by ITypeHandle objects which are stored in a per-dwarf-writer
896         hash table.  At the moment, all types still need to be in one compile unit due
897         to lacking support in gdb - but this new type code here already supports this.
898
899         * MonoSymbolWriter.cs: Moved all the subclasses to the top-level and made them
900         public, cleaned up the code, put everything into one compile unit.
901         (DefineLocalVariable): Added a version of this function which takes useful args.
902
903 2002-05-22  Martin Baulig  <martin@gnome.org>
904
905         * IMonoSymbolWriter.cs (IMonoSymbolWriter): Added `Sources' and `Methods'
906         properties.
907
908         * MonoDwarfFileWriter.cs (WriteSymbolTable): New public method.  Moved the
909         code that writes the "mono_line_numbers" section here from the LineNumberEngine.
910
911 2002-05-22  Martin Baulig  <martin@gnome.org>
912
913         * IMonoSymbolWriter.cs (IVariable): Replaced Token with `ISourceMethod Method'.
914
915         * MonoSymbolWriter.cs (MonoSymbolWriter): The constructor now has an additional
916         ModuleBuilder argument.
917         (OpenMethod): Immediately call the `get_method' interncall to get the MethodBase
918         from the token, then store the MethodBase instead of the token.  The token may
919         still change during the metadata library's fixup process.
920         (DoFixups): When the image has been written to disk, call the GetToken () method
921         on all MethodBuilders and all ConstructorBuilders to get the final metadata tokens.
922
923 2002-05-22  Martin Baulig  <martin@gnome.org>
924
925         * AssemblerWriterI386.cs: Don't use GNU extensions and produce assembler
926         output which is free of comments and extra whitespaces so that it's suitable
927         for `as -f'.
928
929 2002-05-22  Martin Baulig  <martin@gnome.org>
930
931         * IMonoSymbolWriter.cs (ISourceMethod): Replaced `MethodInfo MethodInfo' with
932         `MethodBase MethodBase' and added `Type ReturnType'.  We're now correctly
933         dealing with constructors and not crashing anymore.
934
935 2002-05-21  Martin Baulig  <martin@gnome.org>
936
937         * MonoDwarfFileWriter.cs: Write a special line number table which can be read
938         in by the metadata library to get line number information in backtraces.
939
940 2002-05-06  Martin Baulig  <martin@gnome.org>
941
942         * MonoSymbolWriter.cs (MonoSymbolWriter.Close): Use Assembly.LoadFrom (), not
943         AppDomain.Load () to load the assembly.
944
945 2002-04-26  Martin Baulig  <martin@gnome.org>
946
947         * gdb-csharp-support.patch: A patch for GDB (against the latest CVS version)
948         to implement C# support.
949
950         * csharp-lang.c, csharp-lang.h, csharp-mono-lang.c: Copy these into your GDB
951         source directory after applying the patch.
952
953 2002-04-26  Martin Baulig  <martin@gnome.org>
954
955         * MonoDwarfFileWriter.cs (DieInternalString): Removed.
956
957 2002-04-25  Martin Baulig  <martin@gnome.org>
958
959         * MonoDwarfFileWriter.cs: Reflect latest MonoString changes.
960
961 2002-04-13  Martin Baulig  <martin@gnome.org>
962
963         * IMonoSymbolWriter.cs (ISourceBlock): Added `Blocks' property and `AddBlock'
964         method to support nested blocks.
965
966         * MonoSymbolWriter.cs: Correctly handle nested blocks.
967
968         * MonoDwarfFileWriter.cs (DieMember): Provide info for all fields, not just for
969         public ones; also added DW_AT_accessibility.
970         (DieVariable): Reflected latest debug-symfile.c changes.
971
972 2002-04-12  Martin Baulig  <martin@gnome.org>
973
974         * gdb-variable-scopes.patch: A patch for GDB (against the latest CVS version)
975         to implement variable lifetimes.
976
977 2002-04-12  Martin Baulig  <martin@gnome.org>
978
979         * MonoDwarfFileWriter.cs (DieVariable): Provide info about the variable's
980         lifetime using DW_AT_begin_scope and a new baulig extension DW_AT_end_scope.
981
982 2002-03-29  Martin Baulig  <martin@gnome.org>
983
984         * AssemblerWriterI386.cs: Rewrote most of the string output function, do the
985         number->string conversion manually. It's now taking about 15 seconds to write
986         a symbol file for MCS, no longer more than a minute.
987
988         * MonoDwarfFileWriter.cs: Added some profiling code, speeded things up, fixed
989         a few bugs.
990
991 2002-03-25  Martin Baulig  <martin@gnome.org>
992
993         * MonoDwarfFileWriter.cs (CreateType): Return a `DieType'.
994         (RegisterType): Add the type to the type hash before creating dependency types
995         so we don't get recursion loops.
996         (RegisterPointerType): New func to register a "pointer to type" type.
997         (DieTypeDef, DiePointerType, DieArrayType, DieStringType, DieClassType): New
998         types; added support for strings, arrays and basic support for classes.
999         
1000 2002-03-24  Martin Baulig  <martin@gnome.org>
1001
1002         * IMonoSymbolWriter.cs: Killed all methods in this interface, no longer needed.
1003
1004         * MonoSymbolWriter.cs (MonoSymbolWriter): The constructor now takes a string
1005         argument which is the full pathname of the assembly - you must call Close()
1006         after the assembly has been written to disk since the symbol writer needs to
1007         load the finished assembly to get its metadata.
1008
1009         * MonoDwarfFileWriter.cs: Added support for enums and structs.
1010         
1011 2002-03-24  Martin Baulig  <martin@gnome.org>
1012
1013         * MonoDwarfFileWriter.cs: Added support for method parameters.
1014
1015 2002-03-24  Martin Baulig  <martin@gnome.org>
1016
1017         * IMonoSymbolWriter.cs (IMonoSymbolWriter): Removed my custom OpenMethod(),
1018         we're now using the ISymbolWriter's method.
1019         (IVariable): Added `byte[] Signature' property.
1020
1021         * MonoSymbolWriter.cs (SetAssembly): New method. This must be called before
1022         Close(); the assembly parameter is the already-written assembly, ie. it must
1023         contain the full metadata.
1024         (OpenMethod): Only take the token argument and set MethodInfo later in DoFixups.
1025         (SetMethodSourceRange): You must call this function to tell the symbol writer
1026         in which source file the method is defined.
1027         (DefineLocal): Store the signature in the local.
1028         (DoFixups): Use two new interncalls to set the SourceMethod's MethodInfo field
1029         and the LocalVariable's Type field.
1030
1031 2002-03-23  Martin Baulig  <martin@gnome.org>
1032
1033         * IMonoSymbolWriter.cs (ISourceBlock): New interface.
1034         (ILocalVariable): Renamed this interface to IVariable.
1035         (IVariable): Added Line, Type, Token.
1036         (ILocalVariable, IMethodParameter): New interfaces, derive from IVariable.
1037         (ISourceMethod): Added Blocks. Renamed FirstLine and LastLine to Start and End,
1038         changed their type to ISourceLine. Removed CodeSize.
1039         (ISourceLine): Renamed Line to Row, added Column. Added OffsetType and Offset.
1040
1041         * MonoDwarfFileWriter.cs (MonoDwarfFileWriter.DieLexicalBlock): New class.
1042         (MonoDwarfFileWriter.DieMethodVariable): New class.
1043
1044         * MonoSymbolWriter.cs (OpenScope, CloseScope): Implemented.
1045         Reflected latest IMonoSymbolWriter interface changes.
1046
1047 2002-03-20  Martin Baulig  <martin@gnome.org>
1048
1049         * IAssemblerWriter.cs: New interface.
1050
1051         * AssemblerWriterI386.cs: New class.
1052
1053         * MonoDwarfFileWriter.cs: Use the IAssemblerWriter interface to make this class
1054         platform and assembler independent.
1055
1056 2002-03-20  Martin Baulig  <martin@gnome.org>
1057
1058         * IMonoSymbolWriter.cs (ISourceMethod): Added FirstLine, LastLine, CodeSize and
1059         Token properties.
1060
1061         * MonoDwarfFileWriter.cs: Implemented line number support.
1062
1063 2002-03-19  Martin Baulig  <martin@gnome.org>
1064
1065         * IMonoSymbolWriter.cs (ISourceFile, ISourceMethod, ISourceLine, ILocalVariable):
1066         New interfaces.
1067
1068         * IMonoSymbolWriter.cs (OpenMethod): Take a System.Reflection.MethodInfo, not
1069         a string.
1070
1071 2002-03-19  Martin Baulig  <martin@gnome.org>
1072
1073         This is an implementation of the System.Diagnostics.SymbolStore.SymbolWriter
1074         interface. It's still work in progress and not yet used anywhere.
1075
1076         There is some preliminary documentation in the source files and some more
1077         docu in the README and README.relocation-table files.
1078
1079         * IMonoSymbolWriter.cs: New file.
1080         * MonoDwarfFileWriter.cs: New file.
1081         * MonoSymbolDocumentWriter.cs: New file.
1082         * MonoSymbolWriter.cs: New file.
1083
1084         * README, README.relocation-table: Documentation.
1085