summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorPablo Galindo Salgado <Pablogsal@gmail.com>2024-07-02 17:54:33 (GMT)
committerGitHub <noreply@github.com>2024-07-02 17:54:33 (GMT)
commitb180788d4a927d23af54f4b4702ccaf254f64854 (patch)
treeaa6ebfe4f8753e9eeb7b5a1c54c0688c71a63f34 /Include
parent8e8d202f552c993f40913b628139a39a5abe6a03 (diff)
downloadcpython-b180788d4a927d23af54f4b4702ccaf254f64854.zip
cpython-b180788d4a927d23af54f4b4702ccaf254f64854.tar.gz
cpython-b180788d4a927d23af54f4b4702ccaf254f64854.tar.bz2
gh-115773: Add sizes to debug offset structure (#120112)
Diffstat (limited to 'Include')
-rw-r--r--Include/internal/pycore_runtime.h10
-rw-r--r--Include/internal/pycore_runtime_init.h9
2 files changed, 19 insertions, 0 deletions
diff --git a/Include/internal/pycore_runtime.h b/Include/internal/pycore_runtime.h
index f58eccf..341fe29 100644
--- a/Include/internal/pycore_runtime.h
+++ b/Include/internal/pycore_runtime.h
@@ -55,12 +55,14 @@ typedef struct _Py_DebugOffsets {
uint64_t version;
// Runtime state offset;
struct _runtime_state {
+ uint64_t size;
uint64_t finalizing;
uint64_t interpreters_head;
} runtime_state;
// Interpreter state offset;
struct _interpreter_state {
+ uint64_t size;
uint64_t next;
uint64_t threads_head;
uint64_t gc;
@@ -74,6 +76,7 @@ typedef struct _Py_DebugOffsets {
// Thread state offset;
struct _thread_state{
+ uint64_t size;
uint64_t prev;
uint64_t next;
uint64_t interp;
@@ -84,6 +87,7 @@ typedef struct _Py_DebugOffsets {
// InterpreterFrame offset;
struct _interpreter_frame {
+ uint64_t size;
uint64_t previous;
uint64_t executable;
uint64_t instr_ptr;
@@ -93,12 +97,14 @@ typedef struct _Py_DebugOffsets {
// CFrame offset;
struct _cframe {
+ uint64_t size;
uint64_t current_frame;
uint64_t previous;
} cframe;
// Code object offset;
struct _code_object {
+ uint64_t size;
uint64_t filename;
uint64_t name;
uint64_t linetable;
@@ -111,21 +117,25 @@ typedef struct _Py_DebugOffsets {
// PyObject offset;
struct _pyobject {
+ uint64_t size;
uint64_t ob_type;
} pyobject;
// PyTypeObject object offset;
struct _type_object {
+ uint64_t size;
uint64_t tp_name;
} type_object;
// PyTuple object offset;
struct _tuple_object {
+ uint64_t size;
uint64_t ob_item;
} tuple_object;
// Unicode object offset;
struct _unicode_object {
+ uint64_t size;
uint64_t state;
uint64_t length;
size_t asciiobject_size;
diff --git a/Include/internal/pycore_runtime_init.h b/Include/internal/pycore_runtime_init.h
index 98920db..33e39c2 100644
--- a/Include/internal/pycore_runtime_init.h
+++ b/Include/internal/pycore_runtime_init.h
@@ -35,10 +35,12 @@ extern PyTypeObject _PyExc_MemoryError;
.cookie = "xdebugpy", \
.version = PY_VERSION_HEX, \
.runtime_state = { \
+ .size = sizeof(_PyRuntimeState), \
.finalizing = offsetof(_PyRuntimeState, _finalizing), \
.interpreters_head = offsetof(_PyRuntimeState, interpreters.head), \
}, \
.interpreter_state = { \
+ .size = sizeof(PyInterpreterState), \
.next = offsetof(PyInterpreterState, next), \
.threads_head = offsetof(PyInterpreterState, threads.head), \
.gc = offsetof(PyInterpreterState, gc), \
@@ -50,6 +52,7 @@ extern PyTypeObject _PyExc_MemoryError;
.gil_runtime_state_holder = offsetof(PyInterpreterState, _gil.last_holder), \
}, \
.thread_state = { \
+ .size = sizeof(PyThreadState), \
.prev = offsetof(PyThreadState, prev), \
.next = offsetof(PyThreadState, next), \
.interp = offsetof(PyThreadState, interp), \
@@ -58,6 +61,7 @@ extern PyTypeObject _PyExc_MemoryError;
.native_thread_id = offsetof(PyThreadState, native_thread_id), \
}, \
.interpreter_frame = { \
+ .size = sizeof(_PyInterpreterFrame), \
.previous = offsetof(_PyInterpreterFrame, previous), \
.executable = offsetof(_PyInterpreterFrame, f_executable), \
.instr_ptr = offsetof(_PyInterpreterFrame, instr_ptr), \
@@ -65,6 +69,7 @@ extern PyTypeObject _PyExc_MemoryError;
.owner = offsetof(_PyInterpreterFrame, owner), \
}, \
.code_object = { \
+ .size = sizeof(PyCodeObject), \
.filename = offsetof(PyCodeObject, co_filename), \
.name = offsetof(PyCodeObject, co_name), \
.linetable = offsetof(PyCodeObject, co_linetable), \
@@ -75,15 +80,19 @@ extern PyTypeObject _PyExc_MemoryError;
.co_code_adaptive = offsetof(PyCodeObject, co_code_adaptive), \
}, \
.pyobject = { \
+ .size = sizeof(PyObject), \
.ob_type = offsetof(PyObject, ob_type), \
}, \
.type_object = { \
+ .size = sizeof(PyTypeObject), \
.tp_name = offsetof(PyTypeObject, tp_name), \
}, \
.tuple_object = { \
+ .size = sizeof(PyTupleObject), \
.ob_item = offsetof(PyTupleObject, ob_item), \
}, \
.unicode_object = { \
+ .size = sizeof(PyUnicodeObject), \
.state = offsetof(PyUnicodeObject, _base._base.state), \
.length = offsetof(PyUnicodeObject, _base._base.length), \
.asciiobject_size = sizeof(PyASCIIObject), \