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. |