https://github.com/python/cpython/commit/c9bdfbe86853fcf5f2b7dce3a50b383e23384ed2
commit: c9bdfbe86853fcf5f2b7dce3a50b383e23384ed2
branch: main
author: Gabriele N. Tornetta <[email protected]>
committer: pablogsal <[email protected]>
date: 2024-07-03T08:53:44Z
summary:

gh-106597: Add more offsets to _Py_DebugOffsets (#121311)

Add more offsets to _Py_DebugOffsets

We add a few more offsets that are required by some out-of-process
tools, such as [Austin](https://github.com/p403n1x87/austin).

files:
M Include/internal/pycore_runtime.h
M Include/internal/pycore_runtime_init.h

diff --git a/Include/internal/pycore_runtime.h 
b/Include/internal/pycore_runtime.h
index 341fe29a68af16..bc67377a89c17f 100644
--- a/Include/internal/pycore_runtime.h
+++ b/Include/internal/pycore_runtime.h
@@ -63,6 +63,7 @@ typedef struct _Py_DebugOffsets {
     // Interpreter state offset;
     struct _interpreter_state {
         uint64_t size;
+        uint64_t id;
         uint64_t next;
         uint64_t threads_head;
         uint64_t gc;
@@ -83,6 +84,8 @@ typedef struct _Py_DebugOffsets {
         uint64_t current_frame;
         uint64_t thread_id;
         uint64_t native_thread_id;
+        uint64_t datastack_chunk;
+        uint64_t status;
     } thread_state;
 
     // InterpreterFrame offset;
@@ -107,6 +110,7 @@ typedef struct _Py_DebugOffsets {
         uint64_t size;
         uint64_t filename;
         uint64_t name;
+        uint64_t qualname;
         uint64_t linetable;
         uint64_t firstlineno;
         uint64_t argcount;
@@ -140,6 +144,12 @@ typedef struct _Py_DebugOffsets {
         uint64_t length;
         size_t asciiobject_size;
     } unicode_object;
+
+    // GC runtime state offset;
+    struct _gc {
+        uint64_t size;
+        uint64_t collecting;
+    } gc;
 } _Py_DebugOffsets;
 
 /* Reference tracer state */
diff --git a/Include/internal/pycore_runtime_init.h 
b/Include/internal/pycore_runtime_init.h
index 33e39c2edbe541..da2b8d5570de62 100644
--- a/Include/internal/pycore_runtime_init.h
+++ b/Include/internal/pycore_runtime_init.h
@@ -41,6 +41,7 @@ extern PyTypeObject _PyExc_MemoryError;
             }, \
             .interpreter_state = { \
                 .size = sizeof(PyInterpreterState), \
+                .id = offsetof(PyInterpreterState, id), \
                 .next = offsetof(PyInterpreterState, next), \
                 .threads_head = offsetof(PyInterpreterState, threads.head), \
                 .gc = offsetof(PyInterpreterState, gc), \
@@ -59,6 +60,8 @@ extern PyTypeObject _PyExc_MemoryError;
                 .current_frame = offsetof(PyThreadState, current_frame), \
                 .thread_id = offsetof(PyThreadState, thread_id), \
                 .native_thread_id = offsetof(PyThreadState, native_thread_id), 
\
+                .datastack_chunk = offsetof(PyThreadState, datastack_chunk), \
+                .status = offsetof(PyThreadState, _status), \
             }, \
             .interpreter_frame = { \
                 .size = sizeof(_PyInterpreterFrame), \
@@ -72,6 +75,7 @@ extern PyTypeObject _PyExc_MemoryError;
                 .size = sizeof(PyCodeObject), \
                 .filename = offsetof(PyCodeObject, co_filename), \
                 .name = offsetof(PyCodeObject, co_name), \
+                .qualname = offsetof(PyCodeObject, co_qualname), \
                 .linetable = offsetof(PyCodeObject, co_linetable), \
                 .firstlineno = offsetof(PyCodeObject, co_firstlineno), \
                 .argcount = offsetof(PyCodeObject, co_argcount), \
@@ -97,6 +101,10 @@ extern PyTypeObject _PyExc_MemoryError;
                 .length = offsetof(PyUnicodeObject, _base._base.length), \
                 .asciiobject_size = sizeof(PyASCIIObject), \
             }, \
+            .gc = { \
+                .size = sizeof(struct _gc_runtime_state), \
+                .collecting = offsetof(struct _gc_runtime_state, collecting), \
+            }, \
         }, \
         .allocators = { \
             .standard = _pymem_allocators_standard_INIT(runtime), \

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to