Loader: Identify sections based on virtual addresses, and set the LoadAddrMask correc...
authorGabe Black <gblack@eecs.umich.edu>
Sat, 13 Oct 2007 03:10:10 +0000 (20:10 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Sat, 13 Oct 2007 03:10:10 +0000 (20:10 -0700)
--HG--
extra : convert_revision : efa6cf42f7e69074c645dfcac335a3edf0941389

src/arch/x86/isa_traits.hh
src/base/loader/elf_object.cc

index 13fe9af4e73f8dd4511f138e331e419dce5d66b5..762f9b172221bceba120a85611d0bfcf62b5507d 100644 (file)
@@ -136,7 +136,7 @@ namespace X86ISA
 
     StaticInstPtr decodeInst(ExtMachInst);
 
-    const Addr LoadAddrMask = ULL(0xffffffffff);
+    const Addr LoadAddrMask = ULL(-1);
 };
 
 #endif // __ARCH_X86_ISATRAITS_HH__
index 653088c449526a4c6e45fab8e8a1adec73c57406..23df1c5ba179781cd7371f02e8333911d9dff98d 100644 (file)
@@ -270,13 +270,13 @@ ElfObject::ElfObject(const string &_filename, int _fd,
         }
 
         // Check to see if this is the text or data segment
-        if (phdr.p_paddr <= textSecStart &&
-                phdr.p_paddr + phdr.p_filesz > textSecStart) {
+        if (phdr.p_vaddr <= textSecStart &&
+                phdr.p_vaddr + phdr.p_filesz > textSecStart) {
             text.baseAddr = phdr.p_paddr;
             text.size = phdr.p_filesz;
             text.fileImage = fileData + phdr.p_offset;
-        } else if (phdr.p_paddr <= dataSecStart &&
-                phdr.p_paddr + phdr.p_filesz > dataSecStart) {
+        } else if (phdr.p_vaddr <= dataSecStart &&
+                phdr.p_vaddr + phdr.p_filesz > dataSecStart) {
             data.baseAddr = phdr.p_paddr;
             data.size = phdr.p_filesz;
             data.fileImage = fileData + phdr.p_offset;