void do_update_shlib_info(Inferior inferior)
{
// if (Process.MonoRuntimeFound)
// return;
if (!dyld_all_image_infos.IsNull) {
int size = 2 * inferior.TargetLongIntegerSize + 2 * inferior.TargetAddressSize;
TargetReader reader = new TargetReader (inferior.ReadMemory (dyld_all_image_infos, size));
reader.ReadLongInteger (); // version
int infoArrayCount = (int)reader.ReadLongInteger ();
TargetAddress infoArray = reader.ReadAddress ();
size = infoArrayCount * (inferior.TargetLongIntegerSize + 2 * inferior.TargetAddressSize);
reader = new TargetReader (inferior.ReadMemory (infoArray, size));
Console.Write("Loading symbols for shared libraries:");
for (int i=0; i<infoArrayCount; i++)
{
TargetAddress imageLoadAddress = reader.ReadAddress();
TargetAddress imageFilePath = reader.ReadAddress();
reader.ReadLongInteger(); //imageFileModDate
string name = inferior.ReadString (imageFilePath);
if (name == null)
continue;
if (bfd_hash.Contains (name))
continue;
try {
Console.Write(".");
AddExecutableFile (inferior, name, imageLoadAddress/*TargetAddress.Null*/, false, true);
}
catch (SymbolTableException e)
{
Console.WriteLine("Unable to load binary for "+name);
bfd_hash.Add (name, null);
}
}
Console.WriteLine("");
}
}