Re: [PATCH v3 1/2] gdb/testsuite: fix gdb.threads/threadcrash.exp on 32-bit arm targets

Lancelot SIX
2024-02-15T14:37:51Z

Oups,

I replied to the V2 before I saw a V3 was available and the V3 addresses
the point I raised!

Please discard my previous message, and FWIW this version looks good to me.

Reviewed-By: Lancelot Six <lancelot.six@amd.com>

On Wed, Feb 14, 2024 at 10:17:12AM +0100, Guinevere Larsen wrote:
> There are 2 issues with the test gdb.threads/threadcrash.exp on arm
> targets, both relating to issues in how the targets handles gcores. The
> first is that the test fails to cout the number of threads in the
> inferior and the second is that GDB can't properly backtrace from a
> gcore.
>
> The first error is fixed on this commit by getting the convenience
> variable _inferior_thread_count as opposed to calculating it based on
> the output of "info threads"
>
> For the second, this test just emits a single xfail referring back to PR
> corefiles/31294, which tracks the issues with gcores in 32-bit arm
> targets.
>
> Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31294
> ---
> gdb/testsuite/gdb.threads/threadcrash.exp | 29 ++++++-----------------
> 1 file changed, 7 insertions(+), 22 deletions(-)
>
> diff --git a/gdb/testsuite/gdb.threads/threadcrash.exp b/gdb/testsuite/gdb.threads/threadcrash.exp
> index 996e020d1e8..bf4534179e2 100644
> --- a/gdb/testsuite/gdb.threads/threadcrash.exp
> +++ b/gdb/testsuite/gdb.threads/threadcrash.exp
> @@ -20,26 +20,6 @@
> # a gcore.
>
>
> -# Check that the inferior has 7 threads, and return the number of threads (7).
> -# We return the thread count so that, even if there is some error in the test,
> -# the final log doesn't get flooded with failures.
> -
> -proc test_thread_count {} {
> - set thread_count 0
> -
> - gdb_test_multiple "info threads" "getting thread count" -lbl {
> - -re "Thread" {
> - incr thread_count
> - exp_continue
> - }
> - -re "$::gdb_prompt " {
> - gdb_assert {$thread_count == 7}
> - }
> - }
> -
> - return $thread_count
> -}
> -
> # Use 'thread apply all backtrace' to check if all expected threads
> # are present, and stopped in the expected locations. Set the global
> # TEST_LIST to be the a list of regexps expected to match all the
> @@ -123,7 +103,8 @@ proc thread_apply_all {} {
>
> proc do_full_test {} {
> global test_list
> - set thread_count [test_thread_count]
> + set thread_count [get_valueof "" "\$_inferior_thread_count" 0]
> + gdb_assert {$thread_count == 7}
>
> thread_apply_all
>
> @@ -230,4 +211,8 @@ test_live_inferior
>
> test_corefile
>
> -test_gcore
> +if { [is_aarch32_target] } {
> + kfail "gcore tests fail on 32-bit arm, see PR corefiles/31294"
> +} else {
> + test_gcore
> +}
>
> --
> 2.43.0
>