New test.
[mono.git] / mcs / class / PEAPI / ChangeLog
1 2006-07-20  Ankit Jain  <jankit@novell.com>
2
3         * Metadata.cs (CustomAttribute.BuildTables): Value can be null.
4
5 2006-06-07  Ankit Jain  <jankit@novell.com>
6
7         * PEAPI.cs (PEFile.GetNextSectStart): Handle the case when (tide %
8         SectionAlignment) == 0 . Patch by Carlo Kok. Fixes bug #78182.
9
10 2006-06-01  Ankit Jain  <jankit@novell.com>
11
12         * PEAPI.cs (PEFile.AddMethod): Add overload for return type as Param
13         instead of PEAPI.Type .
14         * Metadata.cs (MetaDataElement.HasCustomAttr): New. Temporary hack.
15         (Param.HasMarshalInfo): New.
16         (ClassDef.AddMethod): Add overload for return type as Param.
17         (MethodDef.ctor): Change internal .ctor's sig to take Param instead of
18         PEAPI.Type for return type.
19         (MethodDef.retType): Remove.
20         (MethodDef.TypeSig): Update to use ret_param always.
21         (MethodDef.BuildTables): Add ret_param to Param table only if it has
22         marshal info or custom attributes.
23
24 2006-05-26  Ankit Jain  <jankit@novell.com>
25
26         * Metadata.cs (DeclSecurity): Rename to .. 
27         (BaseDeclSecurity): .. this.
28         (DeclSecurity): New. Derive from BaseDeclSecurity.
29         (DeclSecurity_20): Likewise. For 2.0 style declaritive security.
30         (PermissionSet): New.
31         (Permission): New.
32         (PermissionMember): New.
33         (MetaData.AddDeclSecurity): Update to use BaseDeclSecurity.
34         (MetaData.BuildMetaData): Likewise.     
35                            
36         * PEAPI.cs (PEFile.AddDeclSecurity): New overload for new PermissionSet
37         class.
38
39 2006-05-10  Ankit Jain  <jankit@novell.com>
40
41         * Metadata.cs (NativeType): Add LPStruct and Error.
42
43 2006-04-24  Ankit Jain  <jankit@novell.com>
44
45         * PEAPI.cs (PEFile.WritePEFile): ReserveStrongNameSignatureSpace only if
46         we have assembly manifest.
47
48 2006-02-22  Ankit Jain  <jankit@novell.com>
49
50         * Metadata.cs (TypeAttr): Add [Flags] attribute.
51
52 2006-02-20  Ankit Jain  <jankit@novell.com>
53
54         * PEAPI.cs (PEFileException): Update error message.
55         * Metadata.cs: Update to throw PEFileException instead of Exception.     
56
57 2006-02-19  Ankit Jain  <jankit@novell.com>
58
59         * Metadata.cs (Module): Implment IExternRef to allow reference to types
60         in 'this' module.
61
62 2006-02-15  Raja R Harinath  <rharinath@novell.com>
63
64         * Metadata.cs (BoundArray.CompressSignedNum): Document the
65         transformation.  Avoid a few casts.
66
67 2006-02-15  Ankit Jain  <jankit@novell.com>
68
69         * Metadata.cs (BoundArray.CompressSignedNum): New. Encode signed values,
70         used only for encoding lower bounds of arrays.
71         (BoundArray.TypeSig): Use new CompressSignedNum to encode lower bounds.
72
73 2006-02-08  Ankit Jain  <jankit@novell.com>
74
75         * Metadata.cs (BoundArray.ctor): Change param 'upBounds' to sizes.
76         (MetaData.CompressNum): Fix range check.
77
78 2006-01-31  Ankit Jain  <jankit@novell.com>
79
80         * Metadata.cs (Op.readonly_): New.
81
82 2006-01-19  Ankit Jain  <jankit@novell.com>
83
84         * Metadata.cs (GenericParameter.GetCodedIx): Override. Return coded index
85         for HasCustomAttr.
86         (MetaData.BuildMetaData): Sort CustomAttribute table at the end.
87
88 2006-01-16  Ankit Jain  <jankit@novell.com>
89
90         * Metadata.cs (PInvokeAttr): Add 'bestfit_on', 'bestfit_off', 'bestfit_mask',
91         'charmaperror_on' & 'charmaperror_off'.
92
93 2006-01-13  Ankit Jain  <jankit@novell.com>
94
95         * Metadata.cs (GenericMethodSig): Ensure sig is added to the blob only once.
96
97 2006-01-10  Ankit Jain  <jankit@novell.com>
98
99         * Metadata.cs (GenParam): Don't use GetTypeSpec to create typespec for GenParam. 
100         Adding required methods directly to GenParam.
101         * PEAPI.cs (PEFile.AddGenericParam): Add it to the TypeSpec table directly.
102
103 2006-01-09  Ankit Jain  <jankit@novell.com>
104
105         * PEAPI.cs (PEFile.AddGenricParam): New. Adds a GenParam to the TypeSpec
106         table.
107         * Metadata.cs (GenParam): Inherit from 'Class' instead of 'Type'.
108         (GenParam.name): Rename to param_name as it hides Class.name .
109         (GenParam.GetTypeSpec): Override to create TypeSpec for genparam.
110
111 2006-01-08  Ankit Jain  <jankit@novell.com>
112
113         * Metadata.cs (TypeOp): Add 'constrained' op.
114
115 2006-01-07  Ankit Jain  <jankit@novell.com>
116
117         * Metadata.cs (GenericParamAttributes): New.
118         (MetaDataElement.Row): Always set value.
119         (GenericParameter): Update to use GenericParameterAttributes.
120         (GenericParameterConstraint.SortKey): New. override to support sorting.
121         (ClassDef.AddGenericParameter):
122         (MethodDef.AddGenericParameter): New overloads for accepting attributes also.
123
124 2006-01-06  Ankit Jain  <jankit@novell.com>
125
126         * Metadata.cs (UIntConst): Change constructor param from signed int/sbyte/etc to
127         unsigned.
128         (UIntConst.GetBlobIndex):
129         (UIntConst.Write): Change use of signed types to unsigned ones.
130
131 2006-01-06  Ankit Jain  <jankit@novell.com>
132
133         * PEAPI.cs (PEFile.AddGenericClass): New. Adds a GenericTypeInst to the TypeSpec table.
134         * Metadata.cs (GenericTypeInst): Change base class from 'Type' to 'Class'.
135         (GenericTypeInst.GetTypeSpec):
136         (GenericTypeInst.BuildTables):
137         (GenericTypeInst.Size):
138         (GenericTypeInst.Write):
139         (GenericTypeInst.GetCodedIx): Implement these for GenericTypeInst.
140         (ClassDef.SetSuper): Set typeIndexChecked to false if 'super' is not GenericTypeInst.
141         Fixup of typeIndex is not required for GenericTypeInst .     
142         (ClassDef.CheckTypeIndex): Recursively fix typeIndex if superType is ClassDef.
143         (MetaData.BuildMetaData): BuildTable for TypeSpec.
144
145 2005-12-24  Jb Evain  <jbevain@gmail.com>
146
147         * Metadata.cs (Property): Add a new 'instance' field.
148         (Property.SetInstance): New mutator for the instance field.
149         (Property.BuildTables): Emit the correct property tag depending on the instance field.
150
151 2005-12-14  Ankit Jain  <jankit@novell.com>
152
153         * Metadata.cs (BoundArray.ctor): Don't calculate sizes if upBounds is
154         null.
155
156 2005-12-12  Ankit Jain  <jankit@novell.com>
157
158         * Metadata.cs (TypeAttr): Add VisibilityMask.
159
160 2005-12-09  Ankit Jain  <jankit@novell.com>
161
162         * Metadata.cs (Method.ctor): Remove rType parameter.
163         (Method.GetRetType): Remove.
164         (Method.AddCallConv): Make it abstract.
165         (Method.GetSigIx): Likewise.
166         (MethodDef): Override and implement abstract methods from Method class.
167         (MethodRef): Likewise.
168         (MethodSpec): Change base class from MetaDataElement to Method. Override 
169         abstract methods from Method but throw Exception as they are not meant to be used here.
170         (MethodDef.TypeSig): Write gen_param_count before num of params.
171         (ClassRef.AddMethod): New overload with an extra gen_param_count param.
172         * PEAPI.cs (PEFile.AddMethodToTypeSpec): New overload with an extra gen_param_count
173         param.
174         (PEFile.AddMethodSpec): Change return type from void to Method.
175
176 2005-12-05  Ankit Jain  <jankit@novell.com>
177
178         * Metadata.cs (GenParamType): New enum.
179         (CallConv): Add [Flags] attribute.
180         (GenParam): New. Replaces .. 
181         (MVar): .. this ..  
182         (GenericTypeSpec): .. and this.
183         (GenericTypeInst.ctor): Use PrimitiveType.GenericInst.GetTypeIndex () instead
184         of hard-coded 0x15.
185         (GenericTypeInst.TypeSig): First byte should the 0x0A (GENERIC_INST).
186         (Method.gen_param_count): New. Num of generic parameters.
187         (MethodDef.ctor): Use overload.
188         (MethodDef.TypeSig): Write gen_param_count if callConv is Generic.
189         (MethodRef.GenParamCount): New.
190         (MethodRef.TypeSig): Write gen_param_count if callConv is Generic.
191         (PrimitiveType.Var): New.
192         (PrimitiveType.MVar): New.
193         (PrimitiveType.GenericInst): New.
194
195 2005-11-21  Ankit Jain  <jankit@novell.com>
196
197         * Metadata.cs (MetaData.WriteCodedIndex): Fix indentation.
198
199 2005-11-21  Ankit Jain  <jankit@novell.com>
200
201         * Metadata.cs (GenericParameter.SortKey2): New. Use index as the secondary key.
202         (GenericParameter.Size): Set size correctly.
203         (GenericParameter.Write): Use StringsIndex to write the index.
204         (MetaData.WriteTildeStream): Emit 2,0 as version for NET_2_0 profile.
205         (MetaData.version): Use 'v2.0.50727' for NET_2_0 profile.
206         (MetaData.BuildMetaData): Build and sort GenericParam, MethodSpec and 
207         GenericParamConstraint tables only for NET_2_0 profile.
208
209 2005-09-16  Ankit Jain  <jankit@novell.com>
210
211         * PEAPI.cs: Clean up indentation. Split into ...
212           Metadata.cs, Code.cs, PEAPI.cs: ... these.
213
214 2005-09-08  Ankit Jain  <jankit@novell.com>
215
216         * PEAPI.cs (FileImage.stackReserve): New. Set to default value of 0x100000 (1Mb).
217           (FileImage.WritePEHeader): Write stackReserve instead of the default value.
218           (PEFile.SetStackReserve): Set stack reserve for fileImage.
219
220 2005-09-06  Ankit Jain  <jankit@novell.com>
221
222         * PEAPI.cs (MetaData.WriteTildeStream): Change minor version back to 0.
223
224 2005-08-30  Ankit Jain  <jankit@novell.com>
225
226         * PEAPI.cs (MetaData.WriteTildeStream): Change minor version to 1.
227
228 2005-08-29  Ankit Jain  <jankit@novell.com>
229
230         * PEAPI.cs (CustomMarshaller.ctor): New.
231           (CustomMarshaller.ToBlob): Emit marshallerName and cookie strings with
232           their lengths.
233
234 2005-08-26  Ankit Jain  <jankit@novell.com>
235
236         * PEAPI.cs (PEFile.ctor): Restore old constructor overload to avoid
237           changing public API.
238
239 2005-08-26  Ankit Jain  <jankit@novell.com>
240
241         * PEAPI.cs (IResolutionScope): New. Empty interface.
242           (ClassRef): Implement IResolutionScope.
243           (ClassRef.parent): Change type from ResolutionScope to IResolutionScope.
244           (ClassRef.AddClass): New. Add nested class.
245           (ClassRef.AddValueClass): New. Add nested value class.
246
247 2005-08-23  Ankit Jain  <jankit@novell.com>
248
249         * PEAPI.cs (MetaData.version): Change from 1.0.3705 to 1.1.4322.
250
251 2005-08-23  Ankit Jain  <jankit@novell.com>
252
253         * PEAPI.cs (MSCorLib.systemClasses): Change type from ClassRef[] to
254           Class[].
255           (MSCorLib.ctor): Add assembly ref to mscorlib for non-mscorlib assemblies
256           only.
257           (MSCorLib.AddClass): Use Class instead of ClassRef.
258           (MSCorLib.GetSpecialClass): Change return type to Class from ClassRef.
259           Don't instantiate object of SystemClass if this assembly is mscorlib.
260           (MSCorLib.SetSpecialSystemClass): New. Set a System.* class for primitive
261           types, used for compiling mscorlib.
262           (MSCorLib.GetValueClass): Change to handle new type of systemClasses.
263           (MSCorLib.ValueType),
264           (MSCorLib.EnumType): Don't instantiate ClassRef if this assembly is mscorlib.
265           (ClassDef.ctor): Don't superType to System.Object for System.Object and <Module>. 
266           (ClassDef.MakeValueClass): Set typeIndex to ValueType's typeIndex.
267           (ClassDef.IsValueType),
268           (ClassDef.IsEnum): Use "==" instead of .CompareTo for string comparison.
269           (ClassDef.AddNestedClass): Set typeIndexChecked = true for the nested class.
270           (PEFile.isMSCorlib): New. bool field.
271           (PEFile.ctor): Move all ctor logic into one overload and call that from others.
272           (PEFile.ctor): Add outputDir parameter.
273           (PEFile.SetName): Set name of the assembly and set isMSCorlib accordingly.
274           (PEFile.IsMSCorlib): New. bool Property.
275           (PEFile.AddClass): Call overload.
276           (PEFile.AddClass): Set superType and SetSpecialSystemClass if compiling mscorlib.
277           (PEFile.AddValueClass): Call MakeValueClass only if the class is not System.ValueType
278           or System.Enum itself, else set the supertype correctly.
279
280 2005-08-16  Ankit Jain  <jankit@novell.com>
281
282         * PEAPI.cs (FieldAttr): Move HasFieldMarshal from FieldDef to this.
283           (ParamAttr): Move HasDefault and HasFieldMarshal from Param to this.
284           (ManifestResource.ctor): Use 'mres' param to clone.
285           (MethodDef.ret_param): New.
286           (MethodDef.AddRetTypeMarshallInfo): New.
287           (MethodDef.TypeSig): Set seqNo for ret_param to zero.
288           (MethodDef.BuildTables): Add ret_param to Param table, and BuildTables
289           for it.
290           (FixedSysString): New. Class to represent Fixed SysString native type.
291           (NativeArray): Rename len to numElem. Init numElem, parNum and elemMult
292           to -1.
293           (NativeArray.ctor): Uncomment ctor with one param (elemType).
294           (NativeArray.ctor): Move ctor logic to the one with all params.
295           (NativeArray.ToBlob): Emit values in correct order.
296           (SafeArray.hasElemType): New. bool var to indicate presence of ElemType.
297           (SafeArray.ctor): New. Parameterless constructor.
298           (SafeArray.ToBlob): Emit correctly.
299           (FixedArray.ctor): Remove elemType param.
300           (FixedArray.ToBlob): Don't emit elemType.
301
302 2005-08-08  Ankit Jain  <jankit@novell.com>
303
304         * PEAPI.cs (CodeBlock): Set maxCodeSize to 255 instead of 256 for checking
305           Fat format.
306           (CILInstructions.CheckCode): Use 255 instead of 256 for checking Fat format.
307
308 2005-08-08  Ankit Jain  <jankit@novell.com>
309
310         * PEAPI.cs (FileImage.WriteCLIHeader): Move the check for no entrypoint
311           in case of an EXE to ilasm/codegen/CodeGen.cs to avoid creating unnecessary
312           .exe.
313
314 2005-08-05  Ankit Jain  <jankit@novell.com>
315
316         * PEAPI.cs (FileImage.WriteCLIHeader): Throw Exception if an EXE has been
317           requested but the source file has no entrypoint defined.
318
319 2005-08-05  Ankit Jain  <jankit@novell.com>
320
321         * PEAPI.cs (TypeAttr): Add HasSecurity.
322           (MethAttr): Likewise.
323           (SecurityAction): New enum.
324           (DeclSecurity.ctor): Add 'byte []' as the third parameter.
325           (DeclSecurity.BuildTables): Write the byte array to the blob.
326           (MetaData.AddDeclSecurity): Add DeclSecurity to declsec_list.
327           (MetaData.BuildMetaData): Call BuildTables for declsec_list members.
328           (PEFile.AddDeclSecurity): New. Add DeclSecurity to metaData.
329
330 2005-04-30  Ankit Jain  <ankit@corewars.org>
331
332         * PEAPI.cs (InterfaceImpl.SortKey): New.
333         (MetaData.BuildMetaData): Sort InterfaceImpl table.
334         (MethodSemantics.SortKey): Compute key correctly.
335
336 2005-04-18  Ankit Jain  <ankit@corewars.org>
337
338         * PEAPI.cs (ManifestResource.InitResource): New. Used by constructors
339         to initialize the resource. 
340         (ManifestResource.ctor): New. Constructor to accept resource as a 
341         byte array.
342         (ManifestResource.ctor): New. Constructor to accept an object of self. 
343         (ManifestResource.BuildTables): Update.
344         (MetaData.AddResource): New. Add the resource to the list, adjust 
345         resourcesSize.
346         (MetaData.WriteResource): New. Write resources to the FileImage.
347         (PEFile.AddExternalManagedResource): New. Add a new resource.
348         (PEFile.GetResource): New. Get resource by name.
349         (PEFile.GetResources): New. Get array of resources.
350
351 2005-04-12  Ankit Jain  <ankit@corewars.org>
352
353         * PEAPI.cs (CustomAttribute.ctor): Dont throw 
354         NotYetImplementedException.
355         (MethodSemantics.SortKey): Should be sorted by 
356         'Association' column.
357         
358 2005-04-08  Ankit Jain  <radical@corewars.org>
359
360         * PEAPI.cs (MSCorLib.GetSpecialClass): Don't encode
361         System.ValueType and System.Enum as value types.
362         (ValueClass): New enum.
363         (Class.MakeValueClass): Add a 'ValueClass' parameter.
364         (ClassDef.MakeValueClass): Set supertype to ValueType or Enum
365         according to ValueClass parameter.
366         (IsValueType,IsEnum): New.  Test if type is System.ValueType or
367         System.Enum.
368         (ClassDef.AddNestedClass): Don't encode System.ValueType and
369         System.Enum as value types.
370
371 2005-03-17  Ankit Jain  <radical@corewars.org>
372
373         * PEAPI.cs: Metadata tables that must be sorted are sorted now.
374         Fixes the code for ParamAttr.Opt. Fix bug #73517.
375                 
376 2004-12-08  Sebastien Pouliot  <sebastien@ximian.com>
377
378         * PEAPI.cs: Added support for allocating and storing strongname 
379         signatures when a .publickey directive is present in source. Fix bug
380         #69721.
381
382 2004-12-01  Jackson Harper  <jackson@ximian.com>
383
384         * PEAPI.cs: Allow underlying types of ByteArrConsts to be set when
385         they are used as field init data.
386
387 2004-07-29  Martin Baulig  <martin@ximian.com>
388
389         * PEAPI.cs (Module.Guid): New public property.
390
391 2004-07-27  Martin Baulig  <martin@ximian.com>
392
393         * PEAPI.cs (CILInstructions.Offset): New public property.
394
395 2004-07-23  Jackson Harper  <jackson@ximian.com>
396
397         * PEAPI.cs: Make the type index modifiable so ClassRefInsts will
398         be emitted properly. This is in desperate need of some API love.
399         
400 2004-07-21  Jackson Harper  <jackson@ximian.com>
401
402         * PEAPI.cs: Do all the index size checks. I always wondered why
403         the code was like that and finally realized today that it was like
404         that because it was wrong. Wait until the opportune momement to
405         calculate the index sizes (after everything has been added to the
406         streams, and before writing anything).
407         
408 2004-07-21  Jackson Harper  <jackson@ximian.com>
409
410         * PEAPI.cs: Create ClassRefInsts with types not just
411         ClassRefs. This way modified types can be used. I am having alot
412         of trouble remembering why I actually even need this class though.
413         
414 2004-07-16  Jackson Harper  <jackson@ximian.com>
415
416         * PEAPI.cs: make sure small index sizes get set properly. Use a
417         continue to reduce nesting a little and make code almost mildly
418         readable. Add MDTable.Field to the list of tables that can
419         increase the CustomAttributeType shift. TODO: What else should be
420         here?
421         
422 2004-07-13  Jackson Harper  <jackson@ximian.com>
423
424         * PEAPI.cs: Use a byte array hash code provider and comprarer, so
425         checking the byte hashtable for duplicate entries actually
426         works. Old method was valid but created larger then needed binaries.
427         
428 2004-07-09  Jackson Harper  <jackson@ximian.com>
429
430         * PEAPI.cs: Don't build custom attributes twice.
431         
432 2004-07-08  Jackson Harper  <jackson@ximian.com>
433
434         * PEAPI.cs: Add custom attributes through the pefile so that we
435         can ensure they are emitted no matter what table they are
436         in. Previously not all custom attributes were getting emitted.
437         
438 2004-06-26  Jackson Harper  <jackson@ximian.com>
439
440         * PEAPI.cs: Add a method to set the fields list. This is needed so
441         that sequentially laid out fields are laid out in the right
442         order. When building custom attribute tables actually emit the
443         custom attribute data. When writing the .sdata section make sure
444         to pad to its size. The constants itself will not make up the
445         entire section because it is aligned on 512 byte blocks.
446         
447 2004-06-19  Jackson Harper  <jackson@ximian.com>
448
449         * PEAPI.cs: Make sure the sentinel is placed properly for vararg
450         method pointers.
451         
452 2004-06-19  Jackson Harper  <jackson@ximian.com>
453
454         * PEAPI.cs: Allow MethPtrTypes to be created from a signature
455         instead of from a method reference because it really doesn't make
456         sense to do it that way ;-).
457         
458 2004-06-14  Jackson Harper  <jackson@ximian.com>
459
460         * PEAPI.cs: Add IExternRef interface and modify sigs so it can be
461         used. So we can easily add stuff to modules and assemblies. Fix
462         the nometadata flag, it should be set when there is NO metadata
463         not when there is metadata.
464         
465 2004-06-14  Jackson Harper  <jackson@ximian.com>
466
467         * PEAPI.cs: Add new constructor so we can explicitly set the
468         module name.
469         
470 2004-06-03  Jackson Harper  <jackson@ximian.com>
471
472         * PEAPI.cs: Do not null terminate byte arrays when writing to the
473         blob stream.
474         
475 2004-05-25  Jackson Harper  <jackson@ximian.com>
476
477         * PEAPI.cs: When writing to the blob heap we always set a size.
478         
479 2004-05-25  Jackson Harper  <jackson@ximian.com>
480
481         * PEAPI.cs: Set the has default flag on fields when a default data
482         constant is assigned to them.
483         
484 2004-05-25  Jackson Harper  <jackson@ximian.com>
485
486         * PEAPI.cs: Encode string constants as unicode before putting them
487         in the blob.
488         
489 2004-05-25  Jackson Harper  <jackson@ximian.com>
490
491         * PEAPI.cs: zero RVAs for abstract, runtime, and internal call
492         methods.
493         
494 2004-04-30  Duncan Mak  <duncan@ximian.com>
495
496         * PEAPI.dll.sources: Added Assembly/AssemblyInfo.cs and 
497         Locale.cs to build.
498
499 2004-04-02  Jackson Harper  <jackson@ximian.com>
500
501         * PEAPI.cs: Allow hash algorithms to be any integer.
502         
503 2004-02-18  Jackson Harper <jackson@ximian.com>
504
505         * PEAPI.cs: Add a class for creating instances of class refs, this
506         is used for setting the class or valuetype of a types instance so the class
507         reference isn't modified. Allows things like 'valuetype [mscorlib]System.Object'.
508         
509 2003-11-18 Jackson Harper <jackson@ximian.com>
510
511         * PEAPI.cs: If the data length for a methods seh section is
512         greater then 255 use fat format headers.
513         
514 2003-11-17 Jackson Harper <jackson@ximian.com>
515
516         * PEAPI.cs: Allow strings to be loaded as bytearrays.
517         
518 2003-10-19 Jackson Harper <jackson@ximian.com>
519
520         * PEAPI.cs: Use bytes not bits for constant sizes.
521         
522 2003-10-18 Jackson Harper <jackson@ximian.com>
523
524         * PEAPI.cs: Add proper support for short instructions, removing
525         PEAPI's auto selection of short/long branch operations feature.
526         
527 2003-10-10 Jackson Harper <jackson@ximian.com>
528
529         * PEAPI.cs: New GenericMethodSig class for creating generic method
530         signatures. Use this class instead of GenericTypeInst for creating
531         generic methods. Fix Generic call conv. according to two of my
532         docs it is 0x10 and only one says 0x50 so I will go with 0x10.
533         
534 2003-10-09 Jackson Harper <jackson@ximian.com>
535
536         * PEAPI.cs: Add generic method Mvar type. Add MethodSpec table,
537         and an Api method for adding methods to the methodspec table.
538         
539 2003-10-08 Jackson Harper <jackson@ximian.com>
540
541         * PEAPI.cs: Remove some old hacks for adding methods to arrays,
542         typespecs are used for this now. Add Generic call conv.
543         
544 2003-10-08 Jackson Harper <jackson@ximian.com>
545
546         * PEAPI.cs: Remove methods for creating generic parameters without
547         a name, names are mandatory. Add method to add type parameters to
548         methods. Allow GenericParameters to have either a type or a
549         method as its owner. Also fix visibility of GenericParameters, a
550         GenericParameter should not be created outside of PEAPI.
551         
552 2003-10-07 Jackson Harper <jackson@ximian.com>
553
554         * PEAPI.cs: Add unbox.any instruction.
555         
556 2003-09-27 Jackson Harper <jackson@latitudegeo.com>
557
558         * PEAPI.cs: Fix pinvoke attributes, zero a methods RVA if it has
559         pinvoke info. This isn't entirely correct because native unmanaged
560         methods can have pinvoke info and not have 0 RVAs PEAPI can't
561         handle native unmanged code though. Expose the ModuleClass so
562         'global' items can be referenced like this '<Module>'::foo.
563         
564 2003-09-21 Jackson Harper <jackson@latitudegeo.com>
565
566         * PEAPI.cs: sigh, sometimes it is best to calculate variables
567         before using them. This fixes PEAPI creating broken images when
568         the sdata section is used.
569         
570 2003-09-20 Jackson Harper <jackson@latitudegeo.com>
571
572         * PEAPI.cs: Rework to allow multiple constraints to be added to a
573         single generic parameter.
574         
575 2003-08-19 Jackson Harper <jackson@latitudegeo.com>
576
577         * PEAPI.cs: Make no super method public so we can have types
578         with no super type.
579         
580 2003-08-03 Jackson Harper <jackson@latitudegeo.com>
581
582         * PEAPI.cs: New Sentinel type.
583         
584 2003-08-03 Jackson Harper <jackson@latitudegeo.com>
585
586         * PEAPI.cs: Only give method definitions 0 RVAs if they are
587         marked abstract.
588         
589 2003-08-03 Jackson Harper <jackson@latitudegeo.com>
590
591         * PEAPI.cs: Offsets are not explicit offsets, they are just
592         byte offsets from the current position.
593
594 2003-07-29 Jackson Harper <jackson@latitudegeo.com>
595
596         * PEAPI.cs: Allow labels to be created with an explicit offset
597         
598 Fri Jul 25 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
599
600         * PEAPI.cs: added coded index for the owner field in the GenericParam
601         table.
602
603 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
604
605         * PEAPI.cs: Add methods to PEFile to allow fields and methods to
606         be added to type specs. This fixing bah-zillions of little
607         problems in ilasm. We can now add fields and methods to arrays,
608         reference types, and most importantly generics.
609
610         Add the GenericTypeInst class. This is an instance of a generic
611         type. ie Hash<int32, string>. GenericTypeSpecs now write their id
612         number as a compressed number, this matches the way the runtime
613         loads them and will allow generic types to have more then 255 type
614         parameters.
615         
616 2003-07-17 Jackson Harper <jackson@latitudegeo.com>
617
618         * PEAPI.cs: Add GenericTypeSpec so generic members can be
619         referenced. Add the ldelem and stelem opcodes (these are part of
620         the new spec).
621         
622 2003-07-15 Jackson Harper <jackson@latitudegeo.com>
623
624         * PEAPI.cs: Allow generic constraints to be added, emit generic
625         constraints.
626                 
627 2003-07-14 Jackson Harper <jackson@latitudegeo.com>
628
629         * PEAPI.cs: Cleanup methods for generics, now that constraints and
630         params are seperated.
631                 
632 2003-05-31 Jackson Harper <jackson@latitudegeo.com>
633
634         * PEAPI.cs: Initial work on implementing custom
635         attributes. Attributes can now be added to ClassDefs and
636         MethodDefs. Still need to implement for other metadata elements.
637         Added the stele.r4 and stelem.r8 instructions, this should also
638         shift the stelem.ref instruction to the proper value (0xA2)
639                 
640 2003-05-25 Jackson Harper <jackson@latitudegeo.com>
641
642         * PEAPI.cs: Create a list of vararg signatures and add them all to
643         tables. this allows more then one vararg signature to be created
644         per method.
645                 
646 2003-05-18 Jackson Harper <jackson@latitudegeo.com>
647
648         * PEAPI.cs: Add methods to allow methods to be added to arrays.
649                 
650 2003-05-11 Jackson Harper <jackson@latitudegeo.com>
651
652         * PEAPI.cs: The class size in class layout metadata table is a
653         uint not a short.
654                 
655 2003-04-05 Jackson Harper <jackson@latitudegeo.com>
656
657         * PEAPI.cs: Add indexes to GenericParameters, make string index
658         always a full 4 bytes.
659                 
660 2003-04-05 Jackson Harper <jackson@latitudegeo.com>
661
662         * PEAPI.cs: Add GenericParameter table, and method to add generic
663         parameters.
664                 
665 2003-03-15 Daniel Morgan <danmorg@sc.rr.com>
666
667         * PEAPI.build: added file for windows build
668
669 2003-03-06 Jackson Harper <jackson@latitudegeo.com>
670
671         * PEAPI.cs: (ImplAttr) Add Optil implementation flag (not supported 
672         in first release of CLR)
673         (Class) And Name property
674
675 2003-03-06 Jackson Harper <jackson@latitudegeo.com>
676
677         * makefile.gnu: Add file
678         * list.unix: Add file
679
680 2003-03-02 Jackson Harper <jackson@latitudegeo.com>
681
682         * PEAPI.cs: Do not add file extensions to output names
683         
684 2003-03-02 Jackson Harper <jackson@latitudegeo.com>
685
686         * PEAPI.cs: Add file
687         * README.txt: Add file