Skip to content

Commit

Permalink
gdb/libpython.py: Update PyLongObjectPtr docstring (pythonGH-118438)
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrej730 authored and SonicField committed May 8, 2024
1 parent a522a6c commit 249ca95
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions Tools/gdb/libpython.py
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ def proxyval(self, visited):
Derived classes will override this.
For example, a PyIntObject* with ob_ival 42 in the inferior process
For example, a PyLongObjectPtr* with long_value 42 in the inferior process
should result in an int(42) in this process.
visited: a set of all gdb.Value pyobject pointers already visited
Expand Down Expand Up @@ -867,7 +867,7 @@ class PyLongObjectPtr(PyObjectPtr):

def proxyval(self, visited):
'''
Python's Include/longobjrep.h has this declaration:
Python's Include/longinterpr.h has this declaration:
typedef struct _PyLongValue {
uintptr_t lv_tag; /* Number of digits, sign and flags */
Expand All @@ -876,14 +876,18 @@ def proxyval(self, visited):
struct _longobject {
PyObject_HEAD
_PyLongValue long_value;
_PyLongValue long_value;
};
with this description:
The absolute value of a number is equal to
SUM(for i=0 through abs(ob_size)-1) ob_digit[i] * 2**(SHIFT*i)
Negative numbers are represented with ob_size < 0;
zero is represented by ob_size == 0.
SUM(for i=0 through ndigits-1) ob_digit[i] * 2**(PyLong_SHIFT*i)
The sign of the value is stored in the lower 2 bits of lv_tag.
- 0: Positive
- 1: Zero
- 2: Negative
The third lowest bit of lv_tag is reserved for an immortality flag, but is
not currently used.
where SHIFT can be either:
#define PyLong_SHIFT 30
Expand Down

0 comments on commit 249ca95

Please sign in to comment.