From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19377 invoked by alias); 3 Feb 2013 17:27:40 -0000 Received: (qmail 19352 invoked by uid 22791); 3 Feb 2013 17:27:39 -0000 X-SWARE-Spam-Status: No, hits=-6.2 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_SPAMHAUS_DROP,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,RP_MATCHES_RCVD,SPF_HELO_PASS,TW_OC X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 03 Feb 2013 17:27:30 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r13HRSUa006123 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sun, 3 Feb 2013 12:27:28 -0500 Received: from host2.jankratochvil.net ([10.3.113.16]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r13HRMtc015846 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Sun, 3 Feb 2013 12:27:24 -0500 Date: Sun, 03 Feb 2013 17:27:00 -0000 From: Jan Kratochvil To: gdb-patches@sourceware.org Subject: Re: [RFC patch] testsuite: Workaround issues with GCC 4.8.0pre + gdb.trace new KFAIL Message-ID: <20130203172721.GA8611@host2.jankratochvil.net> References: <20130126202645.GA4888@host2.jankratochvil.net> <5106D7E1.1060705@codesourcery.com> <20130129174955.GA17823@host2.jankratochvil.net> <20130202092240.GA24458@host2.jankratochvil.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20130202092240.GA24458@host2.jankratochvil.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes 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 X-SW-Source: 2013-02/txt/msg00069.txt.bz2 It was sent to gcc-patches before by a mistake. On Sat, 02 Feb 2013 10:22:40 +0100, Jan Kratochvil wrote: Hi, just forgot also about gdb.trace/unavailable.exp, equivalent to previous gdb.trace/collection.exp workarounds. Jan gdb/testsuite/ 2013-02-02 Jan Kratochvil Workaround GCC PR debug/55056 and GDB PR server/15081. * gdb.base/restore.c (caller3): Protect l1 by GCC_PR_55056 #ifdef. (caller4): Protect l1 and l2 by GCC_PR_55056 #ifdef. (caller5): Protect l1, l2 and l3 by GCC_PR_55056 #ifdef. * gdb.base/restore.exp: New variable opts. Test caller3, caller4 and caller5 for l1, l2 and l3. New prepare_for_testing. * gdb.base/store.c (wack_longest, wack_float, wack_double) (wack_doublest): Protect l and r by GCC_PR_55056 #ifdef. * gdb.base/store.exp: New variable opts. Test longest, float, double and doublest functions for l and r. New prepare_for_testing. * gdb.trace/collection.c (reglocal_test_func): Protect locf and locd by GCC_PR_55056 #ifdef. Protect locar by GDB_PR_15081 #ifdef. * gdb.trace/unavailable.c: Likewise. * gdb.trace/collection.exp: New variable opts. Test reglocal_test_func for locf, locd and locar. New prepare_for_testing. (gdb_collect_locals_test): Increase list size to 43. * gdb.trace/unavailable.exp: Likewise. diff --git a/gdb/testsuite/gdb.base/restore.c b/gdb/testsuite/gdb.base/restore.c index 526be5f..a9b6d28 100644 --- a/gdb/testsuite/gdb.base/restore.c +++ b/gdb/testsuite/gdb.base/restore.c @@ -206,6 +206,10 @@ caller2 (void) int caller3 (void) { + /* volatile is a GCC PR debug/55056 workaround. */ +#ifdef GCC_PR_55056 + volatile +#endif register int l1 = increment (0x7eeb); /* caller3 prologue */ register int l2 = increment (l1); register int l3 = increment (l2); @@ -222,7 +226,15 @@ caller3 (void) int caller4 (void) { + /* volatile is a GCC PR debug/55056 workaround. */ +#ifdef GCC_PR_55056 + volatile +#endif register int l1 = increment (0x7eeb); /* caller4 prologue */ + /* volatile is a GCC PR debug/55056 workaround. */ +#ifdef GCC_PR_55056 + volatile +#endif register int l2 = increment (l1); register int l3 = increment (l2); register int l4 = increment (l3); @@ -239,8 +251,20 @@ caller4 (void) int caller5 (void) { + /* volatile is a GCC PR debug/55056 workaround. */ +#ifdef GCC_PR_55056 + volatile +#endif register int l1 = increment (0x7eeb); /* caller5 prologue */ + /* volatile is a GCC PR debug/55056 workaround. */ +#ifdef GCC_PR_55056 + volatile +#endif register int l2 = increment (l1); + /* volatile is a GCC PR debug/55056 workaround. */ +#ifdef GCC_PR_55056 + volatile +#endif register int l3 = increment (l2); register int l4 = increment (l3); register int l5 = increment (l4); diff --git a/gdb/testsuite/gdb.base/restore.exp b/gdb/testsuite/gdb.base/restore.exp index dbe01dc..a7fa91b 100644 --- a/gdb/testsuite/gdb.base/restore.exp +++ b/gdb/testsuite/gdb.base/restore.exp @@ -24,7 +24,37 @@ standard_testfile set executable $testfile -if { [prepare_for_testing $testfile.exp $executable $srcfile] } { +set opts {debug} + +if { [prepare_for_testing $testfile.exp $executable $srcfile $opts] } { + return -1 +} + +if {![runto_main]} { + return -1 +} + +foreach caller { caller3 caller4 caller5 } { with_test_prefix $caller { + gdb_breakpoint $caller + gdb_continue_to_breakpoint $caller + + foreach l { l1 l2 l3 } { with_test_prefix $l { + set test "info addr $l" + gdb_test_multiple $test $test { + -re "\r\nSymbol \"$l\" is optimized out\\.\r\n$gdb_prompt $" { + lappend opts additional_flags=-DGCC_PR_55056 + xfail "$test (register variable has no location)" + } + -re "\r\nSymbol \"$l\" is .*\r\n$gdb_prompt $" { + pass $test + } + } + }} +}} + +set executable ${testfile}opts + +if { [prepare_for_testing $testfile.exp $executable $srcfile $opts] } { return -1 } diff --git a/gdb/testsuite/gdb.base/store.c b/gdb/testsuite/gdb.base/store.c index 545515d..3ac4a1a 100644 --- a/gdb/testsuite/gdb.base/store.c +++ b/gdb/testsuite/gdb.base/store.c @@ -98,6 +98,10 @@ wack_long (register long u, register long v) long wack_longest (register longest u, register longest v) { + /* volatile is a GCC PR debug/55056 workaround. */ +#ifdef GCC_PR_55056 + volatile +#endif register longest l = u, r = v; l = add_longest (l, r); return l + r; @@ -106,6 +110,10 @@ wack_longest (register longest u, register longest v) float wack_float (register float u, register float v) { + /* volatile is a GCC PR debug/55056 workaround. */ +#ifdef GCC_PR_55056 + volatile +#endif register float l = u, r = v; l = add_float (l, r); return l + r; @@ -114,6 +122,10 @@ wack_float (register float u, register float v) double wack_double (register double u, register double v) { + /* volatile is a GCC PR debug/55056 workaround. */ +#ifdef GCC_PR_55056 + volatile +#endif register double l = u, r = v; l = add_double (l, r); return l + r; @@ -122,6 +134,10 @@ wack_double (register double u, register double v) doublest wack_doublest (register doublest u, register doublest v) { + /* volatile is a GCC PR debug/55056 workaround. */ +#ifdef GCC_PR_55056 + volatile +#endif register doublest l = u, r = v; l = add_doublest (l, r); return l + r; diff --git a/gdb/testsuite/gdb.base/store.exp b/gdb/testsuite/gdb.base/store.exp index 292a319..e977f5e 100644 --- a/gdb/testsuite/gdb.base/store.exp +++ b/gdb/testsuite/gdb.base/store.exp @@ -18,7 +18,37 @@ standard_testfile set executable $testfile -if { [prepare_for_testing $testfile.exp $executable $srcfile] } { +set opts {debug} + +if { [prepare_for_testing $testfile.exp $executable $srcfile $opts] } { + return -1 +} + +if {![runto_main]} { + return -1 +} + +foreach func { longest float double doublest } { with_test_prefix $func { + gdb_breakpoint wack_$func + gdb_continue_to_breakpoint wack_$func + + foreach var { l r } { with_test_prefix $var { + set test "info addr $var" + gdb_test_multiple $test $test { + -re "\r\nSymbol \"$var\" is optimized out\\.\r\n$gdb_prompt $" { + lappend opts additional_flags=-DGCC_PR_55056 + xfail "$test (register variable has no location)" + } + -re "\r\nSymbol \"$var\" is .*\r\n$gdb_prompt $" { + pass $test + } + } + }} +}} + +set executable ${testfile}opts + +if { [prepare_for_testing $testfile.exp $executable $srcfile $opts] } { return -1 } diff --git a/gdb/testsuite/gdb.trace/collection.c b/gdb/testsuite/gdb.trace/collection.c index 3eac221..6e7bee5 100644 --- a/gdb/testsuite/gdb.trace/collection.c +++ b/gdb/testsuite/gdb.trace/collection.c @@ -124,10 +124,23 @@ int reglocal_test_func () /* test collecting register locals */ { register char locc = 11; register int loci = 12; + /* volatile is a GCC PR debug/55056 workaround. */ +#ifdef GCC_PR_55056 + volatile +#endif register float locf = 13.3; + /* volatile is a GCC PR debug/55056 workaround. */ +#ifdef GCC_PR_55056 + volatile +#endif register double locd = 14.4; register test_struct locst; - register int locar[4]; + /* The "register" removal is a GDB PR server/15081 workaround as it cannot + handle DW_OP_piece variables occupying more than 64 bits on gcc-4.8.0. */ +#ifndef GDB_PR_15081 + register +#endif + int locar[4]; int i; locst.memberc = 15; diff --git a/gdb/testsuite/gdb.trace/collection.exp b/gdb/testsuite/gdb.trace/collection.exp index ed7149d..e1526e6 100644 --- a/gdb/testsuite/gdb.trace/collection.exp +++ b/gdb/testsuite/gdb.trace/collection.exp @@ -19,7 +19,43 @@ load_lib "trace-support.exp" standard_testfile set executable $testfile -if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug nowarnings}]} { +set opts {debug nowarnings} + +if {[prepare_for_testing $testfile.exp $executable $srcfile $opts]} { + return -1 +} + +if {![runto reglocal_test_func]} { + return -1 +} + +foreach var { locf locd } { with_test_prefix $var { + set test "info addr $var" + gdb_test_multiple $test $test { + -re "\r\nSymbol \"$var\" is optimized out\\.\r\n$gdb_prompt $" { + lappend opts additional_flags=-DGCC_PR_55056 + xfail "$test (register variable has no location)" + } + -re "\r\nSymbol \"$var\" is .*\r\n$gdb_prompt $" { + pass $test + } + } +}} + +set test "info addr locar" +gdb_test_multiple $test $test { + -re "\r\nSymbol \"locar\" is a variable \[^\r\n\]*\\\[8-byte piece\\\]\[^\r\n\]*\\\[8-byte piece\\\]\[^\r\n\]*\\.\r\n$gdb_prompt $" { + lappend opts additional_flags=-DGDB_PR_15081 + kfail gdb/15081 "$test (GDB cannot handle >64-bit trace data))" + } + -re "\r\nSymbol \"locar\" is .*\r\n$gdb_prompt $" { + pass $test + } +} + +set executable ${testfile}opts + +if {[prepare_for_testing $testfile.exp $executable $srcfile $opts]} { return -1 } @@ -284,7 +320,7 @@ proc gdb_collect_locals_test { func mylocs msg } { # Find the comment-identified line for setting this tracepoint. set testline 0 - gdb_test_multiple "list $func, +30" "collect $msg: find tracepoint line" { + gdb_test_multiple "list $func, +43" "collect $msg: find tracepoint line" { -re "\[\r\n\](\[0-9\]+)\[^\r\n\]+ Set_Tracepoint_Here .*$gdb_prompt" { set testline $expect_out(1,string) pass "collect $msg: find tracepoint line" diff --git a/gdb/testsuite/gdb.trace/unavailable.cc b/gdb/testsuite/gdb.trace/unavailable.cc index 77fa01d..7cf1641 100644 --- a/gdb/testsuite/gdb.trace/unavailable.cc +++ b/gdb/testsuite/gdb.trace/unavailable.cc @@ -238,10 +238,23 @@ reglocal_test_func () { register char locc = 11; register int loci = 12; + /* volatile is a GCC PR debug/55056 workaround. */ +#ifdef GCC_PR_55056 + volatile +#endif register float locf = 13.3; + /* volatile is a GCC PR debug/55056 workaround. */ +#ifdef GCC_PR_55056 + volatile +#endif register double locd = 14.4; register test_struct locst; - register int locar[4]; + /* The "register" removal is a GDB PR server/15081 workaround as it cannot + handle DW_OP_piece variables occupying more than 64 bits on gcc-4.8.0. */ +#ifndef GDB_PR_15081 + register +#endif + int locar[4]; int i; locst.memberc = 15; diff --git a/gdb/testsuite/gdb.trace/unavailable.exp b/gdb/testsuite/gdb.trace/unavailable.exp index b776dd3..02a9bc8 100644 --- a/gdb/testsuite/gdb.trace/unavailable.exp +++ b/gdb/testsuite/gdb.trace/unavailable.exp @@ -17,9 +17,43 @@ load_lib "trace-support.exp" standard_testfile unavailable.cc set executable $testfile +set opts {debug nowarnings c++} -if {[prepare_for_testing $testfile.exp $testfile $srcfile \ - {debug nowarnings c++}]} { +if {[prepare_for_testing $testfile.exp $executable $srcfile $opts]} { + return -1 +} + +if {![runto reglocal_test_func]} { + return -1 +} + +foreach var { locf locd } { with_test_prefix $var { + set test "info addr $var" + gdb_test_multiple $test $test { + -re "\r\nSymbol \"$var\" is optimized out\\.\r\n$gdb_prompt $" { + lappend opts additional_flags=-DGCC_PR_55056 + xfail "$test (register variable has no location)" + } + -re "\r\nSymbol \"$var\" is .*\r\n$gdb_prompt $" { + pass $test + } + } +}} + +set test "info addr locar" +gdb_test_multiple $test $test { + -re "\r\nSymbol \"locar\" is a variable \[^\r\n\]*\\\[8-byte piece\\\]\[^\r\n\]*\\\[8-byte piece\\\]\[^\r\n\]*\\.\r\n$gdb_prompt $" { + lappend opts additional_flags=-DGDB_PR_15081 + kfail gdb/15081 "$test (GDB cannot handle >64-bit trace data))" + } + -re "\r\nSymbol \"locar\" is .*\r\n$gdb_prompt $" { + pass $test + } +} + +set executable ${testfile}opts + +if {[prepare_for_testing $testfile.exp $executable $srcfile $opts]} { return -1 }