<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>mosa Work Item Rss Feed</title><link>http://www.codeplex.com/mosa/WorkItem/List.aspx</link><description>mosa Work Item Rss Description</description><item><title>Created Issue: mosacl Uses Wrong .NET Framework Folder On Win64 When mosacl Executes As AnyCpu</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=24476</link><description>If mosacl can&amp;#39;t find an mscorlib in the current folder, it checks a number of paths including the current Framework folder which is the Framework64 folder when mosacl is running in x64 mode. mosacl compiles code incorrectly when using Framework64 mscorlib for reference purposes - and it is arguable both that we shouldn&amp;#39;t be using PE32&amp;#43; assemblies for 32-bit targetted compiles, and that we shouldn&amp;#39;t be using the .NET mscorlib for reference anyway.&lt;br /&gt;&lt;br /&gt;The assembly loader&amp;#39;s search paths need to be thought out a bit more and changed.&lt;br /&gt;</description><author>illuminus86</author><pubDate>Sat, 29 Aug 2009 00:52:42 GMT</pubDate><guid isPermaLink="false">Created Issue: mosacl Uses Wrong .NET Framework Folder On Win64 When mosacl Executes As AnyCpu 20090829125242A</guid></item><item><title>Closed Issue: mosacl Fails To Resolve mscorlib On Win64 When mosacl Executes As AnyCpu</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=24399</link><description>I discovered this in Mosa.Runtime.Loader.AssemblyLoader while running the test cases on x64 Win7 with VS2008 and Icarus GUI Test Runner - all attempts at mosacl usage fail because the assembly-resolving code in mosacl can&amp;#39;t find mscorlib. Specifically, the only one it finds is the one in &amp;#37;windows&amp;#37;&amp;#92;Microsoft.NET&amp;#92;Framework64 , which is a 64-bit PE and the Mosa PE-loading code cannot handle the format.&lt;br /&gt;&lt;br /&gt;Any single one of the following workarounds should work &amp;#40;I&amp;#39;ve tried a couple&amp;#41;&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; Have a 32bit PE of mscorlib in the working directory while you are running the MOSA compiler&lt;br /&gt;&amp;#42; Compile mosacl with x86 build configuration instead of AnyCpu to force MOSA compiler to run under 32bit&lt;br /&gt;&amp;#42; Use &amp;#39;corflags&amp;#39; MS.NET utility to manually mark mosacl to require 32bit mode&lt;br /&gt;&amp;#42; Compile test-case assembly with x86 build configuration instead of AnyCpu to force MOSA compiler to run under 32bit&lt;br /&gt;&amp;#42; Use &amp;#39;corflags&amp;#39; MS.NET utility to manually mark test-case assembly to require 32bit mode&lt;br /&gt;&lt;br /&gt;Long-term issues&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; We need to implement PE32&amp;#43;&lt;br /&gt;&amp;#42; We need to make the assembly resolving code more intelligent about how it looks for an assembly to resolve a reference&lt;br /&gt;&lt;br /&gt;Its important to keep in mind that while related, this has nothing to do with mosacl cross-compiling for x64 - and more of making sure that the compiler runs on .NET supported platforms.&lt;br /&gt;Comments: &lt;p&gt;I&amp;#39;m closing this issue in lieu of a more concise one worded to drive this home.&lt;/p&gt;</description><author>illuminus86</author><pubDate>Sat, 29 Aug 2009 00:45:19 GMT</pubDate><guid isPermaLink="false">Closed Issue: mosacl Fails To Resolve mscorlib On Win64 When mosacl Executes As AnyCpu 20090829124519A</guid></item><item><title>Commented Issue: mosacl Fails To Resolve mscorlib On Win64 When mosacl Executes As AnyCpu</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=24399</link><description>I discovered this in Mosa.Runtime.Loader.AssemblyLoader while running the test cases on x64 Win7 with VS2008 and Icarus GUI Test Runner - all attempts at mosacl usage fail because the assembly-resolving code in mosacl can&amp;#39;t find mscorlib. Specifically, the only one it finds is the one in &amp;#37;windows&amp;#37;&amp;#92;Microsoft.NET&amp;#92;Framework64 , which is a 64-bit PE and the Mosa PE-loading code cannot handle the format.&lt;br /&gt;&lt;br /&gt;Any single one of the following workarounds should work &amp;#40;I&amp;#39;ve tried a couple&amp;#41;&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; Have a 32bit PE of mscorlib in the working directory while you are running the MOSA compiler&lt;br /&gt;&amp;#42; Compile mosacl with x86 build configuration instead of AnyCpu to force MOSA compiler to run under 32bit&lt;br /&gt;&amp;#42; Use &amp;#39;corflags&amp;#39; MS.NET utility to manually mark mosacl to require 32bit mode&lt;br /&gt;&amp;#42; Compile test-case assembly with x86 build configuration instead of AnyCpu to force MOSA compiler to run under 32bit&lt;br /&gt;&amp;#42; Use &amp;#39;corflags&amp;#39; MS.NET utility to manually mark test-case assembly to require 32bit mode&lt;br /&gt;&lt;br /&gt;Long-term issues&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; We need to implement PE32&amp;#43;&lt;br /&gt;&amp;#42; We need to make the assembly resolving code more intelligent about how it looks for an assembly to resolve a reference&lt;br /&gt;&lt;br /&gt;Its important to keep in mind that while related, this has nothing to do with mosacl cross-compiling for x64 - and more of making sure that the compiler runs on .NET supported platforms.&lt;br /&gt;Comments: ** Comment from web user: illuminus86 ** &lt;p&gt;Patch submitted by tanner has been applied, and I made some additions that were needed for PE32&amp;#43; support to actually work.&lt;/p&gt;&lt;p&gt;However, PE32&amp;#43; support does not seem to be enough to get the compiler to compile the assembly correctly, and every single testcase fails &amp;#40;though the Framework64 version of corlib appears to be successfully loading&amp;#41;. The core of this issue is left unresolved - the assembly loader needs to reject the Framework64 folder as a candidate for assembly resolution.&lt;/p&gt;</description><author>illuminus86</author><pubDate>Sat, 29 Aug 2009 00:42:52 GMT</pubDate><guid isPermaLink="false">Commented Issue: mosacl Fails To Resolve mscorlib On Win64 When mosacl Executes As AnyCpu 20090829124252A</guid></item><item><title>Commented Issue: mosacl Fails To Resolve mscorlib On Win64 When mosacl Executes As AnyCpu</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=24399</link><description>I discovered this in Mosa.Runtime.Loader.AssemblyLoader while running the test cases on x64 Win7 with VS2008 and Icarus GUI Test Runner - all attempts at mosacl usage fail because the assembly-resolving code in mosacl can&amp;#39;t find mscorlib. Specifically, the only one it finds is the one in &amp;#37;windows&amp;#37;&amp;#92;Microsoft.NET&amp;#92;Framework64 , which is a 64-bit PE and the Mosa PE-loading code cannot handle the format.&lt;br /&gt;&lt;br /&gt;Any single one of the following workarounds should work &amp;#40;I&amp;#39;ve tried a couple&amp;#41;&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; Have a 32bit PE of mscorlib in the working directory while you are running the MOSA compiler&lt;br /&gt;&amp;#42; Compile mosacl with x86 build configuration instead of AnyCpu to force MOSA compiler to run under 32bit&lt;br /&gt;&amp;#42; Use &amp;#39;corflags&amp;#39; MS.NET utility to manually mark mosacl to require 32bit mode&lt;br /&gt;&amp;#42; Compile test-case assembly with x86 build configuration instead of AnyCpu to force MOSA compiler to run under 32bit&lt;br /&gt;&amp;#42; Use &amp;#39;corflags&amp;#39; MS.NET utility to manually mark test-case assembly to require 32bit mode&lt;br /&gt;&lt;br /&gt;Long-term issues&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; We need to implement PE32&amp;#43;&lt;br /&gt;&amp;#42; We need to make the assembly resolving code more intelligent about how it looks for an assembly to resolve a reference&lt;br /&gt;&lt;br /&gt;Its important to keep in mind that while related, this has nothing to do with mosacl cross-compiling for x64 - and more of making sure that the compiler runs on .NET supported platforms.&lt;br /&gt;Comments: ** Comment from web user: illuminus86 ** &lt;p&gt;It&amp;#39;s a subjective argument, because the amount of extra RAM consumed is nominal, but you get the bonus of the .NET JIT having more registers to squeeze your variables into - making the compiler run faster. Running in x64 is the default behavoir on Win64 - and if we want to support it as a development platform &amp;#40;regardless as to whether or not it is a target platform for code our compiler compiles&amp;#41; then we should spend a little energy on it working.&lt;/p&gt;</description><author>illuminus86</author><pubDate>Tue, 25 Aug 2009 12:29:55 GMT</pubDate><guid isPermaLink="false">Commented Issue: mosacl Fails To Resolve mscorlib On Win64 When mosacl Executes As AnyCpu 20090825122955P</guid></item><item><title>Commented Issue: mosacl Fails To Resolve mscorlib On Win64 When mosacl Executes As AnyCpu</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=24399</link><description>I discovered this in Mosa.Runtime.Loader.AssemblyLoader while running the test cases on x64 Win7 with VS2008 and Icarus GUI Test Runner - all attempts at mosacl usage fail because the assembly-resolving code in mosacl can&amp;#39;t find mscorlib. Specifically, the only one it finds is the one in &amp;#37;windows&amp;#37;&amp;#92;Microsoft.NET&amp;#92;Framework64 , which is a 64-bit PE and the Mosa PE-loading code cannot handle the format.&lt;br /&gt;&lt;br /&gt;Any single one of the following workarounds should work &amp;#40;I&amp;#39;ve tried a couple&amp;#41;&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; Have a 32bit PE of mscorlib in the working directory while you are running the MOSA compiler&lt;br /&gt;&amp;#42; Compile mosacl with x86 build configuration instead of AnyCpu to force MOSA compiler to run under 32bit&lt;br /&gt;&amp;#42; Use &amp;#39;corflags&amp;#39; MS.NET utility to manually mark mosacl to require 32bit mode&lt;br /&gt;&amp;#42; Compile test-case assembly with x86 build configuration instead of AnyCpu to force MOSA compiler to run under 32bit&lt;br /&gt;&amp;#42; Use &amp;#39;corflags&amp;#39; MS.NET utility to manually mark test-case assembly to require 32bit mode&lt;br /&gt;&lt;br /&gt;Long-term issues&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; We need to implement PE32&amp;#43;&lt;br /&gt;&amp;#42; We need to make the assembly resolving code more intelligent about how it looks for an assembly to resolve a reference&lt;br /&gt;&lt;br /&gt;Its important to keep in mind that while related, this has nothing to do with mosacl cross-compiling for x64 - and more of making sure that the compiler runs on .NET supported platforms.&lt;br /&gt;Comments: ** Comment from web user: moitoius ** &lt;p&gt;You asked for comments &amp;#58;&amp;#41;.&lt;/p&gt;&lt;p&gt;Option 2 &amp;#40;Compile mosacl with x86 build configuration&amp;#41; is actually &amp;#42;recommended.&amp;#42; Using 64bit if you don&amp;#39;t need it is a bad practice &amp;#40;sorry, no references - read about it while back&amp;#41;. You should only be using it if you are going to be hitting the 2GB &amp;#40;correct&amp;#63;&amp;#41; cap - using 64bit if you don&amp;#39;t need it is a waste &amp;#40;it naturally uses more memory - especially in .Net&amp;#41;.&lt;/p&gt;&lt;p&gt;Agreed and disagreed - Agreed&amp;#58; it needs to be fixed in the long run&amp;#59; especially when x64 runtime development starts. Disagreed&amp;#58; The reason we have 64bit PE files is to support 64bit interop and IJW MC&amp;#43;&amp;#43;&amp;#59; if something is targeted to x64 explicitly there is a extremely good chance we won&amp;#39;t be able to run it because of native or interop code that is contained within it - it&amp;#39;s a Windows compatibility &amp;#40;and most probably Mono leverages it too&amp;#41; thing.&lt;/p&gt;&lt;p&gt;That being said 32bit and AnyCPU are probably the ones you want to get right straight away.&lt;/p&gt;</description><author>moitoius</author><pubDate>Mon, 24 Aug 2009 10:00:35 GMT</pubDate><guid isPermaLink="false">Commented Issue: mosacl Fails To Resolve mscorlib On Win64 When mosacl Executes As AnyCpu 20090824100035A</guid></item><item><title>Commented Issue: mosacl Fails To Resolve mscorlib On Win64 When mosacl Executes As AnyCpu</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=24399</link><description>I discovered this in Mosa.Runtime.Loader.AssemblyLoader while running the test cases on x64 Win7 with VS2008 and Icarus GUI Test Runner - all attempts at mosacl usage fail because the assembly-resolving code in mosacl can&amp;#39;t find mscorlib. Specifically, the only one it finds is the one in &amp;#37;windows&amp;#37;&amp;#92;Microsoft.NET&amp;#92;Framework64 , which is a 64-bit PE and the Mosa PE-loading code cannot handle the format.&lt;br /&gt;&lt;br /&gt;Any single one of the following workarounds should work &amp;#40;I&amp;#39;ve tried a couple&amp;#41;&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; Have a 32bit PE of mscorlib in the working directory while you are running the MOSA compiler&lt;br /&gt;&amp;#42; Compile mosacl with x86 build configuration instead of AnyCpu to force MOSA compiler to run under 32bit&lt;br /&gt;&amp;#42; Use &amp;#39;corflags&amp;#39; MS.NET utility to manually mark mosacl to require 32bit mode&lt;br /&gt;&amp;#42; Compile test-case assembly with x86 build configuration instead of AnyCpu to force MOSA compiler to run under 32bit&lt;br /&gt;&amp;#42; Use &amp;#39;corflags&amp;#39; MS.NET utility to manually mark test-case assembly to require 32bit mode&lt;br /&gt;&lt;br /&gt;Long-term issues&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; We need to implement PE32&amp;#43;&lt;br /&gt;&amp;#42; We need to make the assembly resolving code more intelligent about how it looks for an assembly to resolve a reference&lt;br /&gt;&lt;br /&gt;Its important to keep in mind that while related, this has nothing to do with mosacl cross-compiling for x64 - and more of making sure that the compiler runs on .NET supported platforms.&lt;br /&gt;Comments: ** Comment from web user: illuminus86 ** &lt;p&gt;Could you provide a unified diff for your patch please&amp;#63; I&amp;#39;m not having much luck trying to use the CodePlex client to apply the patch you&amp;#39;ve uploaded. Thanks&amp;#33;&lt;/p&gt;</description><author>illuminus86</author><pubDate>Sun, 23 Aug 2009 03:13:06 GMT</pubDate><guid isPermaLink="false">Commented Issue: mosacl Fails To Resolve mscorlib On Win64 When mosacl Executes As AnyCpu 20090823031306A</guid></item><item><title>Closed Issue: Multiboot0695AssemblyStage Incorrectly Throws LinkerException</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=24400</link><description>When executing mosacl with the following parameters&amp;#58;&lt;br /&gt;&lt;br /&gt;-o Mosa.Kernel.exe --Architecture&amp;#61;x86 -b&amp;#61;mb0.7 --format&amp;#61;ELF32 Mosa.Kernel.dll&lt;br /&gt;&lt;br /&gt;A LinkerException with message &amp;#34;Load and virtual section alignment must be identical if you are booting non-ELF binaries with a multiboot bootloader&amp;#34; is generated in Multiboot0695AssemblyStage.WriteMultibootHeader&amp;#40;&amp;#41;&lt;br /&gt;&lt;br /&gt;Assuming that the error message is correct, this is a flaw in the code&amp;#39;s attempt to check which linker is actually in use. When I break on the exception and take a look, the IAssemblyLinker that is being checked &amp;#40;to determine if Elf32 or Elf64 are in use&amp;#41; is an instance of LinkerFormatSelector , which wraps an underlying true implementation of what in this case is Elf32.&lt;br /&gt;&lt;br /&gt;Work Around Suggestion&lt;br /&gt;------------------------------&lt;br /&gt;Currently everyone seems to be used to passing parameters to mosacl that make LoadSectionAlignment and VirtualSectionAlignment equal each other, but as you can tell, I&amp;#39;ve omitted them.&lt;br /&gt;&lt;br /&gt;Solution Suggestion&lt;br /&gt;-----------------------&lt;br /&gt;Make Multiboot0695AssemblyStage.WriteMultibootHeader&amp;#40;&amp;#41; aware of the underlying linker implementation&amp;#39;s type. This can be done with the addition of a public property to LinkerFormatSelector and an &amp;#39;if&amp;#39; check in Multiboot0695AssemblyStage.WriteMultibootHeader&amp;#40;&amp;#41;, but I don&amp;#39;t want to pollute the meticulous architecture without feedback first.&lt;br /&gt;Comments: Resolved with changeset 58318.</description><author>illuminus86</author><pubDate>Sat, 22 Aug 2009 04:03:39 GMT</pubDate><guid isPermaLink="false">Closed Issue: Multiboot0695AssemblyStage Incorrectly Throws LinkerException 20090822040339A</guid></item><item><title>Created Issue: Multiboot0695AssemblyStage Incorrectly Throws LinkerException</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=24400</link><description>When executing mosacl with the following parameters&amp;#58;&lt;br /&gt;&lt;br /&gt;-o Mosa.Kernel.exe --Architecture&amp;#61;x86 -b&amp;#61;mb0.7 --format&amp;#61;ELF32 Mosa.Kernel.dll&lt;br /&gt;&lt;br /&gt;A LinkerException with message &amp;#34;Load and virtual section alignment must be identical if you are booting non-ELF binaries with a multiboot bootloader&amp;#34; is generated in Multiboot0695AssemblyStage.WriteMultibootHeader&amp;#40;&amp;#41;&lt;br /&gt;&lt;br /&gt;Assuming that the error message is correct, this is a flaw in the code&amp;#39;s attempt to check which linker is actually in use. When I break on the exception and take a look, the IAssemblyLinker that is being checked &amp;#40;to determine if Elf32 or Elf64 are in use&amp;#41; is an instance of LinkerFormatSelector , which wraps an underlying true implementation of what in this case is Elf32.&lt;br /&gt;&lt;br /&gt;Work Around Suggestion&lt;br /&gt;------------------------------&lt;br /&gt;Currently everyone seems to be used to passing parameters to mosacl that make LoadSectionAlignment and VirtualSectionAlignment equal each other, but as you can tell, I&amp;#39;ve omitted them.&lt;br /&gt;&lt;br /&gt;Solution Suggestion&lt;br /&gt;-----------------------&lt;br /&gt;Make Multiboot0695AssemblyStage.WriteMultibootHeader&amp;#40;&amp;#41; aware of the underlying linker implementation&amp;#39;s type. This can be done with the addition of a public property to LinkerFormatSelector and an &amp;#39;if&amp;#39; check in Multiboot0695AssemblyStage.WriteMultibootHeader&amp;#40;&amp;#41;, but I don&amp;#39;t want to pollute the meticulous architecture without feedback first.&lt;br /&gt;</description><author>illuminus86</author><pubDate>Fri, 21 Aug 2009 18:29:46 GMT</pubDate><guid isPermaLink="false">Created Issue: Multiboot0695AssemblyStage Incorrectly Throws LinkerException 20090821062946P</guid></item><item><title>Commented Issue: mosacl Fails To Resolve mscorlib On Win64 When mosacl Executes As AnyCpu</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=24399</link><description>I discovered this in Mosa.Runtime.Loader.AssemblyLoader while running the test cases on x64 Win7 with VS2008 and Icarus GUI Test Runner - all attempts at mosacl usage fail because the assembly-resolving code in mosacl can&amp;#39;t find mscorlib. Specifically, the only one it finds is the one in &amp;#37;windows&amp;#37;&amp;#92;Microsoft.NET&amp;#92;Framework64 , which is a 64-bit PE and the Mosa PE-loading code cannot handle the format.&lt;br /&gt;&lt;br /&gt;Any single one of the following workarounds should work &amp;#40;I&amp;#39;ve tried a couple&amp;#41;&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; Have a 32bit PE of mscorlib in the working directory while you are running the MOSA compiler&lt;br /&gt;&amp;#42; Compile mosacl with x86 build configuration instead of AnyCpu to force MOSA compiler to run under 32bit&lt;br /&gt;&amp;#42; Use &amp;#39;corflags&amp;#39; MS.NET utility to manually mark mosacl to require 32bit mode&lt;br /&gt;&amp;#42; Compile test-case assembly with x86 build configuration instead of AnyCpu to force MOSA compiler to run under 32bit&lt;br /&gt;&amp;#42; Use &amp;#39;corflags&amp;#39; MS.NET utility to manually mark test-case assembly to require 32bit mode&lt;br /&gt;&lt;br /&gt;Long-term issues&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; We need to implement PE32&amp;#43;&lt;br /&gt;&amp;#42; We need to make the assembly resolving code more intelligent about how it looks for an assembly to resolve a reference&lt;br /&gt;&lt;br /&gt;Its important to keep in mind that while related, this has nothing to do with mosacl cross-compiling for x64 - and more of making sure that the compiler runs on .NET supported platforms.&lt;br /&gt;Comments: ** Comment from web user: 54616E6E6572 ** &lt;p&gt;Just as a side note, to make it easier on whoever fixes this, the compiler fails when it checks the magic number &amp;#40;offset 0&amp;#41; in the optional header, where on a 64-bit &amp;#40;PE32&amp;#43;&amp;#41; platform the magic number is 0x20, and on a 32-bit &amp;#40;PE32&amp;#41; platform the magic number is 0x10. PE32&amp;#43; also removes and adds several fields and resizes several of the pointers to the 8-byte size.&lt;/p&gt;</description><author>54616E6E6572</author><pubDate>Fri, 21 Aug 2009 16:25:25 GMT</pubDate><guid isPermaLink="false">Commented Issue: mosacl Fails To Resolve mscorlib On Win64 When mosacl Executes As AnyCpu 20090821042525P</guid></item><item><title>Created Issue: mosacl Fails On Win64 When mosacl Input Is Built As AnyCpu</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=24399</link><description>I discovered this in Mosa.Runtime.Loader.AssemblyLoader while running the test cases on x64 Win7 with VS2008 and Icarus GUI Test Runner - all attempts at mosacl usage fail because the assembly-resolving code in mosacl can&amp;#39;t find mscorlib. Specifically, the only one it finds is the one in &amp;#37;windows&amp;#37;&amp;#92;Microsoft.NET&amp;#92;Framework64 , which is a 64-bit PE and the Mosa PE-loading code cannot handle the format.&lt;br /&gt;&lt;br /&gt;Any single one of the following workarounds should work &amp;#40;I&amp;#39;ve tried a couple&amp;#41;&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; Have a 32bit PE of mscorlib in the working directory while you are running the MOSA compiler&lt;br /&gt;&amp;#42; Compile mosacl with x86 build configuration instead of AnyCpu to force MOSA compiler to run under 32bit&lt;br /&gt;&amp;#42; Use &amp;#39;corflags&amp;#39; MS.NET utility to manually mark mosacl to require 32bit mode&lt;br /&gt;&amp;#42; Compile test-case assembly with x86 build configuration instead of AnyCpu to force MOSA compiler to run under 32bit&lt;br /&gt;&amp;#42; Use &amp;#39;corflags&amp;#39; MS.NET utility to manually mark test-case assembly to require 32bit mode&lt;br /&gt;&lt;br /&gt;Long-term issues&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#42; We need to implement PE32&amp;#43;&lt;br /&gt;&amp;#42; We need to make the assembly resolving code more intelligent about how it looks for an assembly to resolve a reference&lt;br /&gt;&lt;br /&gt;Its important to keep in mind that while related, this has nothing to do with mosacl cross-compiling for x64 - and more of making sure that the compiler runs on .NET supported platforms.&lt;br /&gt;</description><author>illuminus86</author><pubDate>Fri, 21 Aug 2009 16:04:01 GMT</pubDate><guid isPermaLink="false">Created Issue: mosacl Fails On Win64 When mosacl Input Is Built As AnyCpu 20090821040401P</guid></item><item><title>Closed Task: PlugGen - Group Output Members Into Regions</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=21852</link><description>Group output members into region to make stubs easier to navigate through&lt;br /&gt;Comments: &lt;p&gt;No longer valid&lt;/p&gt;</description><author>illuminus86</author><pubDate>Wed, 05 Aug 2009 13:04:15 GMT</pubDate><guid isPermaLink="false">Closed Task: PlugGen - Group Output Members Into Regions 20090805010415P</guid></item><item><title>Closed Issue: PlugGen - Remove '&amp;' From Ref/Out Parameter Outputs</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=21853</link><description>Right now, ref&amp;#47;out parameter types are outputting with the ampersand character appended. This is redundant to the ref&amp;#47;out keywords.&lt;br /&gt;Comments: &lt;p&gt;No longer valid&lt;/p&gt;</description><author>illuminus86</author><pubDate>Wed, 05 Aug 2009 13:04:14 GMT</pubDate><guid isPermaLink="false">Closed Issue: PlugGen - Remove '&amp;' From Ref/Out Parameter Outputs 20090805010414P</guid></item><item><title>Closed Task: PlugGen - Fill In Outputted Constant Field Values</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=21855</link><description>Outputted constant values need to be assigned during output generation as the constants need to exactly match their counterparts from the plugged type. The AOT&amp;#47;JIT will not be able to map inverse plug overrides on these &amp;#34;fields&amp;#34; because constants are probably inlined when an assembly is compiled into IL.&lt;br /&gt;&lt;br /&gt;This needs to be done right because it can cause major headaches.&lt;br /&gt;&lt;br /&gt;Difficulty arises because Mono.Cecil loads constant data as a byte array &amp;#40;as represented in IL&amp;#41;, which needs to be re-expressed as a CodeDOM primitive for the PlugGen emission process. Normal references to original constant values in the plugged assembly is not always possible due to the usage of constant fields as private&amp;#47;protected members.&lt;br /&gt;Comments: &lt;p&gt;No longer valid&lt;/p&gt;</description><author>illuminus86</author><pubDate>Wed, 05 Aug 2009 13:04:13 GMT</pubDate><guid isPermaLink="false">Closed Task: PlugGen - Fill In Outputted Constant Field Values 20090805010413P</guid></item><item><title>Closed Issue: PlugGen - References To Generic Classes Do Not Output Fully</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=21854</link><description>There is an issue where references to generic interfaces &amp;#40;in a class&amp;#39;s derived types, or in a explicit interface implementer of a method&amp;#41;, where the generic parameters should be inferred from the loaded metadata and filled into the output code. This is a bug manifestation, as it is meant to be handled by existing code.&lt;br /&gt;Comments: &lt;p&gt;No longer valid&lt;/p&gt;</description><author>illuminus86</author><pubDate>Wed, 05 Aug 2009 13:04:12 GMT</pubDate><guid isPermaLink="false">Closed Issue: PlugGen - References To Generic Classes Do Not Output Fully 20090805010412P</guid></item><item><title>Closed Feature: Implement Interface to Multiboot Information</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=19769</link><description>Provide an static class to read the multiboot information structure.&lt;br /&gt;Comments: &lt;p&gt;&lt;/p&gt;</description><author>tgiphil</author><pubDate>Mon, 27 Jul 2009 01:37:19 GMT</pubDate><guid isPermaLink="false">Closed Feature: Implement Interface to Multiboot Information 20090727013719A</guid></item><item><title>Closed Feature: Create a basic block ordering stage</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=19747</link><description>The responsibility of a block ordering stage is to linearize the control flow in order to remove jumps inside a method. The optimal order is determined by removing any unneeded backwards jumps and eliminating forward jumps. To achieve this small blocks may need to be duplicated.&lt;br /&gt;&lt;br /&gt;If this stage is introduced the register allocators and all other following stages must be changed to use this block order for processing as it represents the ideal flow of code.&lt;br /&gt;Comments: &lt;p&gt;&lt;/p&gt;</description><author>tgiphil</author><pubDate>Mon, 27 Jul 2009 01:33:13 GMT</pubDate><guid isPermaLink="false">Closed Feature: Create a basic block ordering stage 20090727013313A</guid></item><item><title>Closed Issue: Incorrect x86 variable offset</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=21181</link><description>The compiler does not generate the correct x86 binary for the following method&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#160;public unsafe static void WriteChar&amp;#40;byte c, byte color, byte&amp;#42; address&amp;#41;&lt;br /&gt;&amp;#123;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; byte&amp;#42; address2 &amp;#61; address &amp;#43; 1&amp;#59;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;#42;address &amp;#61; c&amp;#59; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;#42;address2 &amp;#61; color&amp;#59;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#47;&amp;#47; this is the problem statement&lt;br /&gt;&amp;#125;&lt;br /&gt;&lt;br /&gt;The IL generated for this method is&amp;#58;&lt;br /&gt;&lt;br /&gt;.method public hidebysig static void&amp;#160; WriteChar&amp;#40;uint8 c, uint8 color, uint8&amp;#42; address&amp;#41; cil managed&lt;br /&gt;&amp;#123;&lt;br /&gt;&amp;#160; &amp;#47;&amp;#47; Code size&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 13 &amp;#40;0xd&amp;#41;&lt;br /&gt;&amp;#160; .maxstack&amp;#160; 2&lt;br /&gt;&amp;#160; .locals init &amp;#40;&amp;#91;0&amp;#93; uint8&amp;#42; address2&amp;#41;&lt;br /&gt;&amp;#160; IL_0000&amp;#58;&amp;#160; nop&lt;br /&gt;&amp;#160; IL_0001&amp;#58;&amp;#160; ldarg.2&lt;br /&gt;&amp;#160; IL_0002&amp;#58;&amp;#160; ldc.i4.1&lt;br /&gt;&amp;#160; IL_0003&amp;#58;&amp;#160; conv.i&lt;br /&gt;&amp;#160; IL_0004&amp;#58;&amp;#160; add&lt;br /&gt;&amp;#160; IL_0005&amp;#58;&amp;#160; stloc.0&lt;br /&gt;&lt;br /&gt;&amp;#160; IL_0006&amp;#58;&amp;#160; ldarg.2&lt;br /&gt;&amp;#160; IL_0007&amp;#58;&amp;#160; ldarg.0&lt;br /&gt;&amp;#160; IL_0008&amp;#58;&amp;#160; stind.i1&lt;br /&gt;&lt;br /&gt;&amp;#160; IL_0009&amp;#58;&amp;#160; ldloc.0&lt;br /&gt;&amp;#160; IL_000a&amp;#58;&amp;#160; ldarg.1&lt;br /&gt;&amp;#160; IL_000b&amp;#58;&amp;#160; stind.i1&lt;br /&gt;&lt;br /&gt;&amp;#160; IL_000c&amp;#58;&amp;#160; ret&lt;br /&gt;&amp;#125; &amp;#47;&amp;#47; end of method Boot&amp;#58;&amp;#58;WriteChar&lt;br /&gt;&lt;br /&gt;And finally here&amp;#39;s the&amp;#160;disassemble&amp;#160;code &amp;#58;&lt;br /&gt;&lt;br /&gt;.text&amp;#58;00402EC1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;#91;ebp&amp;#43;var_14&amp;#93;, 1&lt;br /&gt;.text&amp;#58;00402ECB&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, &amp;#91;ebp&amp;#43;arg_8&amp;#93;&lt;br /&gt;.text&amp;#58;00402ED1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; add&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, &amp;#91;ebp&amp;#43;var_14&amp;#93;&lt;br /&gt;.text&amp;#58;00402ED7&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;#91;ebp&amp;#43;var_10&amp;#93;, eax&lt;br /&gt;&lt;br /&gt;.text&amp;#58;00402EDD&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, &amp;#91;ebp&amp;#43;arg_8&amp;#93;&lt;br /&gt;.text&amp;#58;00402EE3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dl, &amp;#91;ebp&amp;#43;arg_0&amp;#93;&lt;br /&gt;.text&amp;#58;00402EE9&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;#91;eax&amp;#43;0&amp;#93;, dl&lt;br /&gt;&lt;br /&gt;.text&amp;#58;00402EEF&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, &amp;#91;ebp&amp;#43;var_C&amp;#93;&amp;#160; &amp;#160;&amp;#59; should be mov eax, &amp;#91;ebp&amp;#43;var_10&amp;#93; &amp;#63;&amp;#63;&amp;#63;&lt;br /&gt;.text&amp;#58;00402EF5&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dl, &amp;#91;ebp&amp;#43;arg_4&amp;#93;&lt;br /&gt;.text&amp;#58;00402EFB&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;#91;eax&amp;#43;0&amp;#93;, dl&lt;br /&gt;&lt;br /&gt;The&amp;#160;offset should be var_10 &amp;#40;and not var_C&amp;#41; in my&amp;#160;opinion.&amp;#160;&lt;br /&gt;&lt;br /&gt;Any suggestions&amp;#160;on how to fix this&amp;#63;&lt;br /&gt;Comments: This is caused by a problem with SSA and not a variable offset. &lt;br /&gt;&lt;br /&gt;Closing this case.</description><author>tgiphil</author><pubDate>Sat, 04 Apr 2009 14:59:51 GMT</pubDate><guid isPermaLink="false">Closed Issue: Incorrect x86 variable offset 20090404025951P</guid></item><item><title>Closed Issue: RTL8139</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=21528</link><description>The file Mosa&amp;#47;DeviceDrivers&amp;#47;PCI&amp;#47;NetworkCard&amp;#47;RTL8139.cs creates a class Mosa.DeviceDrivers.PCI.VideoCard.RTL8139.&lt;br /&gt;&lt;br /&gt;The class should have the following namespace instead&amp;#58; Mosa.DeviceDrivers.PCI.NetworkCard.RTL8139&lt;br /&gt;Comments: TRL8139 has been removed.</description><author>tgiphil</author><pubDate>Sat, 04 Apr 2009 14:21:16 GMT</pubDate><guid isPermaLink="false">Closed Issue: RTL8139 20090404022116P</guid></item><item><title>Commented Issue: Incorrect x86 variable offset</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=21181</link><description>The compiler does not generate the correct x86 binary for the following method&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#160;public unsafe static void WriteChar&amp;#40;byte c, byte color, byte&amp;#42; address&amp;#41;&lt;br /&gt;&amp;#123;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; byte&amp;#42; address2 &amp;#61; address &amp;#43; 1&amp;#59;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;#42;address &amp;#61; c&amp;#59; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;#42;address2 &amp;#61; color&amp;#59;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#47;&amp;#47; this is the problem statement&lt;br /&gt;&amp;#125;&lt;br /&gt;&lt;br /&gt;The IL generated for this method is&amp;#58;&lt;br /&gt;&lt;br /&gt;.method public hidebysig static void&amp;#160; WriteChar&amp;#40;uint8 c, uint8 color, uint8&amp;#42; address&amp;#41; cil managed&lt;br /&gt;&amp;#123;&lt;br /&gt;&amp;#160; &amp;#47;&amp;#47; Code size&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 13 &amp;#40;0xd&amp;#41;&lt;br /&gt;&amp;#160; .maxstack&amp;#160; 2&lt;br /&gt;&amp;#160; .locals init &amp;#40;&amp;#91;0&amp;#93; uint8&amp;#42; address2&amp;#41;&lt;br /&gt;&amp;#160; IL_0000&amp;#58;&amp;#160; nop&lt;br /&gt;&amp;#160; IL_0001&amp;#58;&amp;#160; ldarg.2&lt;br /&gt;&amp;#160; IL_0002&amp;#58;&amp;#160; ldc.i4.1&lt;br /&gt;&amp;#160; IL_0003&amp;#58;&amp;#160; conv.i&lt;br /&gt;&amp;#160; IL_0004&amp;#58;&amp;#160; add&lt;br /&gt;&amp;#160; IL_0005&amp;#58;&amp;#160; stloc.0&lt;br /&gt;&lt;br /&gt;&amp;#160; IL_0006&amp;#58;&amp;#160; ldarg.2&lt;br /&gt;&amp;#160; IL_0007&amp;#58;&amp;#160; ldarg.0&lt;br /&gt;&amp;#160; IL_0008&amp;#58;&amp;#160; stind.i1&lt;br /&gt;&lt;br /&gt;&amp;#160; IL_0009&amp;#58;&amp;#160; ldloc.0&lt;br /&gt;&amp;#160; IL_000a&amp;#58;&amp;#160; ldarg.1&lt;br /&gt;&amp;#160; IL_000b&amp;#58;&amp;#160; stind.i1&lt;br /&gt;&lt;br /&gt;&amp;#160; IL_000c&amp;#58;&amp;#160; ret&lt;br /&gt;&amp;#125; &amp;#47;&amp;#47; end of method Boot&amp;#58;&amp;#58;WriteChar&lt;br /&gt;&lt;br /&gt;And finally here&amp;#39;s the&amp;#160;disassemble&amp;#160;code &amp;#58;&lt;br /&gt;&lt;br /&gt;.text&amp;#58;00402EC1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;#91;ebp&amp;#43;var_14&amp;#93;, 1&lt;br /&gt;.text&amp;#58;00402ECB&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, &amp;#91;ebp&amp;#43;arg_8&amp;#93;&lt;br /&gt;.text&amp;#58;00402ED1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; add&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, &amp;#91;ebp&amp;#43;var_14&amp;#93;&lt;br /&gt;.text&amp;#58;00402ED7&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;#91;ebp&amp;#43;var_10&amp;#93;, eax&lt;br /&gt;&lt;br /&gt;.text&amp;#58;00402EDD&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, &amp;#91;ebp&amp;#43;arg_8&amp;#93;&lt;br /&gt;.text&amp;#58;00402EE3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dl, &amp;#91;ebp&amp;#43;arg_0&amp;#93;&lt;br /&gt;.text&amp;#58;00402EE9&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;#91;eax&amp;#43;0&amp;#93;, dl&lt;br /&gt;&lt;br /&gt;.text&amp;#58;00402EEF&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; eax, &amp;#91;ebp&amp;#43;var_C&amp;#93;&amp;#160; &amp;#160;&amp;#59; should be mov eax, &amp;#91;ebp&amp;#43;var_10&amp;#93; &amp;#63;&amp;#63;&amp;#63;&lt;br /&gt;.text&amp;#58;00402EF5&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; dl, &amp;#91;ebp&amp;#43;arg_4&amp;#93;&lt;br /&gt;.text&amp;#58;00402EFB&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mov&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;#91;eax&amp;#43;0&amp;#93;, dl&lt;br /&gt;&lt;br /&gt;The&amp;#160;offset should be var_10 &amp;#40;and not var_C&amp;#41; in my&amp;#160;opinion.&amp;#160;&lt;br /&gt;&lt;br /&gt;Any suggestions&amp;#160;on how to fix this&amp;#63;&lt;br /&gt;Comments: ** Comment from web user: tgiphil ** &lt;p&gt;Seems to be an SSA problem and not an alignment problem.&lt;/p&gt;</description><author>tgiphil</author><pubDate>Sat, 04 Apr 2009 14:19:25 GMT</pubDate><guid isPermaLink="false">Commented Issue: Incorrect x86 variable offset 20090404021925P</guid></item><item><title>Created Task: PlugGen - Fill In Outputted Constant Field Values</title><link>http://mosa.codeplex.com/WorkItem/View.aspx?WorkItemId=21855</link><description>Outputted constant values need to be assigned during output generation as the constants need to exactly match their counterparts from the plugged type. The AOT&amp;#47;JIT will not be able to map inverse plug overrides on these &amp;#34;fields&amp;#34; because constants are probably inlined when an assembly is compiled into IL.&lt;br /&gt;&lt;br /&gt;This needs to be done right because it can cause major headaches.&lt;br /&gt;&lt;br /&gt;Difficulty arises because Mono.Cecil loads constant data as a byte array &amp;#40;as represented in IL&amp;#41;, which needs to be re-expressed as a CodeDOM primitive for the PlugGen emission process. Normal references to original constant values in the plugged assembly is not always possible due to the usage of constant fields as private&amp;#47;protected members.&lt;br /&gt;</description><author>illuminus86</author><pubDate>Tue, 31 Mar 2009 05:26:07 GMT</pubDate><guid isPermaLink="false">Created Task: PlugGen - Fill In Outputted Constant Field Values 20090331052607A</guid></item></channel></rss>