From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 127524 invoked by alias); 23 May 2018 14:49:07 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 102124 invoked by uid 89); 23 May 2018 14:48:45 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.4 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx1.redhat.com Received: from mx3-rdu2.redhat.com (HELO mx1.redhat.com) (66.187.233.73) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 23 May 2018 14:48:43 +0000 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9F3724023826; Wed, 23 May 2018 14:48:32 +0000 (UTC) Received: from [127.0.0.1] (ovpn04.gateway.prod.ext.ams2.redhat.com [10.39.146.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id CA04A210C6C1; Wed, 23 May 2018 14:48:31 +0000 (UTC) Subject: Re: [PATCH] testsuite: Extend TLS core file testing with an OS-generated dump To: "Maciej W. Rozycki" References: <5b76142d-479d-3c34-9294-9f4510d0fc04@redhat.com> Cc: gdb-patches@sourceware.org, Djordje Todorovic From: Pedro Alves Message-ID: Date: Wed, 23 May 2018 17:33:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-SW-Source: 2018-05/txt/msg00627.txt.bz2 On 05/23/2018 01:42 PM, Maciej W. Rozycki wrote: > On Wed, 23 May 2018, Pedro Alves wrote: > >>> to gdbserver testing. The latter is because we'd have to handle core >>> file copying from the remote system and then cleaning up with a possibly >>> variable name of the core file created. This code has been based on >>> gdb.base/auxv.exp, which does not do it either. >> >> Hmm, that sounds like an outdated testcase to copy. See >> gdb.threads/corethreads.exp, for example, and the use of the core_find >> procedure. Can we use that procedure here too? > > Possibly. The test case is skipped with all my testing, native or > native-gdbserver, due to the use of `![isnative]' (I have $build != > $host; the native compiler I have on the host machine is too old to > build GDB these days), so I didn't even notice it there. > >> I also don't see why (gdbserver && !is_remote) testing can't work, such as >> with --target=native-gdbserver and --target=native-extended-gdbserver boards. >> It works for gdb.threads/corethreads.exp, for example. > > Acknowledged. Given the current situation I cannot afford investing > any further work into this change, so let's ditch it (and a change to > gdb.base/auxv.exp to use `use_gdb_stub' I planned to submit next). If I > find some time after all, then I can revisit the decision later on. I understand. Let me take it over then. Below's a version using core_find. I also simplified the patch a bit: - Removed the rlimit bits, since it seems that no other core-related test does that (so it seems to me that if needed, it would better be done separately and to several testcases at once). - Removed the test message parameters from tls_core_test, and switched to using with_test_prefix instead - Extended tls_core_test's description a bit to mention the SUPPORTED parameter. This gives an all pass for me on native, native-gdbserver, and native-extended-gdbserver (x86-64 GNU/Linux). As a local hack, I flipped the logic in: set core_supported [expr {$corefile != ""}] to make sure that the expected UNSUPPORTED messages come out. Let me know what you think. Thanks, Pedro Alves >From 154986d31cc124486e28076e0902065f054dff12 Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Wed, 23 May 2018 15:33:55 +0100 Subject: [PATCH] testsuite: Extend TLS core file testing with an OS-generated dump Complementing commit 280ca31f4d60 ("Add test for fetching TLS from core file") extend gdb.threads/tls-core.exp with an OS-generated dump where supported. This verifies not only that our core dump interpreter is consistent with our producer, but that it matches the OS verified as well, avoiding a possible case where our interpreter would be bug-compatible with our producer but not the OS and it would go unnoticed in testing. This adds: PASS: gdb.threads/tls-core.exp: set cwd to temporary directory for core dumps PASS: gdb.threads/tls-core.exp: continue to signal PASS: gdb.threads/tls-core.exp: continue to termination PASS: gdb.threads/tls-core.exp: generate native core dump PASS: gdb.threads/tls-core.exp: load native corefile PASS: gdb.threads/tls-core.exp: print thread-local storage variable from native corefile to local testing and: UNSUPPORTED: gdb.threads/tls-core.exp: generate native core dump UNSUPPORTED: gdb.threads/tls-core.exp: load native corefile UNSUPPORTED: gdb.threads/tls-core.exp: print thread-local storage variable from native corefile to remote testing, or for testing on ports that don't supports cores. gdb/testsuite/ChangeLog: 2018-05-23 Maciej W. Rozycki Pedro Alves * gdb.threads/tls-core.c: Include (thread_proc): Call `abort'. * gdb.threads/tls-core.exp: Generate a core with core_find too. (tls_core_test): New procedure, bits factored out from ... (top level): ... here. Test both native cores and gcore cores. --- gdb/testsuite/gdb.threads/tls-core.c | 2 ++ gdb/testsuite/gdb.threads/tls-core.exp | 63 ++++++++++++++++++++++------------ 2 files changed, 44 insertions(+), 21 deletions(-) diff --git a/gdb/testsuite/gdb.threads/tls-core.c b/gdb/testsuite/gdb.threads/tls-core.c index 6089ba116ea..33dd43fb49a 100644 --- a/gdb/testsuite/gdb.threads/tls-core.c +++ b/gdb/testsuite/gdb.threads/tls-core.c @@ -16,12 +16,14 @@ along with this program. If not, see . */ #include +#include int __thread foo = 0xdeadbeef; static void * thread_proc (void *arg) { + abort (); return arg; } diff --git a/gdb/testsuite/gdb.threads/tls-core.exp b/gdb/testsuite/gdb.threads/tls-core.exp index 730016d3bcf..4d2aaeb2989 100644 --- a/gdb/testsuite/gdb.threads/tls-core.exp +++ b/gdb/testsuite/gdb.threads/tls-core.exp @@ -20,37 +20,58 @@ if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" \ return -1 } +# Generate a native core file. + +set corefile [core_find $binfile] +set core_supported [expr {$corefile != ""}] + +# Generate a core file with "gcore". clean_restart ${binfile} runto thread_proc -# -# Generate corefile. -# -set corefile [standard_output_file gcore.test] -set core_supported [gdb_gcore_cmd "$corefile" "save a corefile"] -if {!$core_supported} { - return 0 -} +set gcorefile [standard_output_file gcore.test] +set gcore_supported [gdb_gcore_cmd "$gcorefile" "gcore"] +# Restart gdb and load COREFILE as a core file. SUPPORTED is true iff +# the core was generated successfully; otherwise, the tests are marked +# unsupported. # -# Restart gdb and load generated corefile. -# -clean_restart ${binfile} +proc tls_core_test {supported corefile} { + upvar target_triplet target_triplet + upvar host_triplet host_triplet + upvar binfile binfile + + clean_restart ${binfile} + + set test "load core file" + if {$supported} { + set core_loaded [gdb_core_cmd $corefile $test] + } else { + set core_loaded 0 + unsupported $test + } + + set test "print thread-local storage variable" + if { $core_loaded == 1 } { + # This fails in cross-debugging due to the use of native + # `libthread_db'. + if {![string match $host_triplet $target_triplet]} { + setup_kfail "threads/22381" "*-*-*" + } + gdb_test "p/x foo" "\\$\[0-9]+ = 0xdeadbeef" $test + } else { + unsupported $test + } +} -set core_loaded [gdb_core_cmd "$corefile" "load generated corefile"] -if { $core_loaded != 1 } { - # No use proceeding from here. - return 0 +with_test_prefix "native" { + tls_core_test $core_supported $corefile } -# This fails in cross-debugging due to the use of native `libthread_db'. -if {![string match $host_triplet $target_triplet]} { - setup_kfail "threads/22381" "*-*-*" +with_test_prefix "gcore" { + tls_core_test $gcore_supported $gcorefile } -gdb_test "p/x foo" \ - "\\$\[0-9]+ = 0xdeadbeef" \ - "print thread-local storage variable" gdb_exit -- 2.14.3