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