X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fpython%2Fpy-threadevent.c;h=3be86b71daa3327e8920926928f119732eb5da64;hb=5b6d1e4fa4fc6827c7b3f0e99ff120dfa14d65d2;hp=d6aa9467b9af8ed8140faa60b7dc3c2626e75ae0;hpb=00431a78b28f913a9d5c912c49680e39cfd20847;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/python/py-threadevent.c b/gdb/python/py-threadevent.c index d6aa9467b9..3be86b71da 100644 --- a/gdb/python/py-threadevent.c +++ b/gdb/python/py-threadevent.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2009-2018 Free Software Foundation, Inc. +/* Copyright (C) 2009-2020 Free Software Foundation, Inc. This file is part of GDB. @@ -20,48 +20,33 @@ #include "infrun.h" #include "gdbthread.h" -/* thread events can either be thread specific or process wide. If gdb is - running in non-stop mode then the event is thread specific, otherwise - it is process wide. - This function returns the currently stopped thread in non-stop mode and - Py_None otherwise. In each case it returns a borrowed reference. */ +/* See py-event.h. */ -static PyObject *get_event_thread (void) - CPYCHECKER_RETURNS_BORROWED_REF; - -static PyObject * -get_event_thread (void) +gdbpy_ref<> +py_get_event_thread (ptid_t ptid) { - PyObject *thread; - if (non_stop) - thread = (PyObject *) thread_to_thread_object (inferior_thread ()); - else - thread = Py_None; - - if (!thread) { + thread_info *thread + = find_thread_ptid (current_inferior ()->process_target (), + ptid); + if (thread != nullptr) + return thread_to_thread_object (thread); PyErr_SetString (PyExc_RuntimeError, "Could not find event thread"); return NULL; } - - return thread; + return gdbpy_ref<>::new_reference (Py_None); } gdbpy_ref<> create_thread_event_object (PyTypeObject *py_type, PyObject *thread) { - gdbpy_ref<> thread_event_obj (create_event_object (py_type)); + gdb_assert (thread != NULL); + + gdbpy_ref<> thread_event_obj = create_event_object (py_type); if (thread_event_obj == NULL) return NULL; - if (thread == NULL) - { - thread = get_event_thread (); - if (!thread) - return NULL; - } - if (evpy_add_attribute (thread_event_obj.get (), "inferior_thread", thread) < 0)