Author: ankit
Date: 2006-11-09 04:29:17 -0500 (Thu, 09 Nov 2006)
New Revision: 67582

Modified:
   trunk/mcs/class/PEAPI/ChangeLog
   trunk/mcs/class/PEAPI/Metadata.cs
   trunk/mcs/ilasm/codegen/Assembly.cs
   trunk/mcs/ilasm/codegen/ChangeLog
   trunk/mcs/ilasm/codegen/CodeGen.cs
   trunk/mcs/ilasm/codegen/ExternTable.cs
   trunk/mcs/ilasm/parser/ChangeLog
   trunk/mcs/ilasm/parser/ILParser.jay
   trunk/mcs/ilasm/scanner/ChangeLog
   trunk/mcs/ilasm/scanner/ILTables.cs
Log:
Fix bug #79860. Add support for Retargetable assembly flag.

In ilasm/codegen:

        * CodeGen.cs (CodeGen.BeginAssemblyRef): Add param for attributes.
        (SetAssemblyName): Rename to .. 
        (SetThisAssembly): .. this. Add param for attributes.
        * ExternTable (ExternAssembly.ctor): Likewise.
        (ExternAssembly.Resolve): Add attributes.
        (ExternTable.AddAssembly): Add param for attributes.
        (ExternTable): Update to changes.
        * Assembly.cs (Assembly.SetAssemblyAttr): New.
        (Assembly.Resolve): Add the flags.

In ilasm/scanner:

        * ILTables.cs (keywords): Add 'retargetable'.

In ilasm/parser:

        * ILParser.jay (K_RETARGETABLE): New.
        (asm_attr): Add rule for K_RETARGETABLE.
        (assembly_head): Handle attributes.
        (assemblyref_head): Add asm_attr.

In class/PEAPI:

        * Metadata.cs (AssemAttr.Retargetable): New.
        (AssemblyRef.AddAssemblyAttr): New.



Modified: trunk/mcs/class/PEAPI/ChangeLog
===================================================================
--- trunk/mcs/class/PEAPI/ChangeLog     2006-11-09 09:07:40 UTC (rev 67581)
+++ trunk/mcs/class/PEAPI/ChangeLog     2006-11-09 09:29:17 UTC (rev 67582)
@@ -1,3 +1,8 @@
+2006-11-09  Ankit Jain  <[EMAIL PROTECTED]>
+
+       * Metadata.cs (AssemAttr.Retargetable): New.
+       (AssemblyRef.AddAssemblyAttr): New.
+
 2006-07-20  Ankit Jain  <[EMAIL PROTECTED]>
 
        * Metadata.cs (CustomAttribute.BuildTables): Value can be null.

Modified: trunk/mcs/class/PEAPI/Metadata.cs
===================================================================
--- trunk/mcs/class/PEAPI/Metadata.cs   2006-11-09 09:07:40 UTC (rev 67581)
+++ trunk/mcs/class/PEAPI/Metadata.cs   2006-11-09 09:29:17 UTC (rev 67582)
@@ -29,7 +29,7 @@
        /// <summary>
        /// Attributes for this assembly
        /// </summary>
-       public enum AssemAttr { EnableJITCompileTracking = 0x8000, 
+       public enum AssemAttr { Retargetable = 0x100, EnableJITCompileTracking 
= 0x8000, 
                DisableJITCompileOptimizer = 0x4000}
 
        /// <summary>
@@ -4545,6 +4545,11 @@
                        tabIx = MDTable.AssemblyRef;
                }
 
+               public void AddAssemblyAttr (AssemAttr aa)
+               {
+                       flags |= (uint)aa;
+               }
+
                /// <summary>
                /// Add version information about this external assembly
                /// </summary>

Modified: trunk/mcs/ilasm/codegen/Assembly.cs
===================================================================
--- trunk/mcs/ilasm/codegen/Assembly.cs 2006-11-09 09:07:40 UTC (rev 67581)
+++ trunk/mcs/ilasm/codegen/Assembly.cs 2006-11-09 09:29:17 UTC (rev 67582)
@@ -46,6 +46,7 @@
                 private int revision_version;
                 private string locale;
                 private int hash_algorithm;
+                private PEAPI.AssemAttr attr;
 
                 public Assembly (string name)
                 {
@@ -87,6 +88,11 @@
                         this.public_key = public_key;
                 }
 
+                public void SetAssemblyAttr (PEAPI.AssemAttr attr)
+                {
+                        this.attr = attr;
+                }
+
                 public void AddCustomAttribute (CustomAttr customattr)
                 {
                         if (customattr_list == null)
@@ -111,6 +117,7 @@
                                 revision_version, public_key,
                                 (uint) hash_algorithm, locale);
 
+                        asm.AddAssemblyAttr (attr);
                 }
         }
 }

Modified: trunk/mcs/ilasm/codegen/ChangeLog
===================================================================
--- trunk/mcs/ilasm/codegen/ChangeLog   2006-11-09 09:07:40 UTC (rev 67581)
+++ trunk/mcs/ilasm/codegen/ChangeLog   2006-11-09 09:29:17 UTC (rev 67582)
@@ -1,3 +1,15 @@
+2006-11-09  Ankit Jain  <[EMAIL PROTECTED]>
+
+       * CodeGen.cs (CodeGen.BeginAssemblyRef): Add param for attributes.
+       (SetAssemblyName): Rename to .. 
+       (SetThisAssembly): .. this. Add param for attributes.
+       * ExternTable (ExternAssembly.ctor): Likewise.
+       (ExternAssembly.Resolve): Add attributes.
+       (ExternTable.AddAssembly): Add param for attributes.
+       (ExternTable): Update to changes.
+       * Assembly.cs (Assembly.SetAssemblyAttr): New.
+       (Assembly.Resolve): Add the flags.
+
 2006-07-20  Ankit Jain  <[EMAIL PROTECTED]>
 
        * TypeDef.cs (.ctor): If the type is an interface, then make it

Modified: trunk/mcs/ilasm/codegen/CodeGen.cs
===================================================================
--- trunk/mcs/ilasm/codegen/CodeGen.cs  2006-11-09 09:07:40 UTC (rev 67581)
+++ trunk/mcs/ilasm/codegen/CodeGen.cs  2006-11-09 09:29:17 UTC (rev 67582)
@@ -238,12 +238,13 @@
                         this.stack_reserve = stack_reserve;
                 }
 
-                public void SetAssemblyName (string name)
+                public void SetThisAssembly (string name, PEAPI.AssemAttr attr)
                 {
                         if (this_assembly != null && this_assembly.Name != 
name)
                                 Report.Error ("Multiple assembly 
declarations");
 
                         this_assembly = new Assembly (name);
+                        this_assembly.SetAssemblyAttr (attr);
                         if (name != "mscorlib")
                                 ExternTable.AddCorlib ();
                 }
@@ -409,9 +410,9 @@
 
                 }
 
-                public void BeginAssemblyRef (string name, AssemblyName 
asmb_name)
+                public void BeginAssemblyRef (string name, AssemblyName 
asmb_name, PEAPI.AssemAttr attr)
                 {
-                        current_customattrtarget = current_assemblyref = 
ExternTable.AddAssembly (name, asmb_name);
+                        current_customattrtarget = current_assemblyref = 
ExternTable.AddAssembly (name, asmb_name, attr);
                         current_declsectarget = current_assemblyref;
                 }
 

Modified: trunk/mcs/ilasm/codegen/ExternTable.cs
===================================================================
--- trunk/mcs/ilasm/codegen/ExternTable.cs      2006-11-09 09:07:40 UTC (rev 
67581)
+++ trunk/mcs/ilasm/codegen/ExternTable.cs      2006-11-09 09:29:17 UTC (rev 
67582)
@@ -146,11 +146,14 @@
                 private byte [] hash;
                 private DeclSecurity decl_sec;
                 private AssemblyName asmb_name;
+                //flags
+                private PEAPI.AssemAttr attr;
 
-                public ExternAssembly (string name, AssemblyName asmb_name) : 
base (name)
+                public ExternAssembly (string name, AssemblyName asmb_name, 
PEAPI.AssemAttr attr) : base (name)
                 {
                         this.name = name;
                         this.asmb_name = asmb_name;
+                        this.attr = attr;
                         major = minor = build = revision = -1;
                 }
 
@@ -180,6 +183,7 @@
                                 return;
 
                         AssemblyRef = code_gen.PEFile.AddExternAssembly (name);
+                        AssemblyRef.AddAssemblyAttr (attr);
                         if (major != -1)
                                 AssemblyRef.AddVersionInfo (major, minor, 
build, revision);
                         if (public_key != null)
@@ -256,14 +260,14 @@
                         string mscorlib_name = "mscorlib";
                         AssemblyName mscorlib = new AssemblyName ();
                         mscorlib.Name = mscorlib_name;
-                        AddAssembly (mscorlib_name, mscorlib);
+                        AddAssembly (mscorlib_name, mscorlib, 0);
 
                         // Also need to alias corlib, normally corlib and
                         // mscorlib are used interchangably
                         assembly_table["corlib"] = assembly_table["mscorlib"];
                 }
 
-                public ExternAssembly AddAssembly (string name, AssemblyName 
asmb_name)
+                public ExternAssembly AddAssembly (string name, AssemblyName 
asmb_name, PEAPI.AssemAttr attr)
                 {
                         ExternAssembly ea = null;
 
@@ -275,7 +279,7 @@
                                         return ea;
                         }
 
-                        ea = new ExternAssembly (name, asmb_name);
+                        ea = new ExternAssembly (name, asmb_name, attr);
 
                         assembly_table [name] = ea;
 
@@ -334,7 +338,7 @@
                                 asmname.Name = asmb_name;
 
                                 Report.Warning (String.Format ("Reference to 
undeclared extern assembly '{0}', adding.", asmb_name));
-                                ext_asmb = AddAssembly (asmb_name, asmname);
+                                ext_asmb = AddAssembly (asmb_name, asmname, 0);
                         }
 
                         return ext_asmb.GetTypeRef (full_name, is_valuetype);

Modified: trunk/mcs/ilasm/parser/ChangeLog
===================================================================
--- trunk/mcs/ilasm/parser/ChangeLog    2006-11-09 09:07:40 UTC (rev 67581)
+++ trunk/mcs/ilasm/parser/ChangeLog    2006-11-09 09:29:17 UTC (rev 67582)
@@ -1,3 +1,10 @@
+2006-11-09  Ankit Jain  <[EMAIL PROTECTED]>
+
+       * ILParser.jay (K_RETARGETABLE): New.
+       (asm_attr): Add rule for K_RETARGETABLE.
+       (assembly_head): Handle attributes.
+       (assemblyref_head): Add asm_attr.
+
 2006-06-07  Ankit Jain  <[EMAIL PROTECTED]>
 
        * ILParser.jay : Update to use Report.Warning instead of

Modified: trunk/mcs/ilasm/parser/ILParser.jay
===================================================================
--- trunk/mcs/ilasm/parser/ILParser.jay 2006-11-09 09:07:40 UTC (rev 67581)
+++ trunk/mcs/ilasm/parser/ILParser.jay 2006-11-09 09:29:17 UTC (rev 67582)
@@ -460,6 +460,7 @@
 // %token K_PUBLICKEY
 %token K_ENABLEJITTRACKING
 %token K_DISABLEJITOPTIMIZER
+%token K_RETARGETABLE
 %token K_PRESERVESIG
 %token K_BEFOREFIELDINIT
 %token K_ALIGNMENT
@@ -3059,16 +3060,23 @@
 
 assembly_head          : D_ASSEMBLY asm_attr slashed_name
                           {
-                                codegen.SetAssemblyName ((string) $3);
+                                codegen.SetThisAssembly ((string) $3, 
(PEAPI.AssemAttr) $2);
                                 codegen.CurrentCustomAttrTarget = 
codegen.ThisAssembly;
                                codegen.CurrentDeclSecurityTarget = 
codegen.ThisAssembly;
                           }
                        ;
 
 asm_attr               : /* EMPTY */
-                       | asm_attr K_NOAPPDOMAIN
+                         {
+                                 $$ = new PEAPI.AssemAttr ();
+                         }
+                       /*| asm_attr K_NOAPPDOMAIN
                        | asm_attr K_NOPROCESS
-                       | asm_attr K_NOMACHINE
+                       | asm_attr K_NOMACHINE*/
+                       | asm_attr K_RETARGETABLE
+                         {
+                                 $$ = ((PEAPI.AssemAttr) $1) | 
PEAPI.AssemAttr.Retargetable;
+                         }
                        ;
 
 assembly_decls         : /* EMPTY */
@@ -3112,19 +3120,19 @@
 assemblyref_all                : assemblyref_head OPEN_BRACE assemblyref_decls 
CLOSE_BRACE
                        ;
 
-assemblyref_head       : D_ASSEMBLY K_EXTERN slashed_name
+assemblyref_head       : D_ASSEMBLY K_EXTERN asm_attr slashed_name
                           {
                                 System.Reflection.AssemblyName asmb_name = 
                                        new System.Reflection.AssemblyName ();
-                               asmb_name.Name = (string) $3;
-                               codegen.BeginAssemblyRef ((string) $3, 
asmb_name);
+                               asmb_name.Name = (string) $4;
+                               codegen.BeginAssemblyRef ((string) $4, 
asmb_name, (PEAPI.AssemAttr) $3);
                           }
-                       | D_ASSEMBLY K_EXTERN slashed_name K_AS slashed_name
+                       | D_ASSEMBLY K_EXTERN asm_attr slashed_name K_AS 
slashed_name
                           {
                                 System.Reflection.AssemblyName asmb_name = 
                                        new System.Reflection.AssemblyName ();
-                               asmb_name.Name = (string) $3;
-                               codegen.BeginAssemblyRef ((string) $5, 
asmb_name);
+                               asmb_name.Name = (string) $4;
+                               codegen.BeginAssemblyRef ((string) $6, 
asmb_name, (PEAPI.AssemAttr) $3);
                           }
                        ;
 

Modified: trunk/mcs/ilasm/scanner/ChangeLog
===================================================================
--- trunk/mcs/ilasm/scanner/ChangeLog   2006-11-09 09:07:40 UTC (rev 67581)
+++ trunk/mcs/ilasm/scanner/ChangeLog   2006-11-09 09:29:17 UTC (rev 67582)
@@ -1,3 +1,7 @@
+2006-11-09  Ankit Jain  <[EMAIL PROTECTED]>
+
+       * ILTables.cs (keywords): Add 'retargetable'.
+
 2006-05-26  Ankit Jain  <[EMAIL PROTECTED]>
 
        *  ILTables.cs (keywords): Move 'property' out of NET_2_0 .

Modified: trunk/mcs/ilasm/scanner/ILTables.cs
===================================================================
--- trunk/mcs/ilasm/scanner/ILTables.cs 2006-11-09 09:07:40 UTC (rev 67581)
+++ trunk/mcs/ilasm/scanner/ILTables.cs 2006-11-09 09:29:17 UTC (rev 67582)
@@ -301,6 +301,7 @@
                                 // keywords ["publickey"] = new ILToken 
(Token.K_PUBLICKEY, "publickey");
                                 keywords ["enablejittracking"] = new ILToken 
(Token.K_ENABLEJITTRACKING, "enablejittracking");
                                 keywords ["disablejitoptimizer"] = new ILToken 
(Token.K_DISABLEJITOPTIMIZER, "disablejitoptimizer");
+                                keywords ["retargetable"] = new ILToken 
(Token.K_RETARGETABLE, "retargetable");
                                 keywords ["preservesig"] = new ILToken 
(Token.K_PRESERVESIG, "preservesig");
                                 keywords ["beforefieldinit"] = new ILToken 
(Token.K_BEFOREFIELDINIT, "beforefieldinit");
                                 keywords ["alignment"] = new ILToken 
(Token.K_ALIGNMENT, "alignment");

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to