[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