From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id aKvXN6JZEGBoMAAAWB0awg (envelope-from ) for ; Tue, 26 Jan 2021 13:04:18 -0500 Received: by simark.ca (Postfix, from userid 112) id DCC161EF84; Tue, 26 Jan 2021 13:04:18 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=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 BB4731E945 for ; Tue, 26 Jan 2021 13:04:17 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 819F838708FF; Tue, 26 Jan 2021 18:04:17 +0000 (GMT) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by sourceware.org (Postfix) with ESMTPS id 67D603857012 for ; Tue, 26 Jan 2021 18:04:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 67D603857012 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tdevries@suse.de X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 8D3C5ACC6 for ; Tue, 26 Jan 2021 18:04:14 +0000 (UTC) Date: Tue, 26 Jan 2021 19:04:12 +0100 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH][gdb/testsuite] Fix gdb.arch/i386-gnu-cfi.exp Message-ID: <20210126180411.GA7951@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: , Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" Hi, When running test-case gdb.arch/i386-gnu-cfi.exp with target board unix/-m32, I get: ... (gdb) up 3^M 79 abort.c: No such file or directory.^M (gdb) FAIL: gdb.arch/i386-gnu-cfi.exp: shift up to the modified frame ... The preceding backtrace looks like this: ... (gdb) bt^M #0 0xf7fcf549 in __kernel_vsyscall ()^M #1 0xf7ce8896 in __libc_signal_restore_set (set=0xffffc3bc) at \ ../sysdeps/unix/sysv/linux/internal-signals.h:104^M #2 __GI_raise (sig=6) at ../sysdeps/unix/sysv/linux/raise.c:47^M #3 0xf7cd0314 in __GI_abort () at abort.c:79^M #4 0x0804919f in gate (gate=0x8049040 , data=0x0) at gate.c:3^M #5 0x08049176 in main () at i386-gnu-cfi.c:27^M ... with function gate at position #4, while on another system where the test passes, I see instead: ... (gdb) PASS: gdb.arch/i386-gnu-cfi.exp: continue to abort() backtrace^M (gdb) PASS: gdb.arch/i386-gnu-cfi.exp: backtrace ... function gate at position #3. Fix this by capturing the position of function gate in the backtrace, and using that in the rest of the test instead of hardcoded constant 3. Tested on x86_64-linux. Any comments? Thanks, - Tom [gdb/testsuite] Fix gdb.arch/i386-gnu-cfi.exp gdb/testsuite/ChangeLog: 2021-01-26 Tom de Vries * gdb.arch/i386-gnu-cfi.exp: Capturing the position of function gate in the backtrace, and use that in the rest of the test instead of hardcoded constant 3. --- gdb/testsuite/gdb.arch/i386-gnu-cfi.exp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/gdb/testsuite/gdb.arch/i386-gnu-cfi.exp b/gdb/testsuite/gdb.arch/i386-gnu-cfi.exp index 4228140fc35..8f6fbb8bf44 100644 --- a/gdb/testsuite/gdb.arch/i386-gnu-cfi.exp +++ b/gdb/testsuite/gdb.arch/i386-gnu-cfi.exp @@ -60,19 +60,31 @@ gdb_test_multiple {} "continue to abort()" { # Backtrace would crash before. -gdb_test "bt" \ - "main \\(\\) at .*${testfile}.c.*" \ - "backtrace" +set gate_n "" +set backtrace_re \ + [multi_line \ + "" \ + "#($decimal) *$hex in gate \[^\r\n\]*" \ + "#$decimal *$hex in main \\(\\) at .*${testfile}.c.*"] +gdb_test_multiple "backtrace" "" { + -re -wrap $backtrace_re { + set gate_n $expect_out(1,string) + pass $gdb_test_name + } +} +if { $gate_n == "" } { + return -1 +} # Check we see the inserted `DW_CFA_GNU_negative_offset_extended' CFI. # We see there the original CFI-stored filename `gate.c'. -gdb_test "up 3" \ +gdb_test "up $gate_n" \ "gate \\(\[^()\]*\\) at .*gate.c.*" \ "shift up to the modified frame" gdb_test_multiple "info frame" "existence of the CFI inserted register" { - -re "Stack level 3, frame at (0x\[0-9a-f\]+):.*Saved registers:.* ecx at (0x\[0-9a-f\]+),.*" { + -re "Stack level $gate_n, frame at (0x\[0-9a-f\]+):.*Saved registers:.* ecx at (0x\[0-9a-f\]+),.*" { pass "existence of the CFI inserted register" if { [string compare $expect_out(1,string) $expect_out(2,string)] } then { fail "value of the CFI inserted register"