From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by sourceware.org (Postfix) with ESMTPS id A834D3856DD7 for ; Fri, 21 Apr 2023 14:58:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A834D3856DD7 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de 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-out2.suse.de (Postfix) with ESMTPS id D442E1FE1D for ; Fri, 21 Apr 2023 14:58:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1682089120; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pnqb+kNutJIKAtNDD9zoO5IoF+kt1G4fJDtTw3hi9Fo=; b=jVvnaG9ovjHTtv0G9hNwNamLR9ourNTL/Id2PEo7s4vupJgWGInL9eWGxhUH9cGa8/3y2S flA8FLUx97qnL7/JQd5mlmr3+uGrEIxz86ndx4z8301/2lG67NSM1xtnu02Q2IloGfodu/ jrEXA+0l8IvXaXZmatyOVNaykL1JpVA= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1682089120; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pnqb+kNutJIKAtNDD9zoO5IoF+kt1G4fJDtTw3hi9Fo=; b=qhu3jSKsD9rGmvSmb0YxnzQbk9I5HaRBzCurQYKbHtajI7nMlJGu6KjKoQDVdJyICLGTdF EU7t6/uFjy98rZAQ== 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 B35C31391A for ; Fri, 21 Apr 2023 14:58:40 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 0AJnKqCkQmTqDAAAMHmgww (envelope-from ) for ; Fri, 21 Apr 2023 14:58:40 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH 2/3] [gdb/testsuite] Fix gdb.gdb/python-helper.exp with -O2 -flto Date: Fri, 21 Apr 2023 16:58:32 +0200 Message-Id: <20230421145833.24521-3-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20230421145833.24521-1-tdevries@suse.de> References: <20230421145833.24521-1-tdevries@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On openSUSE Leap 15.4, with gcc 7.5.0, when building gdb with -O2 -g -flto=auto, I run into: ... FAIL: gdb.gdb/python-helper.exp: hit breakpoint in outer gdb FAIL: gdb.gdb/python-helper.exp: print integer from DWARF info FAIL: gdb.gdb/python-helper.exp: print *type->main_type ... Fix the first two FAILs by using $bkptno_numopt_re. The last FAIL is due to: ... (outer-gdb) print *type->main_type^M A syntax error in expression, near `->main_type'.^M (outer-gdb) FAIL: gdb.gdb/python-helper.exp: print *type->main_type ... because: ... (outer-gdb) print type^M Attempt to use a type name as an expression^M ... Fix this by making the test unresolved if "print type" or "print type->main_type" doesn't succeed. On openSUSE Tumbleweed, with gcc 13.0.1, when building gdb with -O2 -g -flto=auto, I run into timeouts due to the breakpoint in c_print_type not hitting. Fix this by detecting the situation and bailing out. Tested on x86_64-linux. --- gdb/testsuite/gdb.gdb/python-helper.exp | 77 +++++++++++++++++++------ 1 file changed, 58 insertions(+), 19 deletions(-) diff --git a/gdb/testsuite/gdb.gdb/python-helper.exp b/gdb/testsuite/gdb.gdb/python-helper.exp index a58e3b601df..a2dbeee4815 100644 --- a/gdb/testsuite/gdb.gdb/python-helper.exp +++ b/gdb/testsuite/gdb.gdb/python-helper.exp @@ -124,7 +124,9 @@ proc test_python_helper {} { # GDB, this should result in the outer GDB stopping at one of the # breakpoints we created.. send_inferior "print 1\n" - gdb_test -prompt $outer_prompt_re "" "Breakpoint $decimal, value_print.*" "hit breakpoint in outer gdb" + gdb_test -prompt $outer_prompt_re "" \ + "Breakpoint $bkptno_numopt_re, value_print.*" \ + "hit breakpoint in outer gdb" # Now inspect the type of parameter VAL, this should trigger the # pretty printers. @@ -162,8 +164,10 @@ proc test_python_helper {} { # information, this will include the TYPE_SPECIFIC_INT # information. send_inferior "print global_c.m_val\n" - gdb_test -prompt $outer_prompt_re "" "Breakpoint $decimal, value_print.*" "print integer from DWARF info" - + gdb_test -prompt $outer_prompt_re "" \ + "Breakpoint $bkptno_numopt_re, value_print.*" \ + "print integer from DWARF info" + set answer [multi_line \ "$decimal = " \ "{name = $hex \"int\"," \ @@ -187,23 +191,58 @@ proc test_python_helper {} { # Send a command to the inner GDB, this should result in the outer # GDB stopping at the value_print breakpoint again. send_inferior "ptype global_c\n" - gdb_test -prompt $outer_prompt_re "" "Breakpoint $bkptno_numopt_re, c_print_type.*" "hit breakpoint in outer gdb again" + set test "hit breakpoint in outer gdb again" + set in_outer_gdb 0 + gdb_test_multiple "" $test -prompt $outer_prompt_re { + -re -wrap "Breakpoint $bkptno_numopt_re, c_print_type.*" { + pass $gdb_test_name + set in_outer_gdb 1 + } + -re "\r\n$gdb_prompt $" { + unsupported $gdb_test_name + } + } - set answer [multi_line \ - "$decimal = " \ - "{name = $hex \"CC\"," \ - " code = TYPE_CODE_STRUCT," \ - " flags = \[^\r\n\]+," \ - " owner = $hex \\(objfile\\)," \ - " target_type = 0x0," \ - " flds_bnds\\.fields\\\[0\\\]:" \ - " {m_name = $hex \"m_val\"," \ - " m_type = $hex," \ - " m_loc_kind = FIELD_LOC_KIND_BITPOS," \ - " bitsize = 0," \ - " bitpos = 0}," \ - " cplus_stuff = $hex}"] - gdb_test -prompt $outer_prompt_re "print *type->main_type" $answer + if { ! $in_outer_gdb } { + return 0 + } + + set cmd "print *type->main_type" + set cmd_supported 1 + foreach sub_expr { type type->main_type } { + set ok 0 + gdb_test_multiple "print $sub_expr" "" -prompt $outer_prompt_re { + -re -wrap " = \\(\[^\r\n\]+ \\*\\) $hex" { + set ok 1 + } + -re -wrap "" { + } + } + if { ! $ok } { + set cmd_supported 0 + break + } + } + + if { $cmd_supported } { + set answer [multi_line \ + "$decimal = " \ + "{name = $hex \"CC\"," \ + " code = TYPE_CODE_STRUCT," \ + " flags = \[^\r\n\]+," \ + " owner = $hex \\(objfile\\)," \ + " target_type = 0x0," \ + " flds_bnds\\.fields\\\[0\\\]:" \ + " {m_name = $hex \"m_val\"," \ + " m_type = $hex," \ + " m_loc_kind = FIELD_LOC_KIND_BITPOS," \ + " bitsize = 0," \ + " bitpos = 0}," \ + " cplus_stuff = $hex}"] + gdb_test -prompt $outer_prompt_re $cmd $answer + } else { + unsupported $cmd + } # Test the htab_t pretty-printer. gdb_test -prompt $outer_prompt_re "print all_bfds" "htab_t with ${::decimal} elements = \\{${::hex}.*\\}" -- 2.35.3