|
From: <ac...@us...> - 2010-04-06 19:30:32
|
Revision: 33
http://clibinutils.svn.sourceforge.net/clibinutils/?rev=33&view=rev
Author: aco
Date: 2010-04-06 19:30:24 +0000 (Tue, 06 Apr 2010)
Log Message:
-----------
When linking rename also private Types
Modified Paths:
--------------
mono-based-binutils/trunk/ChangeLog
mono-based-binutils/trunk/tools/gcc4cli/utils/CObject.cs
Modified: mono-based-binutils/trunk/ChangeLog
===================================================================
--- mono-based-binutils/trunk/ChangeLog 2010-04-06 19:24:53 UTC (rev 32)
+++ mono-based-binutils/trunk/ChangeLog 2010-04-06 19:30:24 UTC (rev 33)
@@ -14,6 +14,7 @@
* tools/gcc4cli/ld/Driver.cs: ignore option -lm.
* scripts/ld.in: pass -lm option to ld.exe.
* scripts/as.in: add option to generate debug information.
+ * tools/gcc4cli/utils/CObject.cs: When linking rename also private Types.
2010-03-24 Thierry LAFAGE <thi...@in...>
Modified: mono-based-binutils/trunk/tools/gcc4cli/utils/CObject.cs
===================================================================
--- mono-based-binutils/trunk/tools/gcc4cli/utils/CObject.cs 2010-04-06 19:24:53 UTC (rev 32)
+++ mono-based-binutils/trunk/tools/gcc4cli/utils/CObject.cs 2010-04-06 19:30:24 UTC (rev 33)
@@ -35,14 +35,13 @@
return (method.CallingConvention & MethodCallingConvention.VarArg) != 0;
}
- internal void RenamePrivates ()
+ void RenamePrivateMembers (string prefix)
{
Hashtable names_map = new Hashtable ();
Hashtable new_private_symbols = new Hashtable ();
- int id = ++renamer_id;
foreach (MemberReference member in private_symbols.Values) {
string old_name = member.Name;
- string new_name = "Obj?" + id + "?" + old_name;
+ string new_name = prefix + old_name;
member.Name = new_name;
new_private_symbols[new_name] = member;
names_map[old_name] = new_name;
@@ -59,6 +58,28 @@
}
}
+ void RenamePrivateTypes (string prefix)
+ {
+ Hashtable new_def_types = new Hashtable ();
+ foreach (TypeDefinition type in def_types.Values) {
+ if (!type.IsPublic) {
+ string old_name = type.Name;
+ string new_name = prefix + old_name;
+ type.Name = new_name;
+ }
+ new_def_types [type.Name] = type;
+ }
+ def_types = new_def_types;
+ }
+
+ internal void RenamePrivates ()
+ {
+ int id = ++renamer_id;
+ string prefix = "Obj?" + id + "?";
+ RenamePrivateMembers (prefix);
+ RenamePrivateTypes (prefix);
+ }
+
public override void EndBuilding ()
{
if (Building) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|