[vmkit-commits] [vmkit] r53593 - /vmkit/trunk/lib/N3/VMCore/MSCorlib.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Tue Jul 15 01:47:50 PDT 2008


Author: geoffray
Date: Tue Jul 15 03:47:50 2008
New Revision: 53593

URL: http://llvm.org/viewvc/llvm-project?rev=53593&view=rev
Log:
Look at all sections when finding array data.


Modified:
    vmkit/trunk/lib/N3/VMCore/MSCorlib.cpp

Modified: vmkit/trunk/lib/N3/VMCore/MSCorlib.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/MSCorlib.cpp?rev=53593&r1=53592&r2=53593&view=diff

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/MSCorlib.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/MSCorlib.cpp Tue Jul 15 03:47:50 2008
@@ -38,10 +38,17 @@
   Assembly* ass = type->assembly;
 
   uint32 rva = ass->getRVAFromField(field->token);
-  Section* rsrcSection = ass->rsrcSection;
+  Section* inSection = 0;
+  
+  if (rva >= ass->rsrcSection->virtualAddress && rva < ass->rsrcSection->virtualAddress + ass->rsrcSection->virtualSize)
+    inSection = ass->rsrcSection;
+  if (rva >= ass->textSection->virtualAddress && rva < ass->textSection->virtualAddress + ass->textSection->virtualSize)
+    inSection = ass->textSection;
+  if (rva >= ass->relocSection->virtualAddress && rva < ass->relocSection->virtualAddress + ass->relocSection->virtualSize)
+    inSection = ass->relocSection;
 
   uint32 size = array->size;
-  uint32 offset = rsrcSection->rawAddress + (rva - rsrcSection->virtualAddress);
+  uint32 offset = inSection->rawAddress + (rva - inSection->virtualAddress);
   ArrayUInt8* bytes = ass->bytes;
 
   if (bs == MSCorlib::pChar) {





More information about the vmkit-commits mailing list