From patchwork Tue Aug 11 17:27:34 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Arnez X-Patchwork-Id: 8136 Received: (qmail 65943 invoked by alias); 11 Aug 2015 17:27:44 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 65933 invoked by uid 89); 11 Aug 2015 17:27:44 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL, BAYES_00, KAM_LAZY_DOMAIN_SECURITY, RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: e06smtp12.uk.ibm.com Received: from e06smtp12.uk.ibm.com (HELO e06smtp12.uk.ibm.com) (195.75.94.108) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (CAMELLIA256-SHA encrypted) ESMTPS; Tue, 11 Aug 2015 17:27:42 +0000 Received: from /spool/local by e06smtp12.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 11 Aug 2015 18:27:38 +0100 Received: from d06dlp02.portsmouth.uk.ibm.com (9.149.20.14) by e06smtp12.uk.ibm.com (192.168.101.142) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 11 Aug 2015 18:27:36 +0100 X-MailFrom: arnez@linux.vnet.ibm.com X-RcptTo: gdb-patches@sourceware.org Received: from b06cxnps4076.portsmouth.uk.ibm.com (d06relay13.portsmouth.uk.ibm.com [9.149.109.198]) by d06dlp02.portsmouth.uk.ibm.com (Postfix) with ESMTP id 350FA2190056 for ; Tue, 11 Aug 2015 18:27:11 +0100 (BST) Received: from d06av09.portsmouth.uk.ibm.com (d06av09.portsmouth.uk.ibm.com [9.149.37.250]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id t7BHRZHL31981620 for ; Tue, 11 Aug 2015 17:27:36 GMT Received: from d06av09.portsmouth.uk.ibm.com (localhost [127.0.0.1]) by d06av09.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id t7BHRZp0006504 for ; Tue, 11 Aug 2015 11:27:35 -0600 Received: from br87z6lw.de.ibm.com (dyn-9-152-212-192.boeblingen.de.ibm.com [9.152.212.192]) by d06av09.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id t7BHRYMU006494 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA256 bits=256 verify=NO); Tue, 11 Aug 2015 11:27:34 -0600 From: Andreas Arnez To: gdb-patches@sourceware.org Cc: Ulrich Weigand , Yao Qi Subject: [PING][PATCH] gnu_vector.exp: Avoid some more known FAILs Date: Tue, 11 Aug 2015 19:27:34 +0200 Message-ID: <878u9hwxa1.fsf@br87z6lw.de.ibm.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15081117-0009-0000-0000-000005252C75 X-IsSubscribed: yes Ping: https://sourceware.org/ml/gdb-patches/2015-07/msg00564.html -- >8 -- Subject: [PATCH] gnu_vector.exp: Avoid some more known FAILs This avoids two more types of FAILs with the gnu_vector test case. First, for POWER targets newer GCCs emit an ABI note when invoked with "-mcpu=native". Then the test case fell back to non-native compile, producing code for a non-vector ABI. But that is not supported by GDB. Thus the compiler note is now suppressed with "-Wno-psabi". Second, on s390 the test case produced FAILs after falling back to a non-vector ABI when using "finish" or "return" in a vector-valued function. This was due to a long-standing known bug (Bug 8549). This case is now detected, and KFAILs are emitted instead. gdb/testsuite/ChangeLog: * gdb.base/gnu_vector.exp: Try compilation with "-mcpu=native -Wno-psabi" if "-mcpu=native" fails. For the tests with "finish" and "return" use KFAIL when GDB can not read/write the vector return value. --- gdb/testsuite/gdb.base/gnu_vector.exp | 57 +++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 13 deletions(-) diff --git a/gdb/testsuite/gdb.base/gnu_vector.exp b/gdb/testsuite/gdb.base/gnu_vector.exp index 173da4d..0bef3f8 100644 --- a/gdb/testsuite/gdb.base/gnu_vector.exp +++ b/gdb/testsuite/gdb.base/gnu_vector.exp @@ -25,11 +25,19 @@ standard_testfile .c # without a CPU option. If all variants fail, assume that the # compiler can not handle GNU vectors. -if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" ${binfile} executable {debug quiet additional_flags=-mcpu=native}] != "" - && [gdb_compile "${srcdir}/${subdir}/${srcfile}" ${binfile} executable {debug quiet additional_flags=-march=native}] != "" - && [gdb_compile "${srcdir}/${subdir}/${srcfile}" ${binfile} executable {debug quiet}] != ""} { - untested "compiler can't handle the vector_size attribute?" - return -1 +proc do_compile { {opts {}} } { + global srcdir subdir srcfile binfile + set ccopts {debug quiet} + foreach opt $opts {lappend ccopts "additional_flags=$opt"} + gdb_compile "${srcdir}/${subdir}/${srcfile}" "$binfile" executable $ccopts +} + +if { [do_compile {-mcpu=native}] != "" + && [do_compile {-mcpu=native -Wno-psabi}] != "" + && [do_compile {-march=native}] != "" + && [do_compile] != ""} { + untested "compiler can't handle vector_size attribute?" + return -1 } clean_restart ${binfile} @@ -195,14 +203,37 @@ gdb_test "print add_structvecs(i2, (struct just_int2)\{2*i2\}, (struct two_int2) gdb_test "print add_singlevecs((char1) \{6\}, (int1) \{12\}, (double1) \{24\})" "= \\{42\\}" \ "call add_singlevecs" -# Test vector return value handling with "finish" and "return". +# Test "finish" from vector-valued function. gdb_breakpoint "add_some_intvecs" gdb_continue "add_some_intvecs" -gdb_test "finish" "Value returned is .* = \\{10, 20, 48, 72\\}" \ - "finish shows vector return value" +set test "finish shows vector return value" +gdb_test_multiple "finish" $test { + -re "Value returned is .* = \\{10, 20, 48, 72\\}.*$gdb_prompt $" { + pass $test + } + -re "Value returned has type: .* Cannot determine contents.*$gdb_prompt $" { + kfail "gdb/8549" $test + } +} + +# Test "return" from vector-valued function. gdb_continue "add_some_intvecs" -gdb_test "return (int4) \{4, 2, 7, 6\}" \ - "#0 .* main .*" \ - "set vector return value" \ - "Make add_some_intvecs return now. .y or n.*" "y" -gdb_test "continue" "4 2 7 6\r\n.*" "verify vector return value" +set test "set vector return value" +set ok 1 +gdb_test_multiple "return (int4) \{4, 2, 7, 6\}" $test { + -re "#0 .* main .*$gdb_prompt $" { + if { $ok } { + pass $test + gdb_test "continue" "4 2 7 6\r\n.*" "verify vector return value" + } + } + -re "The location .* is unknown.\r\n.* return value .* will be ignored.\r\n" { + kfail "gdb/8549" $test + set ok 0 + exp_continue + } + -re "Make add_some_intvecs return now. .y or n. $" { + send_gdb "y\n" + exp_continue + } +}