mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 17:59:46 +02:00
adjustments to resolveConstant
This commit is contained in:
parent
612c0d6f3e
commit
4edff2b9f0
10 changed files with 51 additions and 20 deletions
|
@ -1135,7 +1135,7 @@ void Architecture::init(DocumentStorage &store)
|
|||
fillinReadOnlyFromLoader();
|
||||
}
|
||||
|
||||
Address SegmentedResolver::resolve(uintb val,int4 sz,const Address &point)
|
||||
Address SegmentedResolver::resolve(uintb val,int4 sz,const Address &point,uintb &fullEncoding)
|
||||
|
||||
{
|
||||
int4 innersz = segop->getInnerSize();
|
||||
|
@ -1145,6 +1145,7 @@ Address SegmentedResolver::resolve(uintb val,int4 sz,const Address &point)
|
|||
// (as with near pointers)
|
||||
if (segop->getResolve().space != (AddrSpace *)0) {
|
||||
uintb base = glb->context->getTrackedValue(segop->getResolve(),point);
|
||||
fullEncoding = (base << 8 * innersz) + (val & calc_mask(innersz));
|
||||
vector<uintb> seginput;
|
||||
seginput.push_back(val);
|
||||
seginput.push_back(base);
|
||||
|
@ -1153,6 +1154,7 @@ Address SegmentedResolver::resolve(uintb val,int4 sz,const Address &point)
|
|||
}
|
||||
}
|
||||
else { // For anything else, consider it a "far" pointer
|
||||
fullEncoding = val;
|
||||
int4 outersz = segop->getBaseSize();
|
||||
uintb base = (val >> 8*innersz) & calc_mask(outersz);
|
||||
val = val & calc_mask(innersz);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue