Loader: Identify sections based on virtual addresses, and set the LoadAddrMask correctly for x86.

--HG--
extra : convert_revision : efa6cf42f7e69074c645dfcac335a3edf0941389
This commit is contained in:
Gabe Black 2007-10-12 20:10:10 -07:00
parent f6e5b92d63
commit ac27bc7878
2 changed files with 5 additions and 5 deletions

View file

@ -136,7 +136,7 @@ namespace X86ISA
StaticInstPtr decodeInst(ExtMachInst); StaticInstPtr decodeInst(ExtMachInst);
const Addr LoadAddrMask = ULL(0xffffffffff); const Addr LoadAddrMask = ULL(-1);
}; };
#endif // __ARCH_X86_ISATRAITS_HH__ #endif // __ARCH_X86_ISATRAITS_HH__

View file

@ -270,13 +270,13 @@ ElfObject::ElfObject(const string &_filename, int _fd,
} }
// Check to see if this is the text or data segment // Check to see if this is the text or data segment
if (phdr.p_paddr <= textSecStart && if (phdr.p_vaddr <= textSecStart &&
phdr.p_paddr + phdr.p_filesz > textSecStart) { phdr.p_vaddr + phdr.p_filesz > textSecStart) {
text.baseAddr = phdr.p_paddr; text.baseAddr = phdr.p_paddr;
text.size = phdr.p_filesz; text.size = phdr.p_filesz;
text.fileImage = fileData + phdr.p_offset; text.fileImage = fileData + phdr.p_offset;
} else if (phdr.p_paddr <= dataSecStart && } else if (phdr.p_vaddr <= dataSecStart &&
phdr.p_paddr + phdr.p_filesz > dataSecStart) { phdr.p_vaddr + phdr.p_filesz > dataSecStart) {
data.baseAddr = phdr.p_paddr; data.baseAddr = phdr.p_paddr;
data.size = phdr.p_filesz; data.size = phdr.p_filesz;
data.fileImage = fileData + phdr.p_offset; data.fileImage = fileData + phdr.p_offset;