gdb: remove unneeded switch_to_thread from thr_try_catch_cmd

I spotted that every time thr_try_catch_cmd is called GDB has already
switched to the required thread.  The call to switch_to_thread at the
head of thr_try_catch_cmd is therefore redundant.

This commit replaces the call to switch_to_thread with an assertion
that we already have the required thread selected.

I also extended the header comment on thr_try_catch_cmd to make it
clearer when this function could throw an exception.

There should be no user visible changes after this commit.

gdb/ChangeLog:

	* thread.c (thr_try_catch_cmd): Replace swith_to_thread with an
	assert.  Extend the header comment.
This commit is contained in:
Andrew Burgess 2021-01-27 18:20:35 +00:00
parent f237f998d1
commit 0f93c3a25b
2 changed files with 9 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2021-01-28 Andrew Burgess <andrew.burgess@embecosm.com>
* thread.c (thr_try_catch_cmd): Replace swith_to_thread with an
assert. Extend the header comment.
2021-01-28 Andrew Burgess <andrew.burgess@embecosm.com> 2021-01-28 Andrew Burgess <andrew.burgess@embecosm.com>
* Makefile.in (SUBDIR_TUI_SRCS): Add tui/tui-location.c. * Makefile.in (SUBDIR_TUI_SRCS): Add tui/tui-location.c.

View File

@ -1466,15 +1466,16 @@ tp_array_compar_descending (const thread_info_ref &a, const thread_info_ref &b)
return (a->per_inf_num > b->per_inf_num); return (a->per_inf_num > b->per_inf_num);
} }
/* Switch to thread THR and execute CMD. /* Assuming that THR is the current thread, execute CMD.
FLAGS.QUIET controls the printing of the thread information. FLAGS.QUIET controls the printing of the thread information.
FLAGS.CONT and FLAGS.SILENT control how to handle errors. */ FLAGS.CONT and FLAGS.SILENT control how to handle errors. Can throw an
exception if !FLAGS.SILENT and !FLAGS.CONT and CMD fails. */
static void static void
thr_try_catch_cmd (thread_info *thr, const char *cmd, int from_tty, thr_try_catch_cmd (thread_info *thr, const char *cmd, int from_tty,
const qcs_flags &flags) const qcs_flags &flags)
{ {
switch_to_thread (thr); gdb_assert (is_current_thread (thr));
/* The thread header is computed before running the command since /* The thread header is computed before running the command since
the command can change the inferior, which is not permitted the command can change the inferior, which is not permitted