Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3a5d79f

Browse files
committed
Issue #28023: Fix python-gdb.py on old GDB versions
Replace int(value.address)+offset with value.cast(unsigned char*)+offset. It seems like int(value.address) fails on old versions of GDB.
1 parent d7d2bc8 commit 3a5d79f

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

Tools/gdb/libpython.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,7 @@ def write_repr(self, out, visited):
709709
out.write('}')
710710

711711
def _get_entries(self, keys):
712+
dk_nentries = int(keys['dk_nentries'])
712713
dk_size = int(keys['dk_size'])
713714
try:
714715
# <= Python 3.5
@@ -726,9 +727,12 @@ def _get_entries(self, keys):
726727
else:
727728
offset = 8 * dk_size
728729

730+
ent_addr = keys['dk_indices']['as_1'].address
731+
ent_addr = ent_addr.cast(_type_unsigned_char_ptr()) + offset
729732
ent_ptr_t = gdb.lookup_type('PyDictKeyEntry').pointer()
730-
ent_addr = int(keys['dk_indices']['as_1'].address) + offset
731-
return gdb.Value(ent_addr).cast(ent_ptr_t), int(keys['dk_nentries'])
733+
ent_addr = ent_addr.cast(ent_ptr_t)
734+
735+
return ent_addr, dk_nentries
732736

733737

734738
class PyListObjectPtr(PyObjectPtr):

0 commit comments

Comments
 (0)