2009-11-05 Marek Safar <marek.safar@gmail.com>
[mcs.git] / tools / linker / ChangeLog
blob6b2dd5e0c6972d63f80aa1be68c8b5d4bf378534
1 2009-11-02  Jb Evain  <jbevain@novell.com>
3         Merge the MonoTouch Linker branch.
5         * monolinker.exe.sources: update
7         * Mono.Linker/Annotations.cs:
8                 - add an preserved methods annotation on a type.
9                 - add an annotation to get the base methods of a method.
10                 - add an annotation to get the overriden method of a method.
12         * Mono.Linker/AssemblyAction.cs:
13                 add a Delete action to remove an assembly from the output set.
15         * Mono.Linker.Steps/TypeMapStep.cs:
16                 new step that create a map of virtual methods implementation.
18         * Mono.Linker.Steps/MarkStep.cs:
19                 - removal of virtual methods.
20                 - fix for custom attributes assigning properties and field
21                         defined in a base type.
22                 - mark scopes.
23                 - mark default constructors of types used as a generic instance
24                         of a generic parameter constrained with new().
25                 - apply preserved methods.
27         * Mono.Linker.Steps/SweepStep.cs: remove unused assemblies.
29         * Mono.Linker.Steps/LoadI18nAssemblies.cs:
30                 fix linking of i18n assemblies.
32         * Mono.Linker.Steps/OutputStep.cs:
33                 fix the copied assemblies when the output directory
34                 is the same as the origin of the assemblies.
36         * Mono.Linker.Steps/ResolveFromXmlStep.cs
37         * Mono.Linker.Steps/ResolveFromAssemblyStep.cs
38         * Mono.Linker.Steps/BaseStep.cs
39         * Mono.Linker/Driver.cs
40         * Mono.Linker/Pipeline.cs:
41                 Cosmetics.
43 2009-09-10  Andrés G. Aragoneses  <aaragoneses@novell.com>
45         * Mono.Linker.Steps/MarkStep.cs: Make IgnoreScope() virtual to
46           prevent marking custom attributes of foreign assemblies in a
47           derived step in the tuner. ( r: jb )
49 2009-09-09  Andrés G. Aragoneses  <aaragoneses@novell.com>
51         * Mono.Linker.Steps/MarkStep.cs: Visibility changes needed by
52           the need of some new tuner step to redefine or call some
53           methods.
55 2009-07-02  Jb Evain  <jbevain@novell.com>
57         * Makefile: fix cecil's location.
59 2009-06-09  Andrés G. Aragoneses  <aaragoneses@novell.com>
61         * Mono.Linker.Steps/BaseStep.cs: New virtual API needed.
63         * Mono.Linker/Pipeline.cs: API love.
65 2009-06-09  Andrés G. Aragoneses  <aaragoneses@novell.com>
67         * Mono.Linker.csproj: Update.
69         * Mono.Linker/Driver.cs: Prevent InvalidCastException.
71 2009-06-05  Jb Evain  <jbevain@novell.com>
73         * Mono.Linker.Steps/MarkStep.cs: fix a nre.
74         Based on patch by Andres G. Aragoneses  <aaragoneses@novell.com>.
76 2009-06-05  Jb Evain  <jbevain@novell.com>
78         * Mono.Linker.Steps/ResolveFromXmlStep.cs: more ways of choosing fields.
80 2009-06-05  Jb Evain  <jbevain@novell.com>
82         * Mono.Linker.Steps/ResolveFromXmlStep.cs: give us more
83         possibilities to detail the xml descriptors.
85 2009-06-04  Jb Evain  <jbevain@novell.com>
87         * Mono.Linker.Steps/ResolveFromXmlStep.cs: fix handling
88         of wildcards constructors.
90 2009-04-23  Andrés G. Aragoneses  <aaragoneses@novell.com>
92         * Mono.Linker/Driver.cs: Report error and exit if it cannot
93           resolve some type (useful to avoid an ugly TypeLoadException
94           when specifying an erroneus custom step).
96 2009-04-21  Andrés G. Aragoneses  <aaragoneses@novell.com>
98         * Driver.cs: Postprocess custom steps in order to make them
99         able to find steps determined by the resolve method. Fixes
100         #493702.
102 2009-04-08  Andrés G. Aragoneses  <aaragoneses@novell.com>
104         * Mono.Linker.csproj: Update.
106 2009-02-18  Jb Evain  <jbevain@novell.com>
108         * Mono.Linker/XApiService.cs: delete, unused.
109         * Mono.Linker/Driver.cs: don't use the uneeded XApiService anymore.
111 2009-01-28  Jb Evain  <jbevain@novell.com>
113         * Mono.Linker/AssemblyResolver.cs
114           Mono.Linker.Steps/MarkStep.cs:
115                 Directly use the Resolve methods from Cecil.
117 2008-12-16  Jb Evain  <jbevain@novell.com>
119         * Makefile: build monolinker.exe in the profile directory instead of
120         the current one.
122 2008-12-02  Jb Evain  <jbevain@novell.com>
124         * Mono.Linker/AssemblyResolver.cs (AreSame(TypeReference,TypeReference):
125         fix the case where we compare two GenericInstanceType of the same
126         element type with different generic arguments.
128 2008-11-24  Jb Evain  <jbevain@novell.com>
130         * Mono.Linker.Steps/ResolveFromAssemblyStep.cs
131         * Mono.Linker.Steps/ResolveFromXmlStep.cs
132         * Mono.Linker.Steps/MarkStep.cs:
133                 generalize the use of the new Has* pattern in Cecil
134                 to avoid unecessary allocations. Also cache delegates.
136 2008-09-12  Jb Evain  <jbevain@novell.com>
138         * Mono.Linker/Pipeline.cs: add a RemoveStep method.
139         * Mono.Linker/Driver.cs: make the linker generate new
140         module guids by default.
142 2008-09-12  Jb Evain  <jbevain@novell.com>
144         * Mono.Linker.Steps/RegenerateGuidStep.cs: new step that is used
145         to regenerate the Mvid identifier of each linked module.
147         * monolinker.exe.sources:
148         * Mono.Linker.csproj: add RegeneratedGuidStep to the build.
150         * Mono.Linker/Driver.cs: add a -g option to control whether to
151         regenerate the modules identifier or not.
153 2008-09-01  Jb Evain  <jbevain@novell.com>
155         * Mono.Linker/AssemblyResolver.cs: properly cache .exes.
157 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
159         * Descriptors/mscorlib.xml: Add EntryPointNotFoundException.
161 2008-03-28  Jb Evain  <jbevain@novell.com>
163         * Mono.Linker/XApiReader.cs: deal better with complex names.
165 2008-03-28  Jb Evain  <jbevain@novell.com>
167         * Mono.Linker/LinkContext.cs: do not force the loading of
168         debug symbols if not asked.
170 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
172         * Descriptors/mscorlib.xml: Preserve all for CultureInfo to prevent
173         linker from removing CreateCulture method that is only used by the
174         runtime.
176 2007-11-21  Jb Evain  <jbevain@novell.com>
178         * Mono.Linker.Steps/ResolveFromXmlStep.cs:
179                 Implement resolving from xml patterns.
181 2007-10-25  Jb Evain  <jbevain@novell.com>
183         * monolinker.exe.sources
184         * Mono.Linker.Steps/ResolveFromApiInfoStep.cs
185         * Mono.Linker/Driver.cs
186         * Mono.Linker/XApiReader.cs
187         * Mono.Linker/ApiInfoService.cs
188         * Mono.Linker/IXApiVisitor.cs:
190                 Big refactoring. Move logic to read Xml Api Info files
191                 to XApiReader, so we can use that in the tuner to deal
192                 with xapi files to inject attributes.
194 2007-08-27  Jb Evain  <jbevain@novell.com>
196         * Mono.Linker/Driver.cs
197           Mono.Linker/Annotations.cs
198           Mono.Linker/LinkContext.cs
199           Mono.Linker.Steps/OutputStep.cs:
200                 Implement symbols loading/saving.
202 2007-08-16  Jb Evain  <jbevain@novell.com>
204         * Mono.Linker/Driver.cs
205           Mono.Linker/LinkContext.cs:
206                 Add a way to specify parameters to the context.
208 2007-08-05  Jb Evain  <jbevain@novell.com>
210         * Mono.Linker.Steps/ResolveFromXmlStep.cs:
211                 Now the resolver deals only with assembly names
212                 instead of fullnames.
214 2007-07-25  Jb Evain  <jbevain@novell.com>
216         * Mono.Linker.Steps/ResolveFromAssemblyStep.cs:
217                 When linking from an executable, it's possible
218                 to reduce the executable as well.
220 2007-07-23  Jb Evain  <jbevain@novell.com>
222         * Mono.Linker/Driver.cs
223           Mono.Linker/LinkContext.cs:
224                 Allow one to specify the action to apply to an assembly
225                 from the command line.
227 2007-07-22  Jb Evain  <jbevain@novell.com>
229         * Mono.Linker/LinkContext.cs:
230                 If no file found with -a, try to resolve it.
232         * Mono.Linker/Driver.cs
233           Mono.Linker/Pipeline.cs:
234                 Adjust the visibility only once, even with multiple -i.
236 2007-07-21  Jb Evain  <jbevain@novell.com>
238         * Mono.Linker.Steps/SweepStep.cs:
239                 Sweep memberrefs along with the typerefs.
241 2007-07-20  Jb Evain  <jbevain@novell.com>
243         * Mono.Linker.Steps/AdjustVisibilityStep.cs:
244                 Don't change the visibility of the members if the type
245                 is marked internal.
247 2007-07-18  Jb Evain  <jbevain@novell.com>
249         * Mono.Linker/ResolutionException.cs:
250           Mono.Linker.Steps/MarkStep.cs:
251                 Throw a resolution exception when a metadata item
252                 can not be resolved in external assemblies.
254         * Mono.Linker/AssemblyResolver.cs:
255                 Use the assembly name only as a key for the
256                 assembly cache.
258 2007-07-05  Jb Evain  <jbevain@novell.com>
260         * Mono.Linker/Driver.cs
261           Mono.Linker/Pipeline.cs:
262                 Add a way to install steps in the pipeline
263                 from the outside.
265 2007-07-03  Jb Evain  <jbevain@novell.com>
267         * Mono.Linker/Driver.cs:
268                 Add support for @files
270         * Mono.Linker/Driver.cs:
271                 Add a way to add search directories to the resolver.
273 2007-06-18  Jb Evain  <jbevain@novell.com>
275         * Mono.Linker.Steps/MarkStep.cs:
276                 Mark generic parameter constraints.
278         * Mono.Linker.Steps/MarkStep.cs:
279                 Mark modifiers of modtype.
281 2007-06-15  Jb Evain  <jbevain@novell.com>
283         * Mono.Linker/Driver.cs,
284           Mono.Linker/I18nAssemblies.cs,
285           Mono.Linker.Steps/LoadI18nAssemblies.cs:
286                 Copy the i18n assemblies when running Mono.
288         * Mono.Linker/CustomResolver.cs => AssemblyResolver.cs,
289           Mono.Linker/Annotations.cs,
290           Mono.Linker/LinkContext.cs,
291           Mono.Linker.Steps/ResolveFromXmlStep.cs:
292                 Clean up the assembly reference system.
293                 Fixes bug where the linker have multiple
294                 time the same assembly in its cache.
296 2007-06-13  Jb Evain  <jbevain@novell.com>
298         * Mono.Linker.Steps/OutputStep.cs:
299                 Copy .config files alongs with assemblies.
301         * Mono.Linker.Steps/CleanStep.cs:
302                 Clean memberref that are not used anymore.
304 2007-06-12  Jb Evain  <jbevain@novell.com>
306         * Mono.Linker.Steps/AdjustVisibilityStep.cs,
307           Mono.Linker.Steps/ResolveFromApiInfoStep.cs,
308           Mono.Linker/Drivers.cs:
309                 Adjust the visibility depending on the data
310                 gathered in the api-info.
312         * Mono.Linker.Steps/ResolveFromApiInfoStep.cs:
313           Mono.Linker/Driver.cs:
314                 Started working on linking from api-info.
316 2007-06-08  Jb Evain  <jbevain@novell.com>
318         * Descriptors/System.Drawing.xml,
319           Mono.Linker.Steps/BlackListStep.cs:
320                 Add preserve infos for System.Drawing.
322         * Mono.Linker.Steps/MarkStep.cs:
323           Tests/TestsCases/Linker/Generics/*:
324                 Also walk through generic instances to
325                 mark arguments.
327 2007-06-07  Jb Evain  <jbevain@novell.com>
329         * Mono.Linker.Steps/MarkStep.cs:
330                 Mark types used in some marshal specs.
332         * Mono.Linker.Tests/MarkStep.cs
333           Tests/Mono.Linker.Tests/XmlLinkingTestFixture.cs
334           Tests/TestCases/Linker/ReferenceInAttributes/*:
335                 Mark fields and setters used in custom attribute
336                 instantiation. Mark also types used in custom attribute
337                 instantiation.
339         * profiler/Makefile,
340           profiler/link.c:
341                 Add a small profiler that outputs the xml format
342                 that the linker can resolve.
344                 By running an application with the profiler, one
345                 can help the linker gather data. Especially for dynamic
346                 cases like assembly loading an dynamic type resolving.
348 2007-06-06  Jb Evain  <jbevain@novell.com>
350         * Mono.Linker.Steps/MarkStep.cs:
351           Mono.Linker/CustomResolvercs:
352                 Try to find types in custom attributes to mark them.
354         * Mono.Linker.Steps/MarkStep.cs:
355                 Mark default constructor for serializable types.
356                 Mark the special serialization constructor as well.
358         * Mono.Linker/LinkContext.cs:
359           Mono.Linker.Steps/LoadReferences.cs:
360                 Use the name of the assembly as a key
361                 instead of the fullname.
363         * Mono.Linker/CustomResolver.cs:
364                 When a method is not found, go down
365                 the class hierarchy to find it.
367 2007-06-05  Jb Evain  <jbevain@novell.com>
369         * Tests/Mono.Linker.Tests/IntegrationTestFixture.cs:
370           Tests/TestCases/Integration/*
371           Tests/Makefile:
372                 Start the integration tests.
374 2007-06-04  Jb Evain  <jbevain@novell.com>
376         * Mono.Linker.Steps/MarkStep.cs
377                 Mark the custom attributes on the assemblies
378                 on initialize.
380         * Mono.Linker.Steps/ResolveFromXmlStep.cs
381           Descriptors/corlib.xml:
382                 Preserve the whole S.S.Crypto namespace.
384         * rename back from mink to monolinker.
386 2007-06-01  Jb Evain  <jbevain@novell.com>
388         * configure, config.make, mink.in: added
390         * AUTHORS, MIT.X11, man/mink.1: added
392 2007-05-31  Jb Evain  <jbevain@novell.com>
394         * README: added
395           monolinker.exe.sources: moved to mink.exe.sources
396           Makefile, Mono.Linker.csproj: emit a mink.exe
398         * Mono.Linker/LinkContext.cs:
399                 A resolved assembly is not always the one requested,
400                 cache the good name.
402         * Tests/Mono.Linker.Tests/AbstractLinkingTestFixture.cs
403           Mono.Linker.Steps/OutputStep.cs
404           Mono.Linker.Steps/LoadReferencesStep.cs
405           Mono.Linker.Steps/CleanStep.cs
406           Mono.Linker.Steps/ResolveFromAssemblyStep.cs
407           Mono.Linker.Steps/SweepStep.cs
408           Mono.Linker.Steps/BlacklistStep.cs
409           Mono.Linker.Steps/MarkStep.cs
410           Mono.Linker.Steps/BaseStep.cs
411           Mono.Linker.csproj
412           Mono.Linker/Driver.cs:
413                 Add a new abstract BaseStep to be extends by most
414                 of the steps.
415                 Add a new LoadReferences step to force all referenced
416                 assemblies to be resolved before the mark step.
418         * Mono.Linker/CustomResolver.cs
419           Mono.Linker/LinkContext.cs:
420                 Register entry assembly.
422 2007-05-30  Jb Evain  <jbevain@novell.com>
424         * Mono.Linker/MarkStep.cs:
425                 Fix regression: do not mark GenericParameters that are
426                 part of a typespec, like T[] or T*.
428 2007-05-28  Jb Evain  <jbevain@novell.com>
430         * Big refactoring. Get rid of the markers, use the annotations
431                 of Cecil instead.
433         * Mono.Linker/Marker.cs
434           Mono.Linker/MarkStep.cs
435           Mono.Linker/SweepStep.cs:
436                 Use annotations to mark wether or not we should
437                 sweep an item.
439 2007-05-23  Jb Evain  <jbevain@novell.com>
441         * Mono.Limker/CleanStep.cs:
442                 Stop doing hackish stupid things because
443                 Cecil suddenly handles MemberRef much better.
445 2007-05-19  Jb Evain  <jb@nurv.fr>
447         * Mono.Linker/ResolveFromXmlStep.cs
448           Mono.Linker/AssemblyMarker.cs
449           Mono.Linker/MarkStep.cs
450           Mono.Linker/ResolveFromAssemblyStep.cs:
451                 Process correctly the marker selected in the resolve phases.
453 2007-05-17  Jb Evain  <jb@nurv.fr>
455         * Mono.Linker/CleanStep.cs
456           Mono.Linker/SweepStep.cs
457           Mono.Linker/MarkStep.cs:
458                 Link only when necessary.
460         * Tests/Mono.Linker.Tests/AbstractLinkingTestFixture.cs
461           Tests/Mono.Linker.Tests/AbstractTestFixture.cs
462           Mono.Linker.csproj
463           Mono.Linker/ResolveFromXmlStep.cs
464           Mono.Linker/AssemblyMarker.cs
465           Mono.Linker/Marker.cs
466           Mono.Linker/MarkStep.cs
467           Mono.Linker/TypePreserve.cs
468           Mono.Linker/Pipeline.cs:
469                 Deal with preserve and required infos, make last test pass.
471         * Tests/Mono.Linker.Tests/XmlLinkingTestFixture.cs
472           Tests/Mono.Linker.Tests/AbstractLinkingTestFixture.cs
473           Tests/TestCases/Linker/PreserveFieldsRequired
474           Tests/TestCases/Linker/PreserveFieldsRequired/Library.cs
475           Tests/TestCases/Linker/PreserveFieldsRequired/desc.xml
476           Tests/TestCases/Linker/PreserveFieldsRequired/Makefile
477           Tests/TestCases/Linker/PreserveFieldsRequired/Library.dll:
478                 Add a new (failing for now) test case for preserve and required.
480 2007-05-16  Jb Evain  <jb@nurv.fr>
482         * Tests/Mono.Linker.Tests/AbstractTestFixture.cs
483           Mono.Linker.csproj
484           Mono.Linker/CoreAction.cs
485           Mono.Linker/Driver.cs
486           Mono.Linker/LinkContext.cs:
487                 Simplify the command line options.
489         * Tests/Mono.Linker.Tests/AbstractTestFixture.cs
490           Mono.Linker.csproj
491           Mono.Linker/CleanStep.cs
492           Mono.Linker/ResolveFromXmlStep.cs
493           Mono.Linker/Driver.cs
494           Mono.Linker/OutputStep.cs
495           Mono.Linker/ResolveFromAssemblyStep.cs
496           Mono.Linker/LinkContext.cs
497           Mono.Linker/BlacklistStep.cs
498           Mono.Linker/Pipeline.cs:
499                 Working on black list support.
501         * Descriptors/corlib.xml
502           Descriptors/system.xml
503           Descriptors/system.web.xml:
504                 First audit of the core.
506 2007-04-23  Jb Evain  <jb@nurv.fr>
508         * Mono.Linker/CleanStep.cs:
509                 Clean some special cases of MemberRef.
511 2007-03-19  Jb Evain  <jbevain@gmail.com>
513         * Fix a bug when an assembly references two
514         versions of an assembly with the same name.
515         * do some refactorings
517 2007-03-16  Jb Evain  <jbevain@gmail.com>
519         * rename linker.exe to monolinker.exe
521 2006-11-08  Jb Evain  <jbevain@gmail.com>
523         * Mono.Linker/AssemblyMarker.cs:
524                 Fix a bug in method resolution.
525         * Mono.Linker/Driver.cs:
526                 Fix a bug in assembly action processing.
528 2006-11-02  Jb Evain  <jbevain@gmail.com>
530         * check-in patches adapted from contributions by:
531                 Alex Prudkiy <prudkiy@mail.ru>
533 2006-08-21  Jb Evain  <jbevain@gmail.com>
535         * mark types used within the runtime
537 2006-08-20  Jb Evain  <jbevain@gmail.com>
539         * mark the custom attributes from the assemblies, modules and
540                 generic parameters
542         * mark the methods used by an event
544         * mark the custom attributes on the properties and the events
545                 which are used.
547         * preserve the fields of the value types
549         * clean also nested types in a proper way.
551         * clean events as well
553 2006-08-17  Jb Evain  <jbevain@gmail.com>
555         * provide a Makefile
557 2006-08-16  Jb Evain  <jbevain@gmail.com>
559         * work on generics assemblies linking
561         * use the resolver from Cecil.
563         * when marking a type, also mark its virtual methods
565 2006-08-15  Jb Evain  <jbevain@gmail.com>
567         * clean properties
569         * mark interfaces as well
571         * work in progress + unit tests.
573 2006-07-27  Jb Evain  <jbevain@gmail.com>
575         * begin work on the sweep step.
577 2006-07-20  Jb Evain  <jbevain@gmail.com>
579         * very first commit.
580           draft implementation of the mark phase of the linker.