Re: [PATCH 2/2] gdb: share some thread proceed related code between CLI and MI
Andrew Burgess <[email protected]>
| Newsgroups | gmane.comp.gdb.patches |
|---|---|
| Message-ID | <[email protected]> |
Tom de Vries <[email protected]> writes: > On 8/6/26 10:54 PM, Andrew Burgess wrote: >> + if (inf == nullptr) >> + proceed_all_threads (); >> + else >> + { >> + for (thread_info &thread : inf->threads ()) >> + proceed_one_thread (thread); >> } > > FWIW, also I wonder if it makes sense to fold this logic into > proceed_all_threads: I took a look through all the other proceed() calls and couldn't see anything else that might want to share this code, so my preference would be to leave things as I initially proposed. I like the simpler each function has one clear goal, rather than overloading proceed_all_threads with multiple meanings ("all threads", or "all threads in inferior"). Especially not a fan of default arguments for cases like this (or in general much). That said, if you consider this a blocker to merging this patch then I don't feel that strongly against it so would make the change to get this fix merged. Just let me know. Thanks, Andrew > ... > diff --git a/gdb/infcmd.c b/gdb/infcmd.c > index 23e93587874..d2301ddf093 100644 > --- a/gdb/infcmd.c > +++ b/gdb/infcmd.c > @@ -743,10 +743,18 @@ proceed_one_thread (thread_info &thread) > /* See inferior.h. */ > > void > -proceed_all_threads () > +proceed_all_threads (inferior *inf) > { > gdb_assert (non_stop); > > + if (inf != nullptr) > + { > + for (thread_info &thread : inf->threads ()) > + proceed_one_thread (thread); > + > + return; > + } > + > for (thread_info &thread : all_threads ()) > { > /* We go through all threads individually instead of compressing > diff --git a/gdb/inferior.h b/gdb/inferior.h > index 8255654d9b8..2067f60ab7d 100644 > --- a/gdb/inferior.h > +++ b/gdb/inferior.h > @@ -230,7 +230,7 @@ extern void continue_1 (bool all_threads_p); > /* For use only when non_stop is true. Proceed all threads in every > inferior. */ > > -extern void proceed_all_threads (); > +extern void proceed_all_threads (inferior *inf = nullptr); > > /* For use only when non_stop is true. If THREAD is stopped, and is in an > inferior that has_execution then switch to THREAD, clear its proceed > diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c > index e110b029e1e..1eb087b85db 100644 > --- a/gdb/mi/mi-main.c > +++ b/gdb/mi/mi-main.c > @@ -259,13 +259,7 @@ exec_continue (const char *const *argv, int argc) > if (!current_context->all) > inf = find_inferior_id (current_context->thread_group); > > - if (inf == nullptr) > - proceed_all_threads (); > - else > - { > - for (thread_info &thread : inf->threads ()) > - proceed_one_thread (thread); > - } > + proceed_all_threads (inf); > > disable_commit_resumed.reset_and_commit (); > } > ... > > Thanks, > - Tom