2009-11-23 Jb Evain <jbevain@novell.com>
[mcs.git] / tools / linker / ChangeLog
blob1a13f63634d7aaeef56ba6f2499f62287420a1a5
1 2009-11-23  Jb Evain  <jbevain@novell.com>
3         * Descriptors/mscorlib.xml: protect the InternalThread class.
4         Fixes #555871.
6 2009-11-02  Jb Evain  <jbevain@novell.com>
8         Merge the MonoTouch Linker branch.
10         * monolinker.exe.sources: update
12         * Mono.Linker/Annotations.cs:
13                 - add an preserved methods annotation on a type.
14                 - add an annotation to get the base methods of a method.
15                 - add an annotation to get the overriden method of a method.
17         * Mono.Linker/AssemblyAction.cs:
18                 add a Delete action to remove an assembly from the output set.
20         * Mono.Linker.Steps/TypeMapStep.cs:
21                 new step that create a map of virtual methods implementation.
23         * Mono.Linker.Steps/MarkStep.cs:
24                 - removal of virtual methods.
25                 - fix for custom attributes assigning properties and field
26                         defined in a base type.
27                 - mark scopes.
28                 - mark default constructors of types used as a generic instance
29                         of a generic parameter constrained with new().
30                 - apply preserved methods.
32         * Mono.Linker.Steps/SweepStep.cs: remove unused assemblies.
34         * Mono.Linker.Steps/LoadI18nAssemblies.cs:
35                 fix linking of i18n assemblies.
37         * Mono.Linker.Steps/OutputStep.cs:
38                 fix the copied assemblies when the output directory
39                 is the same as the origin of the assemblies.
41         * Mono.Linker.Steps/ResolveFromXmlStep.cs
42         * Mono.Linker.Steps/ResolveFromAssemblyStep.cs
43         * Mono.Linker.Steps/BaseStep.cs
44         * Mono.Linker/Driver.cs
45         * Mono.Linker/Pipeline.cs:
46                 Cosmetics.
48 2009-09-10  Andrés G. Aragoneses  <aaragoneses@novell.com>
50         * Mono.Linker.Steps/MarkStep.cs: Make IgnoreScope() virtual to
51           prevent marking custom attributes of foreign assemblies in a
52           derived step in the tuner. ( r: jb )
54 2009-09-09  Andrés G. Aragoneses  <aaragoneses@novell.com>
56         * Mono.Linker.Steps/MarkStep.cs: Visibility changes needed by
57           the need of some new tuner step to redefine or call some
58           methods.
60 2009-07-02  Jb Evain  <jbevain@novell.com>
62         * Makefile: fix cecil's location.
64 2009-06-09  Andrés G. Aragoneses  <aaragoneses@novell.com>
66         * Mono.Linker.Steps/BaseStep.cs: New virtual API needed.
68         * Mono.Linker/Pipeline.cs: API love.
70 2009-06-09  Andrés G. Aragoneses  <aaragoneses@novell.com>
72         * Mono.Linker.csproj: Update.
74         * Mono.Linker/Driver.cs: Prevent InvalidCastException.
76 2009-06-05  Jb Evain  <jbevain@novell.com>
78         * Mono.Linker.Steps/MarkStep.cs: fix a nre.
79         Based on patch by Andres G. Aragoneses  <aaragoneses@novell.com>.
81 2009-06-05  Jb Evain  <jbevain@novell.com>
83         * Mono.Linker.Steps/ResolveFromXmlStep.cs: more ways of choosing fields.
85 2009-06-05  Jb Evain  <jbevain@novell.com>
87         * Mono.Linker.Steps/ResolveFromXmlStep.cs: give us more
88         possibilities to detail the xml descriptors.
90 2009-06-04  Jb Evain  <jbevain@novell.com>
92         * Mono.Linker.Steps/ResolveFromXmlStep.cs: fix handling
93         of wildcards constructors.
95 2009-04-23  Andrés G. Aragoneses  <aaragoneses@novell.com>
97         * Mono.Linker/Driver.cs: Report error and exit if it cannot
98           resolve some type (useful to avoid an ugly TypeLoadException
99           when specifying an erroneus custom step).
101 2009-04-21  Andrés G. Aragoneses  <aaragoneses@novell.com>
103         * Driver.cs: Postprocess custom steps in order to make them
104         able to find steps determined by the resolve method. Fixes
105         #493702.
107 2009-04-08  Andrés G. Aragoneses  <aaragoneses@novell.com>
109         * Mono.Linker.csproj: Update.
111 2009-02-18  Jb Evain  <jbevain@novell.com>
113         * Mono.Linker/XApiService.cs: delete, unused.
114         * Mono.Linker/Driver.cs: don't use the uneeded XApiService anymore.
116 2009-01-28  Jb Evain  <jbevain@novell.com>
118         * Mono.Linker/AssemblyResolver.cs
119           Mono.Linker.Steps/MarkStep.cs:
120                 Directly use the Resolve methods from Cecil.
122 2008-12-16  Jb Evain  <jbevain@novell.com>
124         * Makefile: build monolinker.exe in the profile directory instead of
125         the current one.
127 2008-12-02  Jb Evain  <jbevain@novell.com>
129         * Mono.Linker/AssemblyResolver.cs (AreSame(TypeReference,TypeReference):
130         fix the case where we compare two GenericInstanceType of the same
131         element type with different generic arguments.
133 2008-11-24  Jb Evain  <jbevain@novell.com>
135         * Mono.Linker.Steps/ResolveFromAssemblyStep.cs
136         * Mono.Linker.Steps/ResolveFromXmlStep.cs
137         * Mono.Linker.Steps/MarkStep.cs:
138                 generalize the use of the new Has* pattern in Cecil
139                 to avoid unecessary allocations. Also cache delegates.
141 2008-09-12  Jb Evain  <jbevain@novell.com>
143         * Mono.Linker/Pipeline.cs: add a RemoveStep method.
144         * Mono.Linker/Driver.cs: make the linker generate new
145         module guids by default.
147 2008-09-12  Jb Evain  <jbevain@novell.com>
149         * Mono.Linker.Steps/RegenerateGuidStep.cs: new step that is used
150         to regenerate the Mvid identifier of each linked module.
152         * monolinker.exe.sources:
153         * Mono.Linker.csproj: add RegeneratedGuidStep to the build.
155         * Mono.Linker/Driver.cs: add a -g option to control whether to
156         regenerate the modules identifier or not.
158 2008-09-01  Jb Evain  <jbevain@novell.com>
160         * Mono.Linker/AssemblyResolver.cs: properly cache .exes.
162 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
164         * Descriptors/mscorlib.xml: Add EntryPointNotFoundException.
166 2008-03-28  Jb Evain  <jbevain@novell.com>
168         * Mono.Linker/XApiReader.cs: deal better with complex names.
170 2008-03-28  Jb Evain  <jbevain@novell.com>
172         * Mono.Linker/LinkContext.cs: do not force the loading of
173         debug symbols if not asked.
175 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
177         * Descriptors/mscorlib.xml: Preserve all for CultureInfo to prevent
178         linker from removing CreateCulture method that is only used by the
179         runtime.
181 2007-11-21  Jb Evain  <jbevain@novell.com>
183         * Mono.Linker.Steps/ResolveFromXmlStep.cs:
184                 Implement resolving from xml patterns.
186 2007-10-25  Jb Evain  <jbevain@novell.com>
188         * monolinker.exe.sources
189         * Mono.Linker.Steps/ResolveFromApiInfoStep.cs
190         * Mono.Linker/Driver.cs
191         * Mono.Linker/XApiReader.cs
192         * Mono.Linker/ApiInfoService.cs
193         * Mono.Linker/IXApiVisitor.cs:
195                 Big refactoring. Move logic to read Xml Api Info files
196                 to XApiReader, so we can use that in the tuner to deal
197                 with xapi files to inject attributes.
199 2007-08-27  Jb Evain  <jbevain@novell.com>
201         * Mono.Linker/Driver.cs
202           Mono.Linker/Annotations.cs
203           Mono.Linker/LinkContext.cs
204           Mono.Linker.Steps/OutputStep.cs:
205                 Implement symbols loading/saving.
207 2007-08-16  Jb Evain  <jbevain@novell.com>
209         * Mono.Linker/Driver.cs
210           Mono.Linker/LinkContext.cs:
211                 Add a way to specify parameters to the context.
213 2007-08-05  Jb Evain  <jbevain@novell.com>
215         * Mono.Linker.Steps/ResolveFromXmlStep.cs:
216                 Now the resolver deals only with assembly names
217                 instead of fullnames.
219 2007-07-25  Jb Evain  <jbevain@novell.com>
221         * Mono.Linker.Steps/ResolveFromAssemblyStep.cs:
222                 When linking from an executable, it's possible
223                 to reduce the executable as well.
225 2007-07-23  Jb Evain  <jbevain@novell.com>
227         * Mono.Linker/Driver.cs
228           Mono.Linker/LinkContext.cs:
229                 Allow one to specify the action to apply to an assembly
230                 from the command line.
232 2007-07-22  Jb Evain  <jbevain@novell.com>
234         * Mono.Linker/LinkContext.cs:
235                 If no file found with -a, try to resolve it.
237         * Mono.Linker/Driver.cs
238           Mono.Linker/Pipeline.cs:
239                 Adjust the visibility only once, even with multiple -i.
241 2007-07-21  Jb Evain  <jbevain@novell.com>
243         * Mono.Linker.Steps/SweepStep.cs:
244                 Sweep memberrefs along with the typerefs.
246 2007-07-20  Jb Evain  <jbevain@novell.com>
248         * Mono.Linker.Steps/AdjustVisibilityStep.cs:
249                 Don't change the visibility of the members if the type
250                 is marked internal.
252 2007-07-18  Jb Evain  <jbevain@novell.com>
254         * Mono.Linker/ResolutionException.cs:
255           Mono.Linker.Steps/MarkStep.cs:
256                 Throw a resolution exception when a metadata item
257                 can not be resolved in external assemblies.
259         * Mono.Linker/AssemblyResolver.cs:
260                 Use the assembly name only as a key for the
261                 assembly cache.
263 2007-07-05  Jb Evain  <jbevain@novell.com>
265         * Mono.Linker/Driver.cs
266           Mono.Linker/Pipeline.cs:
267                 Add a way to install steps in the pipeline
268                 from the outside.
270 2007-07-03  Jb Evain  <jbevain@novell.com>
272         * Mono.Linker/Driver.cs:
273                 Add support for @files
275         * Mono.Linker/Driver.cs:
276                 Add a way to add search directories to the resolver.
278 2007-06-18  Jb Evain  <jbevain@novell.com>
280         * Mono.Linker.Steps/MarkStep.cs:
281                 Mark generic parameter constraints.
283         * Mono.Linker.Steps/MarkStep.cs:
284                 Mark modifiers of modtype.
286 2007-06-15  Jb Evain  <jbevain@novell.com>
288         * Mono.Linker/Driver.cs,
289           Mono.Linker/I18nAssemblies.cs,
290           Mono.Linker.Steps/LoadI18nAssemblies.cs:
291                 Copy the i18n assemblies when running Mono.
293         * Mono.Linker/CustomResolver.cs => AssemblyResolver.cs,
294           Mono.Linker/Annotations.cs,
295           Mono.Linker/LinkContext.cs,
296           Mono.Linker.Steps/ResolveFromXmlStep.cs:
297                 Clean up the assembly reference system.
298                 Fixes bug where the linker have multiple
299                 time the same assembly in its cache.
301 2007-06-13  Jb Evain  <jbevain@novell.com>
303         * Mono.Linker.Steps/OutputStep.cs:
304                 Copy .config files alongs with assemblies.
306         * Mono.Linker.Steps/CleanStep.cs:
307                 Clean memberref that are not used anymore.
309 2007-06-12  Jb Evain  <jbevain@novell.com>
311         * Mono.Linker.Steps/AdjustVisibilityStep.cs,
312           Mono.Linker.Steps/ResolveFromApiInfoStep.cs,
313           Mono.Linker/Drivers.cs:
314                 Adjust the visibility depending on the data
315                 gathered in the api-info.
317         * Mono.Linker.Steps/ResolveFromApiInfoStep.cs:
318           Mono.Linker/Driver.cs:
319                 Started working on linking from api-info.
321 2007-06-08  Jb Evain  <jbevain@novell.com>
323         * Descriptors/System.Drawing.xml,
324           Mono.Linker.Steps/BlackListStep.cs:
325                 Add preserve infos for System.Drawing.
327         * Mono.Linker.Steps/MarkStep.cs:
328           Tests/TestsCases/Linker/Generics/*:
329                 Also walk through generic instances to
330                 mark arguments.
332 2007-06-07  Jb Evain  <jbevain@novell.com>
334         * Mono.Linker.Steps/MarkStep.cs:
335                 Mark types used in some marshal specs.
337         * Mono.Linker.Tests/MarkStep.cs
338           Tests/Mono.Linker.Tests/XmlLinkingTestFixture.cs
339           Tests/TestCases/Linker/ReferenceInAttributes/*:
340                 Mark fields and setters used in custom attribute
341                 instantiation. Mark also types used in custom attribute
342                 instantiation.
344         * profiler/Makefile,
345           profiler/link.c:
346                 Add a small profiler that outputs the xml format
347                 that the linker can resolve.
349                 By running an application with the profiler, one
350                 can help the linker gather data. Especially for dynamic
351                 cases like assembly loading an dynamic type resolving.
353 2007-06-06  Jb Evain  <jbevain@novell.com>
355         * Mono.Linker.Steps/MarkStep.cs:
356           Mono.Linker/CustomResolvercs:
357                 Try to find types in custom attributes to mark them.
359         * Mono.Linker.Steps/MarkStep.cs:
360                 Mark default constructor for serializable types.
361                 Mark the special serialization constructor as well.
363         * Mono.Linker/LinkContext.cs:
364           Mono.Linker.Steps/LoadReferences.cs:
365                 Use the name of the assembly as a key
366                 instead of the fullname.
368         * Mono.Linker/CustomResolver.cs:
369                 When a method is not found, go down
370                 the class hierarchy to find it.
372 2007-06-05  Jb Evain  <jbevain@novell.com>
374         * Tests/Mono.Linker.Tests/IntegrationTestFixture.cs:
375           Tests/TestCases/Integration/*
376           Tests/Makefile:
377                 Start the integration tests.
379 2007-06-04  Jb Evain  <jbevain@novell.com>
381         * Mono.Linker.Steps/MarkStep.cs
382                 Mark the custom attributes on the assemblies
383                 on initialize.
385         * Mono.Linker.Steps/ResolveFromXmlStep.cs
386           Descriptors/corlib.xml:
387                 Preserve the whole S.S.Crypto namespace.
389         * rename back from mink to monolinker.
391 2007-06-01  Jb Evain  <jbevain@novell.com>
393         * configure, config.make, mink.in: added
395         * AUTHORS, MIT.X11, man/mink.1: added
397 2007-05-31  Jb Evain  <jbevain@novell.com>
399         * README: added
400           monolinker.exe.sources: moved to mink.exe.sources
401           Makefile, Mono.Linker.csproj: emit a mink.exe
403         * Mono.Linker/LinkContext.cs:
404                 A resolved assembly is not always the one requested,
405                 cache the good name.
407         * Tests/Mono.Linker.Tests/AbstractLinkingTestFixture.cs
408           Mono.Linker.Steps/OutputStep.cs
409           Mono.Linker.Steps/LoadReferencesStep.cs
410           Mono.Linker.Steps/CleanStep.cs
411           Mono.Linker.Steps/ResolveFromAssemblyStep.cs
412           Mono.Linker.Steps/SweepStep.cs
413           Mono.Linker.Steps/BlacklistStep.cs
414           Mono.Linker.Steps/MarkStep.cs
415           Mono.Linker.Steps/BaseStep.cs
416           Mono.Linker.csproj
417           Mono.Linker/Driver.cs:
418                 Add a new abstract BaseStep to be extends by most
419                 of the steps.
420                 Add a new LoadReferences step to force all referenced
421                 assemblies to be resolved before the mark step.
423         * Mono.Linker/CustomResolver.cs
424           Mono.Linker/LinkContext.cs:
425                 Register entry assembly.
427 2007-05-30  Jb Evain  <jbevain@novell.com>
429         * Mono.Linker/MarkStep.cs:
430                 Fix regression: do not mark GenericParameters that are
431                 part of a typespec, like T[] or T*.
433 2007-05-28  Jb Evain  <jbevain@novell.com>
435         * Big refactoring. Get rid of the markers, use the annotations
436                 of Cecil instead.
438         * Mono.Linker/Marker.cs
439           Mono.Linker/MarkStep.cs
440           Mono.Linker/SweepStep.cs:
441                 Use annotations to mark wether or not we should
442                 sweep an item.
444 2007-05-23  Jb Evain  <jbevain@novell.com>
446         * Mono.Limker/CleanStep.cs:
447                 Stop doing hackish stupid things because
448                 Cecil suddenly handles MemberRef much better.
450 2007-05-19  Jb Evain  <jb@nurv.fr>
452         * Mono.Linker/ResolveFromXmlStep.cs
453           Mono.Linker/AssemblyMarker.cs
454           Mono.Linker/MarkStep.cs
455           Mono.Linker/ResolveFromAssemblyStep.cs:
456                 Process correctly the marker selected in the resolve phases.
458 2007-05-17  Jb Evain  <jb@nurv.fr>
460         * Mono.Linker/CleanStep.cs
461           Mono.Linker/SweepStep.cs
462           Mono.Linker/MarkStep.cs:
463                 Link only when necessary.
465         * Tests/Mono.Linker.Tests/AbstractLinkingTestFixture.cs
466           Tests/Mono.Linker.Tests/AbstractTestFixture.cs
467           Mono.Linker.csproj
468           Mono.Linker/ResolveFromXmlStep.cs
469           Mono.Linker/AssemblyMarker.cs
470           Mono.Linker/Marker.cs
471           Mono.Linker/MarkStep.cs
472           Mono.Linker/TypePreserve.cs
473           Mono.Linker/Pipeline.cs:
474                 Deal with preserve and required infos, make last test pass.
476         * Tests/Mono.Linker.Tests/XmlLinkingTestFixture.cs
477           Tests/Mono.Linker.Tests/AbstractLinkingTestFixture.cs
478           Tests/TestCases/Linker/PreserveFieldsRequired
479           Tests/TestCases/Linker/PreserveFieldsRequired/Library.cs
480           Tests/TestCases/Linker/PreserveFieldsRequired/desc.xml
481           Tests/TestCases/Linker/PreserveFieldsRequired/Makefile
482           Tests/TestCases/Linker/PreserveFieldsRequired/Library.dll:
483                 Add a new (failing for now) test case for preserve and required.
485 2007-05-16  Jb Evain  <jb@nurv.fr>
487         * Tests/Mono.Linker.Tests/AbstractTestFixture.cs
488           Mono.Linker.csproj
489           Mono.Linker/CoreAction.cs
490           Mono.Linker/Driver.cs
491           Mono.Linker/LinkContext.cs:
492                 Simplify the command line options.
494         * Tests/Mono.Linker.Tests/AbstractTestFixture.cs
495           Mono.Linker.csproj
496           Mono.Linker/CleanStep.cs
497           Mono.Linker/ResolveFromXmlStep.cs
498           Mono.Linker/Driver.cs
499           Mono.Linker/OutputStep.cs
500           Mono.Linker/ResolveFromAssemblyStep.cs
501           Mono.Linker/LinkContext.cs
502           Mono.Linker/BlacklistStep.cs
503           Mono.Linker/Pipeline.cs:
504                 Working on black list support.
506         * Descriptors/corlib.xml
507           Descriptors/system.xml
508           Descriptors/system.web.xml:
509                 First audit of the core.
511 2007-04-23  Jb Evain  <jb@nurv.fr>
513         * Mono.Linker/CleanStep.cs:
514                 Clean some special cases of MemberRef.
516 2007-03-19  Jb Evain  <jbevain@gmail.com>
518         * Fix a bug when an assembly references two
519         versions of an assembly with the same name.
520         * do some refactorings
522 2007-03-16  Jb Evain  <jbevain@gmail.com>
524         * rename linker.exe to monolinker.exe
526 2006-11-08  Jb Evain  <jbevain@gmail.com>
528         * Mono.Linker/AssemblyMarker.cs:
529                 Fix a bug in method resolution.
530         * Mono.Linker/Driver.cs:
531                 Fix a bug in assembly action processing.
533 2006-11-02  Jb Evain  <jbevain@gmail.com>
535         * check-in patches adapted from contributions by:
536                 Alex Prudkiy <prudkiy@mail.ru>
538 2006-08-21  Jb Evain  <jbevain@gmail.com>
540         * mark types used within the runtime
542 2006-08-20  Jb Evain  <jbevain@gmail.com>
544         * mark the custom attributes from the assemblies, modules and
545                 generic parameters
547         * mark the methods used by an event
549         * mark the custom attributes on the properties and the events
550                 which are used.
552         * preserve the fields of the value types
554         * clean also nested types in a proper way.
556         * clean events as well
558 2006-08-17  Jb Evain  <jbevain@gmail.com>
560         * provide a Makefile
562 2006-08-16  Jb Evain  <jbevain@gmail.com>
564         * work on generics assemblies linking
566         * use the resolver from Cecil.
568         * when marking a type, also mark its virtual methods
570 2006-08-15  Jb Evain  <jbevain@gmail.com>
572         * clean properties
574         * mark interfaces as well
576         * work in progress + unit tests.
578 2006-07-27  Jb Evain  <jbevain@gmail.com>
580         * begin work on the sweep step.
582 2006-07-20  Jb Evain  <jbevain@gmail.com>
584         * very first commit.
585           draft implementation of the mark phase of the linker.