From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id QMPXJFbnTGGFIQAAWB0awg (envelope-from ) for ; Thu, 23 Sep 2021 16:45:10 -0400 Received: by simark.ca (Postfix, from userid 112) id 9473F1EE25; Thu, 23 Sep 2021 16:45:10 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id D2AE21EE14 for ; Thu, 23 Sep 2021 16:45:09 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8BAA1385840A for ; Thu, 23 Sep 2021 20:45:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8BAA1385840A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1632429909; bh=pRePfZCI/axfU5wyEtgvwN62Aoj3ElrHUoMQ6XNlCfI=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=YNBT+1L3w8tqC28ya9+blB6DSEnAmjjqXSoRJeWLEEaL158nHVTT4HT3Hi0mvJHmG BYMNWadyvBb0Ku7pVKSNgfe160i3+uCUNhL5CS5uef5HNyBWgTA7w3coQ+qws+GmAZ c4uGJp48LhEOn30x8StzdFvg+4v2wpznEJ8ymtig= Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by sourceware.org (Postfix) with ESMTPS id BA9903857C7A for ; Thu, 23 Sep 2021 20:43:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BA9903857C7A Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id EEB0D22389 for ; Thu, 23 Sep 2021 20:43:14 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id DBBFB13EAA for ; Thu, 23 Sep 2021 20:43:14 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id YwyTNOLmTGHtGgAAMHmgww (envelope-from ) for ; Thu, 23 Sep 2021 20:43:14 +0000 Date: Thu, 23 Sep 2021 22:43:13 +0200 To: gdb-patches@sourceware.org Subject: [committed][gdb/testsuite] Improve probe detection in gdb.base/break-probes.exp Message-ID: <20210923204311.GA31935@delia> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Tom de Vries via Gdb-patches Reply-To: Tom de Vries Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" Hi, When running test-case gdb.base/break-probes.exp on ubuntu 18.04.5, we have: ... (gdb) run^M Starting program: break-probes^M Stopped due to shared library event (no libraries added or removed)^M (gdb) bt^M #0 0x00007ffff7dd6e12 in ?? () from /lib64/ld-linux-x86-64.so.2^M #1 0x00007ffff7dedf50 in ?? () from /lib64/ld-linux-x86-64.so.2^M #2 0x00007ffff7dd5128 in ?? () from /lib64/ld-linux-x86-64.so.2^M #3 0x00007ffff7dd4098 in ?? () from /lib64/ld-linux-x86-64.so.2^M #4 0x0000000000000001 in ?? ()^M #5 0x00007fffffffdaac in ?? ()^M #6 0x0000000000000000 in ?? ()^M (gdb) UNSUPPORTED: gdb.base/break-probes.exp: probes not present on this system ... Using the backtrace, the test-case tries to establish that we're stopped in dl_main, which is used as proof that we're using probes. However, the backtrace only shows an address, because: - the dynamic linker contains no minimal symbols and no debug info, and - gdb is build without --with-separate-debug-dir so it can't find the corresponding .debug file, which does contain the mimimal symbols and debug info. Fix this by instead printing the pc and grepping for the value in the info probes output: ... (gdb) p /x $pc^M $1 = 0x7ffff7dd6e12^M (gdb) info probes^M Type Provider Name Where Object ^M ... stap rtld init_start 0x00007ffff7dd6e12 /lib64/ld-linux-x86-64.so.2 ^M ... (gdb) ... Tested on x86_64-linux. Committed to trunk. Thanks, - Tom [gdb/testsuite] Improve probe detection in gdb.base/break-probes.exp --- gdb/testsuite/gdb.base/break-probes.exp | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/gdb/testsuite/gdb.base/break-probes.exp b/gdb/testsuite/gdb.base/break-probes.exp index ac10ac5a3b1..b633ae6f4e9 100644 --- a/gdb/testsuite/gdb.base/break-probes.exp +++ b/gdb/testsuite/gdb.base/break-probes.exp @@ -23,13 +23,6 @@ set libname $testfile-solib set srcfile_lib $srcdir/$subdir/$libname.c set binfile_lib [standard_output_file $libname.so] -if { [istarget "*bsd*"] } { - set normal_bp "r_debug_state" -} else { - set normal_bp "_dl_debug_state" -} -set probes_bp "dl_main" - if { [gdb_compile_shlib $srcfile_lib $binfile_lib {}] != "" } { untested "failed to compile shared library" return -1 @@ -47,14 +40,27 @@ gdb_test_no_output "set stop-on-solib-events 1" gdb_run_cmd gdb_test "" ".*Stopped due to shared library event.*" -# XFAIL if we are not using probes -set test "ensure using probes" +# Check if we're using probes. set using_probes 0 -gdb_test_multiple "bt" $test { - -re "#0 +\[^\r\n\]*\\m(__GI_)?$normal_bp\\M.*$gdb_prompt $" { + +# Get PC. +set pc "" +gdb_test_multiple "p /x \$pc" "" { + -re -wrap " = ($hex)" { + set pc $expect_out(1,string) + } + -re -wrap "" { } - -re "#0 +\[^\r\n\]*\\m(__GI_)?$probes_bp\\M.*$gdb_prompt $" { - pass $test +} +if { $pc == "" } { + unsupported "Couldn't get $pc" + return -1 +} +regsub "0x0*" $pc "" pc + +# Verify that pc is at info_start probe address. +gdb_test_multiple "info probes stap rtld" "" { + -re -wrap "init_start +0x0*$pc .*" { set using_probes 1 } -re -wrap "" {