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