Loader: Identify sections based on virtual addresses, and set the LoadAddrMask correctly for x86.
--HG-- extra : convert_revision : efa6cf42f7e69074c645dfcac335a3edf0941389
This commit is contained in:
parent
f6e5b92d63
commit
ac27bc7878
2 changed files with 5 additions and 5 deletions
|
@ -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__
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue