Skip to content
This repository was archived by the owner on Jul 8, 2025. It is now read-only.

Commit 8b9d5a4

Browse files
authored
Merge pull request #98 from imbillow/invano-and-bjchan9an
invano's branch
2 parents 9e699b9 + b49bfa3 commit 8b9d5a4

File tree

5 files changed

+276
-39
lines changed

5 files changed

+276
-39
lines changed

idb/analysis.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,14 @@ def addr(self):
208208
else:
209209
raise RuntimeError("unexpected wordsize")
210210

211+
def off(self):
212+
offset = self.addr()
213+
mask = (2 ** (self.wordsize * 8)) - 1
214+
if offset & (1 << ((self.wordsize * 8) - 1)):
215+
return offset | ~mask
216+
else:
217+
return offset
218+
211219

212220
Field = namedtuple("Field", ["name", "tag", "index", "cast", "minver"])
213221
# namedtuple default args.
@@ -843,10 +851,6 @@ def pcb_procname_size(self):
843851
def pcb_strlit_pref_size(self):
844852
self["strlit_pref"].vsSetLength(self.strlit_pref_size)
845853

846-
@property
847-
def procName(self):
848-
return self.procname
849-
850854
def vsParse(self, sbytes, offset=0, fast=False):
851855
self.sbytes = sbytes
852856
self.len_sbytes = len(sbytes)
@@ -966,8 +970,10 @@ def __init__(self, buf, wordsize):
966970
# eg. all of these, if high bit of flags not set.
967971
pass
968972
else:
973+
# We are in a function tail. Chunks can be above or below the tail
974+
# owner
969975
try:
970-
self.owner = self.startEA - u.addr()
976+
self.owner = self.startEA - u.off()
971977
self.refqty = u.dd()
972978
except IndexError:
973979
# see warning note above

0 commit comments

Comments
 (0)