* [PATCH 1/4] Change evpy_emit_event to accept a gdbpy_opt_borrowed_ref
2026-08-08 21:47 [PATCH 0/4] Use gdbpy_borrowed_ref more + cast removal Tom Tromey
@ 2026-08-08 21:47 ` Tom Tromey
2026-08-08 21:47 ` [PATCH 2/4] Change evpy_add_attribute to accept gdbpy_borrowed_ref Tom Tromey
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Tom Tromey @ 2026-08-08 21:47 UTC (permalink / raw)
To: gdb-patches; +Cc: Tom Tromey
This changes evpy_emit_event to accept a gdbpy_opt_borrowed_ref. An
"opt" type is used because one caller explicitly passes NULL, meaning
that the event should be emitted without a payload object.
This patch is a small step toward using the safety API in event
generation, though for the time being it mainly allows the removal of
calls to "get".
---
gdb/python/py-breakpoint.c | 5 ++---
gdb/python/py-connection.c | 2 +-
gdb/python/py-continueevent.c | 2 +-
gdb/python/py-corefile.c | 2 +-
gdb/python/py-event.c | 2 +-
gdb/python/py-event.h | 7 ++++++-
gdb/python/py-exitedevent.c | 2 +-
gdb/python/py-inferior.c | 8 ++++----
gdb/python/py-infevents.c | 6 +++---
gdb/python/py-newobjfileevent.c | 6 +++---
gdb/python/py-progspace.c | 4 ++--
gdb/python/py-stopevent.c | 2 +-
gdb/python/py-threadevent.c | 2 +-
gdb/python/py-tui.c | 2 +-
gdb/python/python.c | 2 +-
15 files changed, 29 insertions(+), 25 deletions(-)
diff --git a/gdb/python/py-breakpoint.c b/gdb/python/py-breakpoint.c
index ecb42cee5f9..b628e14ae4e 100644
--- a/gdb/python/py-breakpoint.c
+++ b/gdb/python/py-breakpoint.c
@@ -1283,8 +1283,7 @@ gdbpy_breakpoint_created (struct breakpoint *bp)
if (!evregpy_no_listeners_p (gdb_py_events.breakpoint_created))
{
- if (evpy_emit_event ((PyObject *) newbp,
- gdb_py_events.breakpoint_created) < 0)
+ if (evpy_emit_event (newbp, gdb_py_events.breakpoint_created) < 0)
gdbpy_print_stack ();
}
}
@@ -1312,7 +1311,7 @@ gdbpy_breakpoint_deleted (struct breakpoint *b)
if (!evregpy_no_listeners_p (gdb_py_events.breakpoint_deleted))
{
- if (evpy_emit_event ((PyObject *) bp_obj.get (),
+ if (evpy_emit_event (bp_obj,
gdb_py_events.breakpoint_deleted) < 0)
gdbpy_print_stack ();
}
diff --git a/gdb/python/py-connection.c b/gdb/python/py-connection.c
index bc738669b79..99bed238b6c 100644
--- a/gdb/python/py-connection.c
+++ b/gdb/python/py-connection.c
@@ -146,7 +146,7 @@ emit_connection_event (process_stratum_target *target,
if (evpy_add_attribute (event_obj.get (), "connection", conn.get ()) < 0)
return -1;
- return evpy_emit_event (event_obj.get (), registry);
+ return evpy_emit_event (event_obj, registry);
}
/* Callback for the connection_removed observer. */
diff --git a/gdb/python/py-continueevent.c b/gdb/python/py-continueevent.c
index 15404157062..06d4dabadd9 100644
--- a/gdb/python/py-continueevent.c
+++ b/gdb/python/py-continueevent.c
@@ -51,6 +51,6 @@ emit_continue_event (ptid_t ptid)
gdbpy_ref<> event = create_continue_event_object (ptid);
if (event != NULL)
- return evpy_emit_event (event.get (), gdb_py_events.cont);
+ return evpy_emit_event (event, gdb_py_events.cont);
return -1;
}
diff --git a/gdb/python/py-corefile.c b/gdb/python/py-corefile.c
index fc5b4889fdc..542bc05f560 100644
--- a/gdb/python/py-corefile.c
+++ b/gdb/python/py-corefile.c
@@ -346,7 +346,7 @@ emit_corefile_changed_event (inferior *inf)
inf_obj.get ()) < 0)
return -1;
- return evpy_emit_event (event_obj.get (), gdb_py_events.corefile_changed);
+ return evpy_emit_event (event_obj, gdb_py_events.corefile_changed);
}
/* Callback from gdb::observers::core_file_changed. The core file for
diff --git a/gdb/python/py-event.c b/gdb/python/py-event.c
index a7aa46dcb6f..6dd6f3bf356 100644
--- a/gdb/python/py-event.c
+++ b/gdb/python/py-event.c
@@ -62,7 +62,7 @@ gdbpy_initialize_event ()
returns 0 if emit is successful -1 otherwise. */
int
-evpy_emit_event (PyObject *event,
+evpy_emit_event (gdbpy_opt_borrowed_ref<> event,
eventregistry_object *registry)
{
Py_ssize_t i;
diff --git a/gdb/python/py-event.h b/gdb/python/py-event.h
index ec2e7bc03c5..c8fbbf3add6 100644
--- a/gdb/python/py-event.h
+++ b/gdb/python/py-event.h
@@ -53,7 +53,12 @@ extern int emit_inferior_call_event (inferior_call_kind kind,
extern int emit_register_changed_event (const frame_info_ptr &frame,
int regnum);
extern int emit_memory_changed_event (CORE_ADDR addr, ssize_t len);
-extern int evpy_emit_event (PyObject *event,
+
+/* Emit an event to a given event registry. Return 0 on success, -1
+ with the Python exception set on failure. gdbpy_opt_borrowed_ref
+ is used; if NULL is passed, then the event will be emitted without
+ a payload. */
+extern int evpy_emit_event (gdbpy_opt_borrowed_ref<> event,
eventregistry_object *registry);
/* Emits a thread exit event for THREAD */
diff --git a/gdb/python/py-exitedevent.c b/gdb/python/py-exitedevent.c
index d15f768ab79..866adb7ff8b 100644
--- a/gdb/python/py-exitedevent.c
+++ b/gdb/python/py-exitedevent.c
@@ -59,7 +59,7 @@ emit_exited_event (const LONGEST *exit_code, struct inferior *inf)
gdbpy_ref<> event = create_exited_event_object (exit_code, inf);
if (event != NULL)
- return evpy_emit_event (event.get (), gdb_py_events.exited);
+ return evpy_emit_event (event, gdb_py_events.exited);
return -1;
}
diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
index 426aec31e9e..5f0019b7b86 100644
--- a/gdb/python/py-inferior.c
+++ b/gdb/python/py-inferior.c
@@ -257,7 +257,7 @@ python_new_inferior (struct inferior *inf)
if (event == NULL
|| evpy_add_attribute (event.get (), "inferior",
(PyObject *) inf_obj.get ()) < 0
- || evpy_emit_event (event.get (), gdb_py_events.new_inferior) < 0)
+ || evpy_emit_event (event, gdb_py_events.new_inferior) < 0)
gdbpy_print_stack ();
}
@@ -285,7 +285,7 @@ python_inferior_deleted (struct inferior *inf)
if (event == NULL
|| evpy_add_attribute (event.get (), "inferior",
(PyObject *) inf_obj.get ()) < 0
- || evpy_emit_event (event.get (), gdb_py_events.inferior_deleted) < 0)
+ || evpy_emit_event (event, gdb_py_events.inferior_deleted) < 0)
gdbpy_print_stack ();
}
@@ -339,7 +339,7 @@ add_thread_object (struct thread_info *tp)
(PyObject *) ins_result.first->second.get ());
if (event == NULL
- || evpy_emit_event (event.get (), gdb_py_events.new_thread) < 0)
+ || evpy_emit_event (event, gdb_py_events.new_thread) < 0)
gdbpy_print_stack ();
}
@@ -1040,7 +1040,7 @@ python_context_changed (user_selected_what selection)
|| evpy_add_attribute (event.get (), "inferior", inf_obj.get ()) < 0
|| evpy_add_attribute (event.get (), "thread", thr_obj.get ()) < 0
|| evpy_add_attribute (event.get (), "frame", frame_obj.get ()) < 0
- || evpy_emit_event (event.get (), gdb_py_events.selected_context) < 0)
+ || evpy_emit_event (event, gdb_py_events.selected_context) < 0)
gdbpy_print_stack ();
}
diff --git a/gdb/python/py-infevents.c b/gdb/python/py-infevents.c
index 1b27987d039..db77f4593d6 100644
--- a/gdb/python/py-infevents.c
+++ b/gdb/python/py-infevents.c
@@ -127,7 +127,7 @@ emit_inferior_call_event (inferior_call_kind flag, ptid_t thread,
gdbpy_ref<> event = create_inferior_call_event_object (flag, thread, addr);
if (event != NULL)
- return evpy_emit_event (event.get (), gdb_py_events.inferior_call);
+ return evpy_emit_event (event, gdb_py_events.inferior_call);
return -1;
}
@@ -142,7 +142,7 @@ emit_memory_changed_event (CORE_ADDR addr, ssize_t len)
gdbpy_ref<> event = create_memory_changed_event_object (addr, len);
if (event != NULL)
- return evpy_emit_event (event.get (), gdb_py_events.memory_changed);
+ return evpy_emit_event (event, gdb_py_events.memory_changed);
return -1;
}
@@ -157,6 +157,6 @@ emit_register_changed_event (const frame_info_ptr &frame, int regnum)
gdbpy_ref<> event = create_register_changed_event_object (frame, regnum);
if (event != NULL)
- return evpy_emit_event (event.get (), gdb_py_events.register_changed);
+ return evpy_emit_event (event, gdb_py_events.register_changed);
return -1;
}
diff --git a/gdb/python/py-newobjfileevent.c b/gdb/python/py-newobjfileevent.c
index 19a33d2afc6..e72e9ae67e3 100644
--- a/gdb/python/py-newobjfileevent.c
+++ b/gdb/python/py-newobjfileevent.c
@@ -48,7 +48,7 @@ emit_new_objfile_event (struct objfile *objfile)
gdbpy_ref<> event = create_new_objfile_event_object (objfile);
if (event != NULL)
- return evpy_emit_event (event.get (), gdb_py_events.new_objfile);
+ return evpy_emit_event (event, gdb_py_events.new_objfile);
return -1;
}
@@ -85,7 +85,7 @@ emit_free_objfile_event (struct objfile *objfile)
gdbpy_ref<> event = create_free_objfile_event_object (objfile);
if (event == nullptr)
return -1;
- return evpy_emit_event (event.get (), gdb_py_events.free_objfile);
+ return evpy_emit_event (event, gdb_py_events.free_objfile);
}
\f
@@ -121,6 +121,6 @@ emit_clear_objfiles_event (program_space *pspace)
gdbpy_ref<> event = create_clear_objfiles_event_object (pspace);
if (event != NULL)
- return evpy_emit_event (event.get (), gdb_py_events.clear_objfiles);
+ return evpy_emit_event (event, gdb_py_events.clear_objfiles);
return -1;
}
diff --git a/gdb/python/py-progspace.c b/gdb/python/py-progspace.c
index 48e52328e9c..31ea3ad8fc8 100644
--- a/gdb/python/py-progspace.c
+++ b/gdb/python/py-progspace.c
@@ -648,7 +648,7 @@ emit_executable_changed_event (eventregistry_object *registry,
py_reload_p.get ()) < 0)
return -1;
- return evpy_emit_event (event_obj.get (), registry);
+ return evpy_emit_event (event_obj, registry);
}
/* Listener for the executable_changed observable, this is called when the
@@ -708,7 +708,7 @@ gdbpy_program_space_event (program_space *pspace, bool adding_p)
if (event == nullptr
|| evpy_add_attribute (event.get (), "progspace",
pspace_obj.get ()) < 0
- || evpy_emit_event (event.get (), registry) < 0)
+ || evpy_emit_event (event, registry) < 0)
gdbpy_print_stack ();
}
diff --git a/gdb/python/py-stopevent.c b/gdb/python/py-stopevent.c
index cefcfdd0761..77db754140c 100644
--- a/gdb/python/py-stopevent.c
+++ b/gdb/python/py-stopevent.c
@@ -169,5 +169,5 @@ emit_stop_event (struct bpstat *bs, enum gdb_signal stop_signal)
return -1;
}
- return evpy_emit_event (stop_event_obj.get (), gdb_py_events.stop);
+ return evpy_emit_event (stop_event_obj, gdb_py_events.stop);
}
diff --git a/gdb/python/py-threadevent.c b/gdb/python/py-threadevent.c
index 3c28aa1174a..d2998d92304 100644
--- a/gdb/python/py-threadevent.c
+++ b/gdb/python/py-threadevent.c
@@ -71,5 +71,5 @@ emit_thread_exit_event (thread_info * thread)
if (inf_thr == nullptr)
return -1;
- return evpy_emit_event (inf_thr.get (), gdb_py_events.thread_exited);
+ return evpy_emit_event (inf_thr, gdb_py_events.thread_exited);
}
diff --git a/gdb/python/py-tui.c b/gdb/python/py-tui.c
index 5a36814debb..0046c66d570 100644
--- a/gdb/python/py-tui.c
+++ b/gdb/python/py-tui.c
@@ -606,7 +606,7 @@ gdbpy_tui_enabled (bool state)
gdbpy_ref<> code (PyBool_FromLong (state));
if (evpy_add_attribute (event_obj.get (), "enabled", code.get ()) < 0
- || evpy_emit_event (event_obj.get (), gdb_py_events.tui_enabled) < 0)
+ || evpy_emit_event (event_obj, gdb_py_events.tui_enabled) < 0)
gdbpy_print_stack ();
}
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 7b5de98b903..5312cdbdb01 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -2503,7 +2503,7 @@ emit_exiting_event (int exit_code)
if (evpy_add_attribute (event_obj.get (), "exit_code", code.get ()) < 0)
return -1;
- return evpy_emit_event (event_obj.get (), gdb_py_events.gdb_exiting);
+ return evpy_emit_event (event_obj, gdb_py_events.gdb_exiting);
}
/* Callback for the gdb_exiting observable. EXIT_CODE is the value GDB
--
2.49.0
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 2/4] Change evpy_add_attribute to accept gdbpy_borrowed_ref
2026-08-08 21:47 [PATCH 0/4] Use gdbpy_borrowed_ref more + cast removal Tom Tromey
2026-08-08 21:47 ` [PATCH 1/4] Change evpy_emit_event to accept a gdbpy_opt_borrowed_ref Tom Tromey
@ 2026-08-08 21:47 ` Tom Tromey
2026-08-08 21:47 ` [PATCH 3/4] Use gdbpy_borrowed_ref when creating events Tom Tromey
2026-08-08 21:47 ` [PATCH 4/4] Remove unneeded casts to PyObject* Tom Tromey
3 siblings, 0 replies; 5+ messages in thread
From: Tom Tromey @ 2026-08-08 21:47 UTC (permalink / raw)
To: gdb-patches; +Cc: Tom Tromey
This changes evpy_add_attribute to take gdbpy_borrowed_ref arguments.
This allows removing various calls to "get".
---
gdb/python/py-bpevent.c | 7 ++-----
gdb/python/py-connection.c | 2 +-
gdb/python/py-corefile.c | 3 +--
gdb/python/py-event.c | 3 ++-
gdb/python/py-event.h | 4 ++--
gdb/python/py-exitedevent.c | 8 +++-----
gdb/python/py-inferior.c | 12 +++++-------
gdb/python/py-infevents.c | 12 ++++++------
gdb/python/py-newobjfileevent.c | 13 +++++--------
gdb/python/py-progspace.c | 9 +++------
gdb/python/py-signalevent.c | 5 ++---
gdb/python/py-stopevent.c | 2 +-
gdb/python/py-threadevent.c | 4 +---
gdb/python/py-tui.c | 2 +-
gdb/python/python.c | 2 +-
15 files changed, 36 insertions(+), 52 deletions(-)
diff --git a/gdb/python/py-bpevent.c b/gdb/python/py-bpevent.c
index ae8e6e1594f..20a7745e4cc 100644
--- a/gdb/python/py-bpevent.c
+++ b/gdb/python/py-bpevent.c
@@ -32,12 +32,9 @@ create_breakpoint_event_object (const gdbpy_ref<> &dict,
if (breakpoint_event_obj == NULL)
return NULL;
- if (evpy_add_attribute (breakpoint_event_obj.get (),
- "breakpoint",
- first_bp) < 0)
+ if (evpy_add_attribute (breakpoint_event_obj, "breakpoint", first_bp) < 0)
return NULL;
- if (evpy_add_attribute (breakpoint_event_obj.get (),
- "breakpoints",
+ if (evpy_add_attribute (breakpoint_event_obj, "breakpoints",
breakpoint_list) < 0)
return NULL;
diff --git a/gdb/python/py-connection.c b/gdb/python/py-connection.c
index 99bed238b6c..d2085960be4 100644
--- a/gdb/python/py-connection.c
+++ b/gdb/python/py-connection.c
@@ -143,7 +143,7 @@ emit_connection_event (process_stratum_target *target,
return -1;
gdbpy_ref<> conn = target_to_connection_object (target);
- if (evpy_add_attribute (event_obj.get (), "connection", conn.get ()) < 0)
+ if (evpy_add_attribute (event_obj, "connection", conn) < 0)
return -1;
return evpy_emit_event (event_obj, registry);
diff --git a/gdb/python/py-corefile.c b/gdb/python/py-corefile.c
index 542bc05f560..a1dee384edf 100644
--- a/gdb/python/py-corefile.c
+++ b/gdb/python/py-corefile.c
@@ -342,8 +342,7 @@ emit_corefile_changed_event (inferior *inf)
gdbpy_ref<inferior_object> inf_obj = inferior_to_inferior_object (inf);
if (inf_obj == nullptr
- || evpy_add_attribute (event_obj.get (), "inferior",
- inf_obj.get ()) < 0)
+ || evpy_add_attribute (event_obj, "inferior", inf_obj) < 0)
return -1;
return evpy_emit_event (event_obj, gdb_py_events.corefile_changed);
diff --git a/gdb/python/py-event.c b/gdb/python/py-event.c
index 6dd6f3bf356..815e815149c 100644
--- a/gdb/python/py-event.c
+++ b/gdb/python/py-event.c
@@ -45,7 +45,8 @@ create_event_object (PyTypeObject *py_type)
function acquires a new reference to ATTR. */
int
-evpy_add_attribute (PyObject *event, const char *name, PyObject *attr)
+evpy_add_attribute (gdbpy_borrowed_ref<> event, const char *name,
+ gdbpy_borrowed_ref<> attr)
{
return PyObject_SetAttrString (event, name, attr);
}
diff --git a/gdb/python/py-event.h b/gdb/python/py-event.h
index c8fbbf3add6..2c724c9a084 100644
--- a/gdb/python/py-event.h
+++ b/gdb/python/py-event.h
@@ -81,7 +81,7 @@ extern int emit_free_objfile_event (struct objfile *objfile);
extern int emit_clear_objfiles_event (program_space *pspace);
extern void evpy_dealloc (PyObject *self);
-extern int evpy_add_attribute (PyObject *event,
- const char *name, PyObject *attr);
+extern int evpy_add_attribute (gdbpy_borrowed_ref<> event,
+ const char *name, gdbpy_borrowed_ref<> attr);
#endif /* GDB_PYTHON_PY_EVENT_H */
diff --git a/gdb/python/py-exitedevent.c b/gdb/python/py-exitedevent.c
index 866adb7ff8b..83ccebb9127 100644
--- a/gdb/python/py-exitedevent.c
+++ b/gdb/python/py-exitedevent.c
@@ -33,15 +33,13 @@ create_exited_event_object (const LONGEST *exit_code, struct inferior *inf)
if (exit_code_obj == NULL)
return NULL;
- if (evpy_add_attribute (exited_event.get (), "exit_code",
- exit_code_obj.get ()) < 0)
+ if (evpy_add_attribute (exited_event, "exit_code", exit_code_obj) < 0)
return NULL;
}
gdbpy_ref<inferior_object> inf_obj = inferior_to_inferior_object (inf);
- if (inf_obj == NULL || evpy_add_attribute (exited_event.get (),
- "inferior",
- (PyObject *) inf_obj.get ()) < 0)
+ if (inf_obj == nullptr
+ || evpy_add_attribute (exited_event, "inferior", inf_obj) < 0)
return NULL;
return exited_event;
diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
index 5f0019b7b86..ab3a95da1bf 100644
--- a/gdb/python/py-inferior.c
+++ b/gdb/python/py-inferior.c
@@ -255,8 +255,7 @@ python_new_inferior (struct inferior *inf)
gdbpy_ref<> event = create_event_object (&new_inferior_event_object_type);
if (event == NULL
- || evpy_add_attribute (event.get (), "inferior",
- (PyObject *) inf_obj.get ()) < 0
+ || evpy_add_attribute (event, "inferior", inf_obj) < 0
|| evpy_emit_event (event, gdb_py_events.new_inferior) < 0)
gdbpy_print_stack ();
}
@@ -283,8 +282,7 @@ python_inferior_deleted (struct inferior *inf)
gdbpy_ref<> event = create_event_object (&inferior_deleted_event_object_type);
if (event == NULL
- || evpy_add_attribute (event.get (), "inferior",
- (PyObject *) inf_obj.get ()) < 0
+ || evpy_add_attribute (event, "inferior", inf_obj) < 0
|| evpy_emit_event (event, gdb_py_events.inferior_deleted) < 0)
gdbpy_print_stack ();
}
@@ -1037,9 +1035,9 @@ python_context_changed (user_selected_what selection)
gdbpy_ref<> event
= create_event_object (&selected_context_event_object_type);
if (event == nullptr
- || evpy_add_attribute (event.get (), "inferior", inf_obj.get ()) < 0
- || evpy_add_attribute (event.get (), "thread", thr_obj.get ()) < 0
- || evpy_add_attribute (event.get (), "frame", frame_obj.get ()) < 0
+ || evpy_add_attribute (event, "inferior", inf_obj) < 0
+ || evpy_add_attribute (event, "thread", thr_obj) < 0
+ || evpy_add_attribute (event, "frame", frame_obj) < 0
|| evpy_emit_event (event, gdb_py_events.selected_context) < 0)
gdbpy_print_stack ();
}
diff --git a/gdb/python/py-infevents.c b/gdb/python/py-infevents.c
index db77f4593d6..b472c809197 100644
--- a/gdb/python/py-infevents.c
+++ b/gdb/python/py-infevents.c
@@ -44,14 +44,14 @@ create_inferior_call_event_object (inferior_call_kind flag, ptid_t ptid,
if (ptid_obj == NULL)
return NULL;
- if (evpy_add_attribute (event.get (), "ptid", ptid_obj.get ()) < 0)
+ if (evpy_add_attribute (event, "ptid", ptid_obj) < 0)
return NULL;
gdbpy_ref<> addr_obj = gdb_py_object_from_ulongest (addr);
if (addr_obj == NULL)
return NULL;
- if (evpy_add_attribute (event.get (), "address", addr_obj.get ()) < 0)
+ if (evpy_add_attribute (event, "address", addr_obj) < 0)
return NULL;
return event;
@@ -72,14 +72,14 @@ create_register_changed_event_object (const frame_info_ptr &frame,
if (frame_obj == NULL)
return NULL;
- if (evpy_add_attribute (event.get (), "frame", frame_obj.get ()) < 0)
+ if (evpy_add_attribute (event, "frame", frame_obj) < 0)
return NULL;
gdbpy_ref<> regnum_obj = gdb_py_object_from_longest (regnum);
if (regnum_obj == NULL)
return NULL;
- if (evpy_add_attribute (event.get (), "regnum", regnum_obj.get ()) < 0)
+ if (evpy_add_attribute (event, "regnum", regnum_obj) < 0)
return NULL;
return event;
@@ -100,14 +100,14 @@ create_memory_changed_event_object (CORE_ADDR addr, ssize_t len)
if (addr_obj == NULL)
return NULL;
- if (evpy_add_attribute (event.get (), "address", addr_obj.get ()) < 0)
+ if (evpy_add_attribute (event, "address", addr_obj) < 0)
return NULL;
gdbpy_ref<> len_obj = gdb_py_object_from_longest (len);
if (len_obj == NULL)
return NULL;
- if (evpy_add_attribute (event.get (), "length", len_obj.get ()) < 0)
+ if (evpy_add_attribute (event, "length", len_obj) < 0)
return NULL;
return event;
diff --git a/gdb/python/py-newobjfileevent.c b/gdb/python/py-newobjfileevent.c
index e72e9ae67e3..cac49b2a39c 100644
--- a/gdb/python/py-newobjfileevent.c
+++ b/gdb/python/py-newobjfileevent.c
@@ -28,9 +28,8 @@ create_new_objfile_event_object (struct objfile *objfile)
return NULL;
gdbpy_ref<> py_objfile = objfile_to_objfile_object (objfile);
- if (py_objfile == NULL || evpy_add_attribute (objfile_event.get (),
- "new_objfile",
- py_objfile.get ()) < 0)
+ if (py_objfile == nullptr
+ || evpy_add_attribute (objfile_event, "new_objfile", py_objfile) < 0)
return NULL;
return objfile_event;
@@ -65,8 +64,7 @@ create_free_objfile_event_object (struct objfile *objfile)
gdbpy_ref<> py_objfile = objfile_to_objfile_object (objfile);
if (py_objfile == nullptr
- || evpy_add_attribute (objfile_event.get (), "objfile",
- py_objfile.get ()) < 0)
+ || evpy_add_attribute (objfile_event, "objfile", py_objfile) < 0)
return nullptr;
return objfile_event;
@@ -100,9 +98,8 @@ create_clear_objfiles_event_object (program_space *pspace)
return NULL;
gdbpy_ref<> py_progspace = pspace_to_pspace_object (pspace);
- if (py_progspace == NULL || evpy_add_attribute (objfile_event.get (),
- "progspace",
- py_progspace.get ()) < 0)
+ if (py_progspace == nullptr
+ || evpy_add_attribute (objfile_event, "progspace", py_progspace) < 0)
return NULL;
return objfile_event;
diff --git a/gdb/python/py-progspace.c b/gdb/python/py-progspace.c
index 31ea3ad8fc8..a88535bdca9 100644
--- a/gdb/python/py-progspace.c
+++ b/gdb/python/py-progspace.c
@@ -638,14 +638,12 @@ emit_executable_changed_event (eventregistry_object *registry,
gdbpy_ref<> py_pspace = pspace_to_pspace_object (pspace);
if (py_pspace == nullptr
- || evpy_add_attribute (event_obj.get (), "progspace",
- py_pspace.get ()) < 0)
+ || evpy_add_attribute (event_obj, "progspace", py_pspace) < 0)
return -1;
gdbpy_ref<> py_reload_p (PyBool_FromLong (reload_p ? 1 : 0));
if (py_reload_p == nullptr
- || evpy_add_attribute (event_obj.get (), "reload",
- py_reload_p.get ()) < 0)
+ || evpy_add_attribute (event_obj, "reload", py_reload_p) < 0)
return -1;
return evpy_emit_event (event_obj, registry);
@@ -706,8 +704,7 @@ gdbpy_program_space_event (program_space *pspace, bool adding_p)
gdbpy_ref<> event = create_event_object (event_type);
if (event == nullptr
- || evpy_add_attribute (event.get (), "progspace",
- pspace_obj.get ()) < 0
+ || evpy_add_attribute (event, "progspace", pspace_obj) < 0
|| evpy_emit_event (event, registry) < 0)
gdbpy_print_stack ();
}
diff --git a/gdb/python/py-signalevent.c b/gdb/python/py-signalevent.c
index dc8639bb4d8..3be6ab31c6f 100644
--- a/gdb/python/py-signalevent.c
+++ b/gdb/python/py-signalevent.c
@@ -34,9 +34,8 @@ create_signal_event_object (const gdbpy_ref<> &dict,
gdbpy_ref<> signal_name_obj (PyUnicode_FromString (signal_name));
if (signal_name_obj == NULL)
return NULL;
- if (evpy_add_attribute (signal_event_obj.get (),
- "stop_signal",
- signal_name_obj.get ()) < 0)
+ if (evpy_add_attribute (signal_event_obj, "stop_signal",
+ signal_name_obj) < 0)
return NULL;
return signal_event_obj;
diff --git a/gdb/python/py-stopevent.c b/gdb/python/py-stopevent.c
index 77db754140c..3f07f8a29fb 100644
--- a/gdb/python/py-stopevent.c
+++ b/gdb/python/py-stopevent.c
@@ -32,7 +32,7 @@ create_stop_event_object (PyTypeObject *py_type, const gdbpy_ref<> &dict)
if (result == nullptr)
return nullptr;
- if (evpy_add_attribute (result.get (), "details", dict.get ()) < 0)
+ if (evpy_add_attribute (result, "details", dict) < 0)
return nullptr;
return result;
diff --git a/gdb/python/py-threadevent.c b/gdb/python/py-threadevent.c
index d2998d92304..9b0a963d0ba 100644
--- a/gdb/python/py-threadevent.c
+++ b/gdb/python/py-threadevent.c
@@ -45,9 +45,7 @@ create_thread_event_object (PyTypeObject *py_type, PyObject *thread)
if (thread_event_obj == NULL)
return NULL;
- if (evpy_add_attribute (thread_event_obj.get (),
- "inferior_thread",
- thread) < 0)
+ if (evpy_add_attribute (thread_event_obj, "inferior_thread", thread) < 0)
return NULL;
return thread_event_obj;
diff --git a/gdb/python/py-tui.c b/gdb/python/py-tui.c
index 0046c66d570..625de3bf87b 100644
--- a/gdb/python/py-tui.c
+++ b/gdb/python/py-tui.c
@@ -605,7 +605,7 @@ gdbpy_tui_enabled (bool state)
}
gdbpy_ref<> code (PyBool_FromLong (state));
- if (evpy_add_attribute (event_obj.get (), "enabled", code.get ()) < 0
+ if (evpy_add_attribute (event_obj, "enabled", code) < 0
|| evpy_emit_event (event_obj, gdb_py_events.tui_enabled) < 0)
gdbpy_print_stack ();
}
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 5312cdbdb01..83923a2059c 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -2500,7 +2500,7 @@ emit_exiting_event (int exit_code)
return -1;
gdbpy_ref<> code = gdb_py_object_from_longest (exit_code);
- if (evpy_add_attribute (event_obj.get (), "exit_code", code.get ()) < 0)
+ if (evpy_add_attribute (event_obj, "exit_code", code) < 0)
return -1;
return evpy_emit_event (event_obj, gdb_py_events.gdb_exiting);
--
2.49.0
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 3/4] Use gdbpy_borrowed_ref when creating events
2026-08-08 21:47 [PATCH 0/4] Use gdbpy_borrowed_ref more + cast removal Tom Tromey
2026-08-08 21:47 ` [PATCH 1/4] Change evpy_emit_event to accept a gdbpy_opt_borrowed_ref Tom Tromey
2026-08-08 21:47 ` [PATCH 2/4] Change evpy_add_attribute to accept gdbpy_borrowed_ref Tom Tromey
@ 2026-08-08 21:47 ` Tom Tromey
2026-08-08 21:47 ` [PATCH 4/4] Remove unneeded casts to PyObject* Tom Tromey
3 siblings, 0 replies; 5+ messages in thread
From: Tom Tromey @ 2026-08-08 21:47 UTC (permalink / raw)
To: gdb-patches; +Cc: Tom Tromey
This changes create_thread_event_object and
create_breakpoint_event_object to accept gdbpy_borrowed_ref. This
allows the removal of some calls to "get".
---
gdb/python/py-bpevent.c | 3 ++-
gdb/python/py-continueevent.c | 2 +-
gdb/python/py-event.h | 2 +-
gdb/python/py-inferior.c | 3 +--
gdb/python/py-stopevent.c | 2 +-
gdb/python/py-stopevent.h | 7 ++++---
gdb/python/py-threadevent.c | 4 ++--
7 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/gdb/python/py-bpevent.c b/gdb/python/py-bpevent.c
index 20a7745e4cc..2fcaac76c4e 100644
--- a/gdb/python/py-bpevent.c
+++ b/gdb/python/py-bpevent.c
@@ -24,7 +24,8 @@
gdbpy_ref<>
create_breakpoint_event_object (const gdbpy_ref<> &dict,
- PyObject *breakpoint_list, PyObject *first_bp)
+ gdbpy_borrowed_ref<> breakpoint_list,
+ gdbpy_borrowed_ref<> first_bp)
{
gdbpy_ref<> breakpoint_event_obj
= create_stop_event_object (&breakpoint_event_object_type, dict);
diff --git a/gdb/python/py-continueevent.c b/gdb/python/py-continueevent.c
index 06d4dabadd9..48c24cc710d 100644
--- a/gdb/python/py-continueevent.c
+++ b/gdb/python/py-continueevent.c
@@ -36,7 +36,7 @@ create_continue_event_object (ptid_t ptid)
return nullptr;
return create_thread_event_object (&continue_event_object_type,
- py_thr.get ());
+ py_thr);
}
/* Callback function which notifies observers when a continue event occurs.
diff --git a/gdb/python/py-event.h b/gdb/python/py-event.h
index 2c724c9a084..100840318a5 100644
--- a/gdb/python/py-event.h
+++ b/gdb/python/py-event.h
@@ -74,7 +74,7 @@ extern gdbpy_ref<> create_event_object (PyTypeObject *py_type);
extern gdbpy_ref<> py_get_event_thread (ptid_t ptid);
extern gdbpy_ref<> create_thread_event_object (PyTypeObject *py_type,
- PyObject *thread);
+ gdbpy_borrowed_ref<> thread);
extern int emit_new_objfile_event (struct objfile *objfile);
extern int emit_free_objfile_event (struct objfile *objfile);
diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
index ab3a95da1bf..dd2a3a0da24 100644
--- a/gdb/python/py-inferior.c
+++ b/gdb/python/py-inferior.c
@@ -333,8 +333,7 @@ add_thread_object (struct thread_info *tp)
return;
gdbpy_ref<> event = create_thread_event_object
- (&new_thread_event_object_type,
- (PyObject *) ins_result.first->second.get ());
+ (&new_thread_event_object_type, ins_result.first->second);
if (event == NULL
|| evpy_emit_event (event, gdb_py_events.new_thread) < 0)
diff --git a/gdb/python/py-stopevent.c b/gdb/python/py-stopevent.c
index 3f07f8a29fb..cdb1ad3fc50 100644
--- a/gdb/python/py-stopevent.c
+++ b/gdb/python/py-stopevent.c
@@ -28,7 +28,7 @@ create_stop_event_object (PyTypeObject *py_type, const gdbpy_ref<> &dict)
if (thread == nullptr)
return nullptr;
- gdbpy_ref<> result = create_thread_event_object (py_type, thread.get ());
+ gdbpy_ref<> result = create_thread_event_object (py_type, thread);
if (result == nullptr)
return nullptr;
diff --git a/gdb/python/py-stopevent.h b/gdb/python/py-stopevent.h
index f9a14fe00c1..7b36825019c 100644
--- a/gdb/python/py-stopevent.h
+++ b/gdb/python/py-stopevent.h
@@ -28,9 +28,10 @@ extern gdbpy_ref<> create_stop_event_object (PyTypeObject *py_type,
extern int emit_stop_event (struct bpstat *bs,
enum gdb_signal stop_signal);
-extern gdbpy_ref<> create_breakpoint_event_object (const gdbpy_ref<> &dict,
- PyObject *breakpoint_list,
- PyObject *first_bp);
+extern gdbpy_ref<> create_breakpoint_event_object
+ (const gdbpy_ref<> &dict,
+ gdbpy_borrowed_ref<> breakpoint_list,
+ gdbpy_borrowed_ref<> first_bp);
extern gdbpy_ref<> create_signal_event_object (const gdbpy_ref<> &dict,
enum gdb_signal stop_signal);
diff --git a/gdb/python/py-threadevent.c b/gdb/python/py-threadevent.c
index 9b0a963d0ba..a4a0c16dffc 100644
--- a/gdb/python/py-threadevent.c
+++ b/gdb/python/py-threadevent.c
@@ -37,7 +37,7 @@ py_get_event_thread (ptid_t ptid)
}
gdbpy_ref<>
-create_thread_event_object (PyTypeObject *py_type, PyObject *thread)
+create_thread_event_object (PyTypeObject *py_type, gdbpy_borrowed_ref<> thread)
{
gdb_assert (thread != NULL);
@@ -65,7 +65,7 @@ emit_thread_exit_event (thread_info * thread)
return -1;
auto inf_thr = create_thread_event_object (&thread_exited_event_object_type,
- py_thr.get ());
+ py_thr);
if (inf_thr == nullptr)
return -1;
--
2.49.0
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 4/4] Remove unneeded casts to PyObject*
2026-08-08 21:47 [PATCH 0/4] Use gdbpy_borrowed_ref more + cast removal Tom Tromey
` (2 preceding siblings ...)
2026-08-08 21:47 ` [PATCH 3/4] Use gdbpy_borrowed_ref when creating events Tom Tromey
@ 2026-08-08 21:47 ` Tom Tromey
3 siblings, 0 replies; 5+ messages in thread
From: Tom Tromey @ 2026-08-08 21:47 UTC (permalink / raw)
To: gdb-patches; +Cc: Tom Tromey
Since Python wrapper objects now derive from PyObject, upcasts to
"PyObject *" are no longer needed. This removes many such casts.
---
gdb/python/py-arch.c | 2 +-
gdb/python/py-block.c | 2 +-
gdb/python/py-breakpoint.c | 19 +++++++------------
gdb/python/py-cmd.c | 8 ++++----
gdb/python/py-corefile.c | 6 +++---
gdb/python/py-disasm.c | 13 ++++++-------
gdb/python/py-evts.c | 4 +---
gdb/python/py-finishbreakpoint.c | 7 +++----
gdb/python/py-inferior.c | 8 +++-----
gdb/python/py-infthread.c | 2 +-
gdb/python/py-lazy-string.c | 2 +-
gdb/python/py-linetable.c | 4 ++--
gdb/python/py-membuf.c | 2 +-
gdb/python/py-micmd.c | 2 +-
gdb/python/py-objfile.c | 7 +++----
gdb/python/py-progspace.c | 2 +-
gdb/python/py-record-btrace.c | 2 +-
gdb/python/py-record.c | 10 +++++-----
gdb/python/py-registers.c | 4 ++--
gdb/python/py-stopevent.c | 3 +--
gdb/python/py-tui.c | 2 +-
gdb/python/py-type.c | 6 +++---
gdb/python/py-unwind.c | 12 +++++-------
23 files changed, 57 insertions(+), 72 deletions(-)
diff --git a/gdb/python/py-arch.c b/gdb/python/py-arch.c
index 5b3cfbdc876..24009c958da 100644
--- a/gdb/python/py-arch.c
+++ b/gdb/python/py-arch.c
@@ -59,7 +59,7 @@ arch_object_data_init (struct gdbarch *gdbarch)
arch_obj->gdbarch = gdbarch;
- return (PyObject *) arch_obj;
+ return arch_obj;
}
/* Returns the struct gdbarch value corresponding to the given Python
diff --git a/gdb/python/py-block.c b/gdb/python/py-block.c
index 99c487bc875..593c39486f8 100644
--- a/gdb/python/py-block.c
+++ b/gdb/python/py-block.c
@@ -98,7 +98,7 @@ blpy_iter (PyObject *self)
Py_INCREF (self);
block_iter_obj->source = (block_object *) self;
- return (PyObject *) block_iter_obj;
+ return block_iter_obj;
}
static PyObject *
diff --git a/gdb/python/py-breakpoint.c b/gdb/python/py-breakpoint.c
index b628e14ae4e..60794be198d 100644
--- a/gdb/python/py-breakpoint.c
+++ b/gdb/python/py-breakpoint.c
@@ -846,7 +846,7 @@ bppy_get_locations (PyObject *self, void *closure)
Py_INCREF (self);
py_bploc->owner = self_bp;
py_bploc->bp_loc = ref.release ();
- if (PyList_Append (list.get (), (PyObject *) py_bploc.get ()) != 0)
+ if (PyList_Append (list.get (), py_bploc.get ()) != 0)
return nullptr;
}
return list.release ();
@@ -1097,7 +1097,7 @@ bppy_repr (PyObject *self)
static bool
build_bp_list (struct breakpoint *b, PyObject *list)
{
- PyObject *bp = (PyObject *) b->py_bp_object;
+ PyObject *bp = b->py_bp_object;
/* Not all breakpoints will have a companion Python object.
Only breakpoints that were created via bppy_new, or
@@ -1161,7 +1161,6 @@ gdbpy_breakpoint_cond_says_stop (const struct extension_language_defn *extlang,
{
int stop;
struct gdbpy_breakpoint_object *bp_obj = b->py_bp_object;
- PyObject *py_bp = (PyObject *) bp_obj;
if (bp_obj == NULL)
return EXT_LANG_BP_STOP_UNSET;
@@ -1173,9 +1172,9 @@ gdbpy_breakpoint_cond_says_stop (const struct extension_language_defn *extlang,
if (bp_obj->is_finish_bp)
bpfinishpy_pre_stop_hook (bp_obj);
- if (PyObject_HasAttrString (py_bp, stop_func))
+ if (PyObject_HasAttrString (bp_obj, stop_func))
{
- gdbpy_ref<> result = gdbpy_call_method (py_bp, stop_func);
+ gdbpy_ref<> result = gdbpy_call_method (bp_obj, stop_func);
stop = 1;
if (result != NULL)
@@ -1210,15 +1209,11 @@ int
gdbpy_breakpoint_has_cond (const struct extension_language_defn *extlang,
struct breakpoint *b)
{
- PyObject *py_bp;
-
if (b->py_bp_object == NULL)
return 0;
- py_bp = (PyObject *) b->py_bp_object;
-
gdbpy_enter enter_py (b->gdbarch);
- return PyObject_HasAttrString (py_bp, stop_func);
+ return PyObject_HasAttrString (b->py_bp_object, stop_func);
}
\f
@@ -1337,7 +1332,7 @@ gdbpy_breakpoint_modified (struct breakpoint *b)
{
gdbpy_enter enter_py (b->gdbarch);
- PyObject *bp_obj = (PyObject *) bp->py_bp_object;
+ PyObject *bp_obj = bp->py_bp_object;
if (bp_obj)
{
if (!evregpy_no_listeners_p (gdb_py_events.breakpoint_modified))
@@ -1625,7 +1620,7 @@ bplocpy_get_owner (PyObject *py_self, void *closure)
BPPY_REQUIRE_VALID (self->owner);
BPLOCPY_REQUIRE_VALID (self->owner, self);
Py_INCREF (self->owner);
- return (PyObject *) self->owner;
+ return self->owner;
}
/* Attempt to get fully resolved file path for symtab. */
diff --git a/gdb/python/py-cmd.c b/gdb/python/py-cmd.c
index 24938fcda15..c305c0ab5a4 100644
--- a/gdb/python/py-cmd.c
+++ b/gdb/python/py-cmd.c
@@ -111,7 +111,7 @@ cmdpy_function (const char *args, int from_tty, cmd_list_element *command)
'invoke' method when it was created. If the 'invoke' method is now
missing, then the user has done something weird (like deleting the
invoke method, yuck!). */
- if (!PyObject_HasAttr ((PyObject *) obj, invoke_cst))
+ if (!PyObject_HasAttr (obj, invoke_cst))
error (_("Python command object missing 'invoke' method."));
if (args == nullptr)
@@ -125,7 +125,7 @@ cmdpy_function (const char *args, int from_tty, cmd_list_element *command)
}
gdbpy_ref<> ttyobj (PyBool_FromLong (from_tty));
- gdbpy_ref<> result (PyObject_CallMethodObjArgs ((PyObject *) obj, invoke_cst,
+ gdbpy_ref<> result (PyObject_CallMethodObjArgs (obj, invoke_cst,
argobj.get (), ttyobj.get (),
NULL));
@@ -170,7 +170,7 @@ cmdpy_completer_helper (struct cmd_list_element *command,
if (obj == NULL)
error (_("Invalid invocation of Python command object."));
- if (!PyObject_HasAttr ((PyObject *) obj, complete_cst))
+ if (!PyObject_HasAttr (obj, complete_cst))
{
/* If there is no complete method, don't error. */
return NULL;
@@ -201,7 +201,7 @@ cmdpy_completer_helper (struct cmd_list_element *command,
}
}
- gdbpy_ref<> resultobj (PyObject_CallMethodObjArgs ((PyObject *) obj,
+ gdbpy_ref<> resultobj (PyObject_CallMethodObjArgs (obj,
complete_cst,
textobj.get (),
wordobj.get (), NULL));
diff --git a/gdb/python/py-corefile.c b/gdb/python/py-corefile.c
index a1dee384edf..58eac984feb 100644
--- a/gdb/python/py-corefile.c
+++ b/gdb/python/py-corefile.c
@@ -123,7 +123,7 @@ gdbpy_core_file_from_inferior (inferior *inf)
if (get_inferior_core_bfd (inf) == nullptr)
return py_none ();
- PyObject *result = (PyObject *) cfpy_inferior_corefile_data_key.get (inf);
+ PyObject *result = cfpy_inferior_corefile_data_key.get (inf);
if (result != nullptr)
return gdbpy_ref<>::new_reference (result);
@@ -294,7 +294,7 @@ cfpy_mapped_files (PyObject *self, PyObject *args)
/* Add to the gdb.CorefileMappedFileRegion list. */
if (PyTuple_SetItem (regions.get (), regions_idx++,
- (PyObject *) region_obj.release ()) < 0)
+ region_obj.release ()) < 0)
return nullptr;
}
@@ -313,7 +313,7 @@ cfpy_mapped_files (PyObject *self, PyObject *args)
/* Add to the gdb.CorefileMappedFile list. */
if (PyTuple_SetItem (tuple.get (), tuple_idx++,
- (PyObject *) entry.release ()) < 0)
+ entry.release ()) < 0)
return nullptr;
}
diff --git a/gdb/python/py-disasm.c b/gdb/python/py-disasm.c
index a2abf37a605..48a2a4f6f8b 100644
--- a/gdb/python/py-disasm.c
+++ b/gdb/python/py-disasm.c
@@ -282,7 +282,7 @@ disasm_info_init (PyObject *self, PyObject *args, PyObject *kwargs)
/* As the OTHER object now holds a pointer to INFO we inc the ref count
on INFO. This stops INFO being deleted until OTHER has gone away. */
- Py_INCREF ((PyObject *) info);
+ Py_INCREF (info);
return 0;
}
@@ -296,7 +296,7 @@ disasm_info_dealloc (PyObject *self)
/* We no longer care about the object our NEXT pointer points at, so we
can decrement its reference count. This macro handles the case when
NEXT is nullptr. */
- Py_XDECREF ((PyObject *) obj->next);
+ Py_XDECREF (obj->next);
/* Now core deallocation behavior. */
Py_TYPE (self)->tp_free (self);
@@ -354,7 +354,7 @@ make_disasm_text_part (std::string &&str, enum disassembler_style style)
text_part->string = new std::string (str);
text_part->style = style;
- return gdbpy_ref<> ((PyObject *) text_part);
+ return gdbpy_ref<> (text_part);
}
/* Create a new DisassemblerAddressPart and return a gdbpy_ref wrapper for
@@ -370,7 +370,7 @@ make_disasm_addr_part (struct gdbarch *gdbarch, CORE_ADDR address)
addr_part->address = address;
addr_part->gdbarch = gdbarch;
- return gdbpy_ref<> ((PyObject *) addr_part);
+ return gdbpy_ref<> (addr_part);
}
/* Ensure that a gdb.disassembler.DisassembleInfo is valid. */
@@ -837,8 +837,7 @@ gdbpy_disassembler::read_memory_func (bfd_vma memaddr, gdb_byte *buff,
/* Now call the DisassembleInfo.read_memory method. This might have been
overridden by the user. */
- gdbpy_ref<> result_obj = gdbpy_call_method ((PyObject *) obj, "read_memory",
- len, offset);
+ gdbpy_ref<> result_obj = gdbpy_call_method (obj, "read_memory", len, offset);
/* Handle any exceptions. */
if (result_obj == nullptr)
@@ -1236,7 +1235,7 @@ gdbpy_print_insn (struct gdbarch *gdbarch, CORE_ADDR memaddr,
disassembly. */
gdbpy_ref<> result
(PyObject_CallFunctionObjArgs (hook.get (),
- (PyObject *) disasm_info.get (),
+ disasm_info.get (),
nullptr));
if (result == nullptr)
diff --git a/gdb/python/py-evts.c b/gdb/python/py-evts.c
index 67d6caff478..adb747025fd 100644
--- a/gdb/python/py-evts.c
+++ b/gdb/python/py-evts.c
@@ -43,9 +43,7 @@ add_new_registry (eventregistry_object **registryp, const char *name)
if (*registryp == NULL)
return -1;
- return gdb_pymodule_addobject (gdb_py_events.mod,
- name,
- (PyObject *)(*registryp));
+ return gdb_pymodule_addobject (gdb_py_events.mod, name, *registryp);
}
/* Create and populate the _gdbevents module. Note that this is
diff --git a/gdb/python/py-finishbreakpoint.c b/gdb/python/py-finishbreakpoint.c
index 49e12c00054..9f3b90acdec 100644
--- a/gdb/python/py-finishbreakpoint.c
+++ b/gdb/python/py-finishbreakpoint.c
@@ -343,12 +343,11 @@ static void
bpfinishpy_out_of_scope (struct finish_breakpoint_object *bpfinish_obj)
{
gdbpy_breakpoint_object *bp_obj = (gdbpy_breakpoint_object *) bpfinish_obj;
- PyObject *py_obj = (PyObject *) bp_obj;
if (bpfinish_obj->py_bp.bp->enable_state == bp_enabled
- && PyObject_HasAttrString (py_obj, outofscope_func))
+ && PyObject_HasAttrString (bp_obj, outofscope_func))
{
- gdbpy_ref<> meth_result = gdbpy_call_method (py_obj, outofscope_func);
+ gdbpy_ref<> meth_result = gdbpy_call_method (bp_obj, outofscope_func);
if (meth_result == NULL)
gdbpy_print_stack ();
}
@@ -366,7 +365,7 @@ bpfinishpy_detect_out_scope_cb (struct breakpoint *b,
struct breakpoint *bp_stopped,
bool delete_bp)
{
- PyObject *py_bp = (PyObject *) b->py_bp_object;
+ PyObject *py_bp = b->py_bp_object;
/* Trigger out_of_scope if this is a FinishBreakpoint and its frame is
not anymore in the current callstack. */
diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
index dd2a3a0da24..4386489a8e7 100644
--- a/gdb/python/py-inferior.c
+++ b/gdb/python/py-inferior.c
@@ -296,8 +296,7 @@ thread_to_thread_object (thread_info *thr)
auto thread_it = inf_obj->threads->find (thr);
if (thread_it != inf_obj->threads->end ())
- return gdbpy_ref<>::new_reference
- ((PyObject *) (thread_it->second.get ()));
+ return gdbpy_ref<>::new_reference (thread_it->second.get ());
PyErr_SetString (PyExc_SystemError,
_("could not find gdb thread object"));
@@ -493,7 +492,7 @@ gdbpy_inferiors (PyObject *unused, PyObject *unused2)
if (inferior == NULL)
continue;
- if (PyList_Append (list.get (), (PyObject *) inferior.get ()) != 0)
+ if (PyList_Append (list.get (), inferior.get ()) != 0)
return NULL;
}
@@ -985,8 +984,7 @@ infpy_dealloc (PyObject *obj)
PyObject *
gdbpy_selected_inferior (PyObject *self, PyObject *args)
{
- return ((PyObject *)
- inferior_to_inferior_object (current_inferior ()).release ());
+ return (inferior_to_inferior_object (current_inferior ()).release ());
}
/* Implement the selected_context event handler. This is called when some
diff --git a/gdb/python/py-infthread.c b/gdb/python/py-infthread.c
index 96c736495a8..a5ea749cba9 100644
--- a/gdb/python/py-infthread.c
+++ b/gdb/python/py-infthread.c
@@ -48,7 +48,7 @@ create_thread_object (struct thread_info *tp)
return nullptr;
thread_obj->thread = tp;
- thread_obj->inf_obj = (PyObject *) inf_obj.release ();
+ thread_obj->inf_obj = inf_obj.release ();
if (!thread_obj->allocate_dict ())
return nullptr;
diff --git a/gdb/python/py-lazy-string.c b/gdb/python/py-lazy-string.c
index c9d06338b0a..1ea14395a73 100644
--- a/gdb/python/py-lazy-string.c
+++ b/gdb/python/py-lazy-string.c
@@ -236,7 +236,7 @@ gdbpy_create_lazy_string_object (CORE_ADDR address, long length,
str_obj->encoding = xstrdup (encoding);
str_obj->type = type_to_type_object (type).release ();
- return (PyObject *) str_obj;
+ return str_obj;
}
static int
diff --git a/gdb/python/py-linetable.c b/gdb/python/py-linetable.c
index faaedc5e9e8..e5683b1f60a 100644
--- a/gdb/python/py-linetable.c
+++ b/gdb/python/py-linetable.c
@@ -113,7 +113,7 @@ build_linetable_entry (int line, CORE_ADDR address)
obj->pc = address;
}
- return (PyObject *) obj;
+ return obj;
}
/* Internal helper function to build a Python Tuple from a vector.
@@ -350,7 +350,7 @@ ltpy_iter (PyObject *self)
ltpy_iter_obj->source = self;
Py_INCREF (self);
- return (PyObject *) ltpy_iter_obj;
+ return ltpy_iter_obj;
}
static void
diff --git a/gdb/python/py-membuf.c b/gdb/python/py-membuf.c
index fa5156b885e..7951e9a92ac 100644
--- a/gdb/python/py-membuf.c
+++ b/gdb/python/py-membuf.c
@@ -53,7 +53,7 @@ gdbpy_buffer_to_membuf (gdb::unique_xmalloc_ptr<gdb_byte> buffer,
membuf_obj->addr = address;
membuf_obj->length = length;
- return PyMemoryView_FromObject ((PyObject *) membuf_obj.get ());
+ return PyMemoryView_FromObject (membuf_obj.get ());
}
/* Destructor for gdb.Membuf objects. */
diff --git a/gdb/python/py-micmd.c b/gdb/python/py-micmd.c
index 9f6e664a5f2..ecdf4b72018 100644
--- a/gdb/python/py-micmd.c
+++ b/gdb/python/py-micmd.c
@@ -207,7 +207,7 @@ mi_command_py::invoke (struct mi_parse *parse) const
gdb_assert (this->m_pyobj != nullptr);
gdb_assert (PyErr_Occurred () == nullptr);
gdbpy_ref<> results
- (PyObject_CallMethodObjArgs ((PyObject *) this->m_pyobj.get (), invoke_cst,
+ (PyObject_CallMethodObjArgs (this->m_pyobj.get (), invoke_cst,
argobj.get (), nullptr));
if (results == nullptr)
gdbpy_handle_exception ();
diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c
index ec8b82fbe13..dcd326b696c 100644
--- a/gdb/python/py-objfile.c
+++ b/gdb/python/py-objfile.c
@@ -237,7 +237,7 @@ objfpy_new (PyTypeObject *type, PyObject *args, PyObject *keywords)
if (self != nullptr && !objfpy_initialize (self))
return nullptr;
- return (PyObject *) self.release ();
+ return self.release ();
}
PyObject *
@@ -670,8 +670,7 @@ gdbpy_lookup_objfile (PyObject *self, PyObject *args, PyObject *kw)
gdbpy_ref<>
objfile_to_objfile_object (struct objfile *objfile)
{
- PyObject *result
- = (PyObject *) objfpy_objfile_data_key.get (objfile);
+ PyObject *result = objfpy_objfile_data_key.get (objfile);
if (result == NULL)
{
gdbpy_ref<objfile_object> object
@@ -683,7 +682,7 @@ objfile_to_objfile_object (struct objfile *objfile)
object->objfile = objfile;
objfpy_objfile_data_key.set (objfile, object.get ());
- result = (PyObject *) object.release ();
+ result = object.release ();
}
return gdbpy_ref<>::new_reference (result);
diff --git a/gdb/python/py-progspace.c b/gdb/python/py-progspace.c
index a88535bdca9..de6bfc65346 100644
--- a/gdb/python/py-progspace.c
+++ b/gdb/python/py-progspace.c
@@ -583,7 +583,7 @@ pspy_is_valid (PyObject *o, PyObject *args)
gdbpy_ref<>
pspace_to_pspace_object (struct program_space *pspace)
{
- PyObject *result = (PyObject *) pspy_pspace_data_key.get (pspace);
+ PyObject *result = pspy_pspace_data_key.get (pspace);
if (result != nullptr)
return gdbpy_ref<>::new_reference (result);
diff --git a/gdb/python/py-record-btrace.c b/gdb/python/py-record-btrace.c
index e60bc44e81f..a73167a5bdd 100644
--- a/gdb/python/py-record-btrace.c
+++ b/gdb/python/py-record-btrace.c
@@ -197,7 +197,7 @@ btpy_list_new (thread_info *thread, Py_ssize_t first, Py_ssize_t last,
obj->step = step;
obj->element_type = element_type;
- return (PyObject *) obj;
+ return obj;
}
/* Implementation of RecordInstruction.sal [gdb.Symtab_and_line] for btrace.
diff --git a/gdb/python/py-record.c b/gdb/python/py-record.c
index 15e1b9f3316..c3ac53336eb 100644
--- a/gdb/python/py-record.c
+++ b/gdb/python/py-record.c
@@ -208,7 +208,7 @@ recpy_insn_new (thread_info *thread, enum record_method method,
obj->method = method;
obj->number = number;
- return (PyObject *) obj;
+ return obj;
}
/* Implementation of RecordInstruction.sal [gdb.Symtab_and_line]. */
@@ -305,7 +305,7 @@ recpy_func_new (thread_info *thread, enum record_method method,
obj->method = method;
obj->number = number;
- return (PyObject *) obj;
+ return obj;
}
/* Implementation of RecordFunctionSegment.level [int]. */
@@ -460,7 +460,7 @@ recpy_gap_new (int reason_code, const char *reason_string, Py_ssize_t number)
obj->reason_string = reason_string;
obj->number = number;
- return (PyObject *) obj;
+ return obj;
}
/* Implementation of RecordGap.number [int]. */
@@ -509,7 +509,7 @@ recpy_aux_new (thread_info *thread, enum record_method method,
obj->method = method;
obj->number = number;
- return (PyObject *) obj;
+ return obj;
}
/* Implementation of Auxiliary.data [buffer]. */
@@ -698,7 +698,7 @@ gdbpy_current_recording (PyObject *self, PyObject *args)
ret->thread = inferior_thread ();
ret->method = target_record_method (ret->thread->ptid);
- return (PyObject *) ret;
+ return ret;
}
/* Implementation of gdb.stop_recording (self) -> None. */
diff --git a/gdb/python/py-registers.c b/gdb/python/py-registers.c
index e0180660715..348acbfd4d0 100644
--- a/gdb/python/py-registers.c
+++ b/gdb/python/py-registers.c
@@ -244,7 +244,7 @@ gdbpy_new_reggroup_iterator (struct gdbarch *gdbarch)
return NULL;
iter->index = 0;
iter->gdbarch = gdbarch;
- return (PyObject *) iter;
+ return iter;
}
/* Create and return a new gdb.RegisterDescriptorIterator object which
@@ -286,7 +286,7 @@ gdbpy_new_register_descriptor_iterator (struct gdbarch *gdbarch,
gdb_assert (grp != NULL);
iter->reggroup = grp;
- return (PyObject *) iter;
+ return iter;
}
/* Return a reference to the gdb.RegisterDescriptorIterator object. */
diff --git a/gdb/python/py-stopevent.c b/gdb/python/py-stopevent.c
index cdb1ad3fc50..01c95b66e9d 100644
--- a/gdb/python/py-stopevent.c
+++ b/gdb/python/py-stopevent.c
@@ -123,8 +123,7 @@ emit_stop_event (struct bpstat *bs, enum gdb_signal stop_signal)
if (current_bs->breakpoint_at
&& current_bs->breakpoint_at->py_bp_object)
{
- PyObject *current_py_bp =
- (PyObject *) current_bs->breakpoint_at->py_bp_object;
+ PyObject *current_py_bp = current_bs->breakpoint_at->py_bp_object;
if (list == NULL)
{
diff --git a/gdb/python/py-tui.c b/gdb/python/py-tui.c
index 625de3bf87b..465fbd2fe6d 100644
--- a/gdb/python/py-tui.c
+++ b/gdb/python/py-tui.c
@@ -420,7 +420,7 @@ gdbpy_tui_window_maker::operator() (const char *win_name)
gdbpy_ref<> user_window
(PyObject_CallFunctionObjArgs (m_constr.get (),
- (PyObject *) wrapper.get (),
+ wrapper.get (),
nullptr));
if (user_window == nullptr)
{
diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
index 9dd0fe2ab37..996fe54bb84 100644
--- a/gdb/python/py-type.c
+++ b/gdb/python/py-type.c
@@ -91,7 +91,7 @@ field_dealloc (PyObject *obj)
Py_TYPE (obj)->tp_free (obj);
}
-static PyObject *
+static gdbpy_ref<>
field_new (void)
{
gdbpy_ref<field_object> result (PyObject_New (field_object,
@@ -100,7 +100,7 @@ field_new (void)
if (result != nullptr && !result->allocate_dict ())
return nullptr;
- return (PyObject *) result.release ();
+ return result;
}
\f
@@ -1347,7 +1347,7 @@ typy_make_iter (PyObject *self, enum gdbpy_iter_kind kind)
Py_INCREF (self);
typy_iter_obj->source = (type_object *) self;
- return (PyObject *) typy_iter_obj;
+ return typy_iter_obj;
}
/* iteritems() method. */
diff --git a/gdb/python/py-unwind.c b/gdb/python/py-unwind.c
index 13eced4cecb..feeba40fe84 100644
--- a/gdb/python/py-unwind.c
+++ b/gdb/python/py-unwind.c
@@ -294,7 +294,7 @@ pyuw_create_unwind_info (PyObject *pyo_pending_frame,
Py_INCREF (pyo_pending_frame);
unwind_info->pending_frame = pyo_pending_frame;
unwind_info->saved_regs = new std::vector<saved_reg>;
- return (PyObject *) unwind_info;
+ return unwind_info;
}
/* The implementation of
@@ -864,10 +864,9 @@ frame_unwind_python::sniff (const frame_info_ptr &this_frame,
paddress (gdbarch, get_frame_pc (this_frame)));
/* Create PendingFrame instance to pass to sniffers. */
- pending_frame_object *pfo = PyObject_New (pending_frame_object,
- &pending_frame_object_type);
- gdbpy_ref<> pyo_pending_frame ((PyObject *) pfo);
- if (pyo_pending_frame == NULL)
+ gdbpy_ref<pending_frame_object> pfo
+ (PyObject_New (pending_frame_object, &pending_frame_object_type));
+ if (pfo == NULL)
{
gdbpy_print_stack ();
return 0;
@@ -900,8 +899,7 @@ frame_unwind_python::sniff (const frame_info_ptr &this_frame,
/* A (gdb.UnwindInfo, str) tuple, or None. */
gdbpy_ref<> pyo_execute_ret
- (PyObject_CallFunctionObjArgs (pyo_execute.get (),
- pyo_pending_frame.get (), NULL));
+ (PyObject_CallFunctionObjArgs (pyo_execute.get (), pfo.get (), nullptr));
if (pyo_execute_ret == nullptr)
{
/* If the unwinder is cancelled due to a Ctrl-C, then propagate
--
2.49.0
^ permalink raw reply [flat|nested] 5+ messages in thread