2010-03-02 Jb Evain <jbevain@novell.com>
[mcs.git] / tools / linker / ChangeLog
blob2c185b04d091e4111376d3c24558434e7e8ab3b3
1 2010-03-02  Jb Evain  <jbevain@novell.com>
3         Merge the MonoTouch Linker branch.
5         * Mono.Linker/LinkContext.cs:
6                 Allow creation with a custom resolver.
8         * Mono.Linker/AssemblyResolver.cs:
9                 Allow creation with a custom assembly cache.
11         * Mono.Linker.Steps/ResolveFromAssemblyStep.cs:
12                 - Mark fields for copied assemblied.
13                 - Now can take an assembly directly.
15         * Mono.Linker.Steps/SweepStep.cs
16         * Mono.Linker.Steps/CleanStep.cs:
17                 Optimizations.
19 2010-02-01  Jb Evain  <jbevain@novell.com>
21         * MarkStep.cs: SoapHeader can either take a field or a property.
23 2010-01-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
25         * Makefile: Fetch Mono.Cecil.dll from whatever profile we happen to be
26         building in.
28 2010-01-14  Jb Evain  <jbevain@novell.com>
30         * MarkStep.cs: preserve fields specified by the
31         SoapHeader attribute.
33 2010-01-13  Jb Evain  <jbevain@novell.com>
35         * MarkStep.cs: preserve methods specified by the
36         XmlSchemaProvider attribute.
38 2010-01-06  Jb Evain  <jbevain@novell.com>
40         * Descriptors/mscorlib.xml: optimize descriptor.
42 2009-11-23  Jb Evain  <jbevain@novell.com>
44         * Descriptors/mscorlib.xml: protect the InternalThread class.
45         Fixes #555871.
47 2009-11-02  Jb Evain  <jbevain@novell.com>
49         Merge the MonoTouch Linker branch.
51         * monolinker.exe.sources: update
53         * Mono.Linker/Annotations.cs:
54                 - add an preserved methods annotation on a type.
55                 - add an annotation to get the base methods of a method.
56                 - add an annotation to get the overriden method of a method.
58         * Mono.Linker/AssemblyAction.cs:
59                 add a Delete action to remove an assembly from the output set.
61         * Mono.Linker.Steps/TypeMapStep.cs:
62                 new step that create a map of virtual methods implementation.
64         * Mono.Linker.Steps/MarkStep.cs:
65                 - removal of virtual methods.
66                 - fix for custom attributes assigning properties and field
67                         defined in a base type.
68                 - mark scopes.
69                 - mark default constructors of types used as a generic instance
70                         of a generic parameter constrained with new().
71                 - apply preserved methods.
73         * Mono.Linker.Steps/SweepStep.cs: remove unused assemblies.
75         * Mono.Linker.Steps/LoadI18nAssemblies.cs:
76                 fix linking of i18n assemblies.
78         * Mono.Linker.Steps/OutputStep.cs:
79                 fix the copied assemblies when the output directory
80                 is the same as the origin of the assemblies.
82         * Mono.Linker.Steps/ResolveFromXmlStep.cs
83         * Mono.Linker.Steps/ResolveFromAssemblyStep.cs
84         * Mono.Linker.Steps/BaseStep.cs
85         * Mono.Linker/Driver.cs
86         * Mono.Linker/Pipeline.cs:
87                 Cosmetics.
89 2009-09-10  Andrés G. Aragoneses  <aaragoneses@novell.com>
91         * Mono.Linker.Steps/MarkStep.cs: Make IgnoreScope() virtual to
92           prevent marking custom attributes of foreign assemblies in a
93           derived step in the tuner. ( r: jb )
95 2009-09-09  Andrés G. Aragoneses  <aaragoneses@novell.com>
97         * Mono.Linker.Steps/MarkStep.cs: Visibility changes needed by
98           the need of some new tuner step to redefine or call some
99           methods.
101 2009-07-02  Jb Evain  <jbevain@novell.com>
103         * Makefile: fix cecil's location.
105 2009-06-09  Andrés G. Aragoneses  <aaragoneses@novell.com>
107         * Mono.Linker.Steps/BaseStep.cs: New virtual API needed.
109         * Mono.Linker/Pipeline.cs: API love.
111 2009-06-09  Andrés G. Aragoneses  <aaragoneses@novell.com>
113         * Mono.Linker.csproj: Update.
115         * Mono.Linker/Driver.cs: Prevent InvalidCastException.
117 2009-06-05  Jb Evain  <jbevain@novell.com>
119         * Mono.Linker.Steps/MarkStep.cs: fix a nre.
120         Based on patch by Andres G. Aragoneses  <aaragoneses@novell.com>.
122 2009-06-05  Jb Evain  <jbevain@novell.com>
124         * Mono.Linker.Steps/ResolveFromXmlStep.cs: more ways of choosing fields.
126 2009-06-05  Jb Evain  <jbevain@novell.com>
128         * Mono.Linker.Steps/ResolveFromXmlStep.cs: give us more
129         possibilities to detail the xml descriptors.
131 2009-06-04  Jb Evain  <jbevain@novell.com>
133         * Mono.Linker.Steps/ResolveFromXmlStep.cs: fix handling
134         of wildcards constructors.
136 2009-04-23  Andrés G. Aragoneses  <aaragoneses@novell.com>
138         * Mono.Linker/Driver.cs: Report error and exit if it cannot
139           resolve some type (useful to avoid an ugly TypeLoadException
140           when specifying an erroneus custom step).
142 2009-04-21  Andrés G. Aragoneses  <aaragoneses@novell.com>
144         * Driver.cs: Postprocess custom steps in order to make them
145         able to find steps determined by the resolve method. Fixes
146         #493702.
148 2009-04-08  Andrés G. Aragoneses  <aaragoneses@novell.com>
150         * Mono.Linker.csproj: Update.
152 2009-02-18  Jb Evain  <jbevain@novell.com>
154         * Mono.Linker/XApiService.cs: delete, unused.
155         * Mono.Linker/Driver.cs: don't use the uneeded XApiService anymore.
157 2009-01-28  Jb Evain  <jbevain@novell.com>
159         * Mono.Linker/AssemblyResolver.cs
160           Mono.Linker.Steps/MarkStep.cs:
161                 Directly use the Resolve methods from Cecil.
163 2008-12-16  Jb Evain  <jbevain@novell.com>
165         * Makefile: build monolinker.exe in the profile directory instead of
166         the current one.
168 2008-12-02  Jb Evain  <jbevain@novell.com>
170         * Mono.Linker/AssemblyResolver.cs (AreSame(TypeReference,TypeReference):
171         fix the case where we compare two GenericInstanceType of the same
172         element type with different generic arguments.
174 2008-11-24  Jb Evain  <jbevain@novell.com>
176         * Mono.Linker.Steps/ResolveFromAssemblyStep.cs
177         * Mono.Linker.Steps/ResolveFromXmlStep.cs
178         * Mono.Linker.Steps/MarkStep.cs:
179                 generalize the use of the new Has* pattern in Cecil
180                 to avoid unecessary allocations. Also cache delegates.
182 2008-09-12  Jb Evain  <jbevain@novell.com>
184         * Mono.Linker/Pipeline.cs: add a RemoveStep method.
185         * Mono.Linker/Driver.cs: make the linker generate new
186         module guids by default.
188 2008-09-12  Jb Evain  <jbevain@novell.com>
190         * Mono.Linker.Steps/RegenerateGuidStep.cs: new step that is used
191         to regenerate the Mvid identifier of each linked module.
193         * monolinker.exe.sources:
194         * Mono.Linker.csproj: add RegeneratedGuidStep to the build.
196         * Mono.Linker/Driver.cs: add a -g option to control whether to
197         regenerate the modules identifier or not.
199 2008-09-01  Jb Evain  <jbevain@novell.com>
201         * Mono.Linker/AssemblyResolver.cs: properly cache .exes.
203 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
205         * Descriptors/mscorlib.xml: Add EntryPointNotFoundException.
207 2008-03-28  Jb Evain  <jbevain@novell.com>
209         * Mono.Linker/XApiReader.cs: deal better with complex names.
211 2008-03-28  Jb Evain  <jbevain@novell.com>
213         * Mono.Linker/LinkContext.cs: do not force the loading of
214         debug symbols if not asked.
216 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
218         * Descriptors/mscorlib.xml: Preserve all for CultureInfo to prevent
219         linker from removing CreateCulture method that is only used by the
220         runtime.
222 2007-11-21  Jb Evain  <jbevain@novell.com>
224         * Mono.Linker.Steps/ResolveFromXmlStep.cs:
225                 Implement resolving from xml patterns.
227 2007-10-25  Jb Evain  <jbevain@novell.com>
229         * monolinker.exe.sources
230         * Mono.Linker.Steps/ResolveFromApiInfoStep.cs
231         * Mono.Linker/Driver.cs
232         * Mono.Linker/XApiReader.cs
233         * Mono.Linker/ApiInfoService.cs
234         * Mono.Linker/IXApiVisitor.cs:
236                 Big refactoring. Move logic to read Xml Api Info files
237                 to XApiReader, so we can use that in the tuner to deal
238                 with xapi files to inject attributes.
240 2007-08-27  Jb Evain  <jbevain@novell.com>
242         * Mono.Linker/Driver.cs
243           Mono.Linker/Annotations.cs
244           Mono.Linker/LinkContext.cs
245           Mono.Linker.Steps/OutputStep.cs:
246                 Implement symbols loading/saving.
248 2007-08-16  Jb Evain  <jbevain@novell.com>
250         * Mono.Linker/Driver.cs
251           Mono.Linker/LinkContext.cs:
252                 Add a way to specify parameters to the context.
254 2007-08-05  Jb Evain  <jbevain@novell.com>
256         * Mono.Linker.Steps/ResolveFromXmlStep.cs:
257                 Now the resolver deals only with assembly names
258                 instead of fullnames.
260 2007-07-25  Jb Evain  <jbevain@novell.com>
262         * Mono.Linker.Steps/ResolveFromAssemblyStep.cs:
263                 When linking from an executable, it's possible
264                 to reduce the executable as well.
266 2007-07-23  Jb Evain  <jbevain@novell.com>
268         * Mono.Linker/Driver.cs
269           Mono.Linker/LinkContext.cs:
270                 Allow one to specify the action to apply to an assembly
271                 from the command line.
273 2007-07-22  Jb Evain  <jbevain@novell.com>
275         * Mono.Linker/LinkContext.cs:
276                 If no file found with -a, try to resolve it.
278         * Mono.Linker/Driver.cs
279           Mono.Linker/Pipeline.cs:
280                 Adjust the visibility only once, even with multiple -i.
282 2007-07-21  Jb Evain  <jbevain@novell.com>
284         * Mono.Linker.Steps/SweepStep.cs:
285                 Sweep memberrefs along with the typerefs.
287 2007-07-20  Jb Evain  <jbevain@novell.com>
289         * Mono.Linker.Steps/AdjustVisibilityStep.cs:
290                 Don't change the visibility of the members if the type
291                 is marked internal.
293 2007-07-18  Jb Evain  <jbevain@novell.com>
295         * Mono.Linker/ResolutionException.cs:
296           Mono.Linker.Steps/MarkStep.cs:
297                 Throw a resolution exception when a metadata item
298                 can not be resolved in external assemblies.
300         * Mono.Linker/AssemblyResolver.cs:
301                 Use the assembly name only as a key for the
302                 assembly cache.
304 2007-07-05  Jb Evain  <jbevain@novell.com>
306         * Mono.Linker/Driver.cs
307           Mono.Linker/Pipeline.cs:
308                 Add a way to install steps in the pipeline
309                 from the outside.
311 2007-07-03  Jb Evain  <jbevain@novell.com>
313         * Mono.Linker/Driver.cs:
314                 Add support for @files
316         * Mono.Linker/Driver.cs:
317                 Add a way to add search directories to the resolver.
319 2007-06-18  Jb Evain  <jbevain@novell.com>
321         * Mono.Linker.Steps/MarkStep.cs:
322                 Mark generic parameter constraints.
324         * Mono.Linker.Steps/MarkStep.cs:
325                 Mark modifiers of modtype.
327 2007-06-15  Jb Evain  <jbevain@novell.com>
329         * Mono.Linker/Driver.cs,
330           Mono.Linker/I18nAssemblies.cs,
331           Mono.Linker.Steps/LoadI18nAssemblies.cs:
332                 Copy the i18n assemblies when running Mono.
334         * Mono.Linker/CustomResolver.cs => AssemblyResolver.cs,
335           Mono.Linker/Annotations.cs,
336           Mono.Linker/LinkContext.cs,
337           Mono.Linker.Steps/ResolveFromXmlStep.cs:
338                 Clean up the assembly reference system.
339                 Fixes bug where the linker have multiple
340                 time the same assembly in its cache.
342 2007-06-13  Jb Evain  <jbevain@novell.com>
344         * Mono.Linker.Steps/OutputStep.cs:
345                 Copy .config files alongs with assemblies.
347         * Mono.Linker.Steps/CleanStep.cs:
348                 Clean memberref that are not used anymore.
350 2007-06-12  Jb Evain  <jbevain@novell.com>
352         * Mono.Linker.Steps/AdjustVisibilityStep.cs,
353           Mono.Linker.Steps/ResolveFromApiInfoStep.cs,
354           Mono.Linker/Drivers.cs:
355                 Adjust the visibility depending on the data
356                 gathered in the api-info.
358         * Mono.Linker.Steps/ResolveFromApiInfoStep.cs:
359           Mono.Linker/Driver.cs:
360                 Started working on linking from api-info.
362 2007-06-08  Jb Evain  <jbevain@novell.com>
364         * Descriptors/System.Drawing.xml,
365           Mono.Linker.Steps/BlackListStep.cs:
366                 Add preserve infos for System.Drawing.
368         * Mono.Linker.Steps/MarkStep.cs:
369           Tests/TestsCases/Linker/Generics/*:
370                 Also walk through generic instances to
371                 mark arguments.
373 2007-06-07  Jb Evain  <jbevain@novell.com>
375         * Mono.Linker.Steps/MarkStep.cs:
376                 Mark types used in some marshal specs.
378         * Mono.Linker.Tests/MarkStep.cs
379           Tests/Mono.Linker.Tests/XmlLinkingTestFixture.cs
380           Tests/TestCases/Linker/ReferenceInAttributes/*:
381                 Mark fields and setters used in custom attribute
382                 instantiation. Mark also types used in custom attribute
383                 instantiation.
385         * profiler/Makefile,
386           profiler/link.c:
387                 Add a small profiler that outputs the xml format
388                 that the linker can resolve.
390                 By running an application with the profiler, one
391                 can help the linker gather data. Especially for dynamic
392                 cases like assembly loading an dynamic type resolving.
394 2007-06-06  Jb Evain  <jbevain@novell.com>
396         * Mono.Linker.Steps/MarkStep.cs:
397           Mono.Linker/CustomResolvercs:
398                 Try to find types in custom attributes to mark them.
400         * Mono.Linker.Steps/MarkStep.cs:
401                 Mark default constructor for serializable types.
402                 Mark the special serialization constructor as well.
404         * Mono.Linker/LinkContext.cs:
405           Mono.Linker.Steps/LoadReferences.cs:
406                 Use the name of the assembly as a key
407                 instead of the fullname.
409         * Mono.Linker/CustomResolver.cs:
410                 When a method is not found, go down
411                 the class hierarchy to find it.
413 2007-06-05  Jb Evain  <jbevain@novell.com>
415         * Tests/Mono.Linker.Tests/IntegrationTestFixture.cs:
416           Tests/TestCases/Integration/*
417           Tests/Makefile:
418                 Start the integration tests.
420 2007-06-04  Jb Evain  <jbevain@novell.com>
422         * Mono.Linker.Steps/MarkStep.cs
423                 Mark the custom attributes on the assemblies
424                 on initialize.
426         * Mono.Linker.Steps/ResolveFromXmlStep.cs
427           Descriptors/corlib.xml:
428                 Preserve the whole S.S.Crypto namespace.
430         * rename back from mink to monolinker.
432 2007-06-01  Jb Evain  <jbevain@novell.com>
434         * configure, config.make, mink.in: added
436         * AUTHORS, MIT.X11, man/mink.1: added
438 2007-05-31  Jb Evain  <jbevain@novell.com>
440         * README: added
441           monolinker.exe.sources: moved to mink.exe.sources
442           Makefile, Mono.Linker.csproj: emit a mink.exe
444         * Mono.Linker/LinkContext.cs:
445                 A resolved assembly is not always the one requested,
446                 cache the good name.
448         * Tests/Mono.Linker.Tests/AbstractLinkingTestFixture.cs
449           Mono.Linker.Steps/OutputStep.cs
450           Mono.Linker.Steps/LoadReferencesStep.cs
451           Mono.Linker.Steps/CleanStep.cs
452           Mono.Linker.Steps/ResolveFromAssemblyStep.cs
453           Mono.Linker.Steps/SweepStep.cs
454           Mono.Linker.Steps/BlacklistStep.cs
455           Mono.Linker.Steps/MarkStep.cs
456           Mono.Linker.Steps/BaseStep.cs
457           Mono.Linker.csproj
458           Mono.Linker/Driver.cs:
459                 Add a new abstract BaseStep to be extends by most
460                 of the steps.
461                 Add a new LoadReferences step to force all referenced
462                 assemblies to be resolved before the mark step.
464         * Mono.Linker/CustomResolver.cs
465           Mono.Linker/LinkContext.cs:
466                 Register entry assembly.
468 2007-05-30  Jb Evain  <jbevain@novell.com>
470         * Mono.Linker/MarkStep.cs:
471                 Fix regression: do not mark GenericParameters that are
472                 part of a typespec, like T[] or T*.
474 2007-05-28  Jb Evain  <jbevain@novell.com>
476         * Big refactoring. Get rid of the markers, use the annotations
477                 of Cecil instead.
479         * Mono.Linker/Marker.cs
480           Mono.Linker/MarkStep.cs
481           Mono.Linker/SweepStep.cs:
482                 Use annotations to mark wether or not we should
483                 sweep an item.
485 2007-05-23  Jb Evain  <jbevain@novell.com>
487         * Mono.Limker/CleanStep.cs:
488                 Stop doing hackish stupid things because
489                 Cecil suddenly handles MemberRef much better.
491 2007-05-19  Jb Evain  <jb@nurv.fr>
493         * Mono.Linker/ResolveFromXmlStep.cs
494           Mono.Linker/AssemblyMarker.cs
495           Mono.Linker/MarkStep.cs
496           Mono.Linker/ResolveFromAssemblyStep.cs:
497                 Process correctly the marker selected in the resolve phases.
499 2007-05-17  Jb Evain  <jb@nurv.fr>
501         * Mono.Linker/CleanStep.cs
502           Mono.Linker/SweepStep.cs
503           Mono.Linker/MarkStep.cs:
504                 Link only when necessary.
506         * Tests/Mono.Linker.Tests/AbstractLinkingTestFixture.cs
507           Tests/Mono.Linker.Tests/AbstractTestFixture.cs
508           Mono.Linker.csproj
509           Mono.Linker/ResolveFromXmlStep.cs
510           Mono.Linker/AssemblyMarker.cs
511           Mono.Linker/Marker.cs
512           Mono.Linker/MarkStep.cs
513           Mono.Linker/TypePreserve.cs
514           Mono.Linker/Pipeline.cs:
515                 Deal with preserve and required infos, make last test pass.
517         * Tests/Mono.Linker.Tests/XmlLinkingTestFixture.cs
518           Tests/Mono.Linker.Tests/AbstractLinkingTestFixture.cs
519           Tests/TestCases/Linker/PreserveFieldsRequired
520           Tests/TestCases/Linker/PreserveFieldsRequired/Library.cs
521           Tests/TestCases/Linker/PreserveFieldsRequired/desc.xml
522           Tests/TestCases/Linker/PreserveFieldsRequired/Makefile
523           Tests/TestCases/Linker/PreserveFieldsRequired/Library.dll:
524                 Add a new (failing for now) test case for preserve and required.
526 2007-05-16  Jb Evain  <jb@nurv.fr>
528         * Tests/Mono.Linker.Tests/AbstractTestFixture.cs
529           Mono.Linker.csproj
530           Mono.Linker/CoreAction.cs
531           Mono.Linker/Driver.cs
532           Mono.Linker/LinkContext.cs:
533                 Simplify the command line options.
535         * Tests/Mono.Linker.Tests/AbstractTestFixture.cs
536           Mono.Linker.csproj
537           Mono.Linker/CleanStep.cs
538           Mono.Linker/ResolveFromXmlStep.cs
539           Mono.Linker/Driver.cs
540           Mono.Linker/OutputStep.cs
541           Mono.Linker/ResolveFromAssemblyStep.cs
542           Mono.Linker/LinkContext.cs
543           Mono.Linker/BlacklistStep.cs
544           Mono.Linker/Pipeline.cs:
545                 Working on black list support.
547         * Descriptors/corlib.xml
548           Descriptors/system.xml
549           Descriptors/system.web.xml:
550                 First audit of the core.
552 2007-04-23  Jb Evain  <jb@nurv.fr>
554         * Mono.Linker/CleanStep.cs:
555                 Clean some special cases of MemberRef.
557 2007-03-19  Jb Evain  <jbevain@gmail.com>
559         * Fix a bug when an assembly references two
560         versions of an assembly with the same name.
561         * do some refactorings
563 2007-03-16  Jb Evain  <jbevain@gmail.com>
565         * rename linker.exe to monolinker.exe
567 2006-11-08  Jb Evain  <jbevain@gmail.com>
569         * Mono.Linker/AssemblyMarker.cs:
570                 Fix a bug in method resolution.
571         * Mono.Linker/Driver.cs:
572                 Fix a bug in assembly action processing.
574 2006-11-02  Jb Evain  <jbevain@gmail.com>
576         * check-in patches adapted from contributions by:
577                 Alex Prudkiy <prudkiy@mail.ru>
579 2006-08-21  Jb Evain  <jbevain@gmail.com>
581         * mark types used within the runtime
583 2006-08-20  Jb Evain  <jbevain@gmail.com>
585         * mark the custom attributes from the assemblies, modules and
586                 generic parameters
588         * mark the methods used by an event
590         * mark the custom attributes on the properties and the events
591                 which are used.
593         * preserve the fields of the value types
595         * clean also nested types in a proper way.
597         * clean events as well
599 2006-08-17  Jb Evain  <jbevain@gmail.com>
601         * provide a Makefile
603 2006-08-16  Jb Evain  <jbevain@gmail.com>
605         * work on generics assemblies linking
607         * use the resolver from Cecil.
609         * when marking a type, also mark its virtual methods
611 2006-08-15  Jb Evain  <jbevain@gmail.com>
613         * clean properties
615         * mark interfaces as well
617         * work in progress + unit tests.
619 2006-07-27  Jb Evain  <jbevain@gmail.com>
621         * begin work on the sweep step.
623 2006-07-20  Jb Evain  <jbevain@gmail.com>
625         * very first commit.
626           draft implementation of the mark phase of the linker.