From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id udO7AoVLuV93BwAAWB0awg (envelope-from ) for ; Sat, 21 Nov 2020 12:16:53 -0500 Received: by simark.ca (Postfix, from userid 112) id EFF7B1F08B; Sat, 21 Nov 2020 12:16:52 -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 0355F1E58D for ; Sat, 21 Nov 2020 12:16:52 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 746D73944828; Sat, 21 Nov 2020 17:16:51 +0000 (GMT) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by sourceware.org (Postfix) with ESMTPS id 5EC9F3857C5C for ; Sat, 21 Nov 2020 17:16:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 5EC9F3857C5C 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 5D942AF37; Sat, 21 Nov 2020 17:16:48 +0000 (UTC) Subject: [gdb/testsuite] Add clang xfail in gdb.base/vla-ptr.exp From: Tom de Vries To: Tom Tromey , Gary Benson via Gdb-patches References: <1605547055-25778-1-git-send-email-gbenson@redhat.com> <87mtzek5fv.fsf@tromey.com> <0a3f590c-2a76-e470-136f-e8f88aef1d17@suse.de> <3fe3ebd1-835d-b603-5cb1-254364731ec2@suse.de> Message-ID: <814b137a-2dfc-8ab7-a53d-a3ade27bfccd@suse.de> Date: Sat, 21 Nov 2020 18:16:47 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.4.0 MIME-Version: 1.0 In-Reply-To: <3fe3ebd1-835d-b603-5cb1-254364731ec2@suse.de> Content-Type: multipart/mixed; boundary="------------D8DC4FD6D205496F99FC9300" Content-Language: en-US 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" This is a multi-part message in MIME format. --------------D8DC4FD6D205496F99FC9300 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit [ was: Re: [PATCH][gdb/symtab] Fix gdb.base/vla-optimized-out.exp with clang ] On 11/20/20 4:15 PM, Tom de Vries wrote: > [ was: Re: [PATCH] KFAIL variable-length array tests which fail with Clang ] > > On 11/19/20 11:53 PM, Tom de Vries wrote: >> On 11/18/20 5:14 PM, Tom Tromey wrote: >>>>>>>> "Gary" == Gary Benson via Gdb-patches writes: >>> >>> Gary> Clang describes the upper bounds of variable length arrays using >>> Gary> a DW_AT_count attribute which references the DIE of a synthetic >>> Gary> variable whose value is specified using a DW_AT_location. In >>> Gary> some cases GDB correctly handles these, but in other cases GDB >>> Gary> adds an extra dereference causing the test to fail. This commit >>> Gary> marks these failing tests as caused by PR gdb/26905 when the >>> Gary> test executable was built using Clang. >>> >>> Shouldn't we just fix the gdb bug instead? >> >> This adhoc patch: > > Here's the complete and tested patch. > > Any comments? > Given the comments elsewhere in the thread, for now committing the trivial testsuite part of the patch. Thanks, - Tom --------------D8DC4FD6D205496F99FC9300 Content-Type: text/x-patch; charset=UTF-8; name="0001-gdb-testsuite-Add-clang-xfail-in-gdb.base-vla-ptr.exp.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename*0="0001-gdb-testsuite-Add-clang-xfail-in-gdb.base-vla-ptr.exp.p"; filename*1="atch" [gdb/testsuite] Add clang xfail in gdb.base/vla-ptr.exp When running gdb.base/vla-ptr.exp with clang-10, we run into this FAIL: ... (gdb) print td_vla^M $6 = 0x7fffffffd2b0^M (gdb) FAIL: gdb.base/vla-ptr.exp: print td_vla ... Clang 10.0.1 generates the following DWARF for td_vla. A variable DIE: ... <2><19f>: Abbrev Number: 6 (DW_TAG_variable) <1a0> DW_AT_location : 0x39 (location list) <1a4> DW_AT_name : td_vla <1aa> DW_AT_type : <0x1ae> .... with typedef type: ... <2><1ae>: Abbrev Number: 7 (DW_TAG_typedef) <1af> DW_AT_type : <0x1fc> <1b3> DW_AT_name : typedef_vla ... pointing to: ... <1><1fc>: Abbrev Number: 11 (DW_TAG_array_type) <1fd> DW_AT_type : <0x1d3> <2><201>: Abbrev Number: 14 (DW_TAG_subrange_type) <202> DW_AT_type : <0x1f5> ... The subrange type is missing the count attribute. This was filed as llvm PR48247 - "vla var with typedef'd type has incomplete debug info". Mark this as xfail. gdb/testsuite/ChangeLog: 2020-11-20 Tom de Vries * gdb.base/vla-ptr.exp: Add XFAIL. --- gdb/testsuite/gdb.base/vla-ptr.exp | 40 +++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/gdb.base/vla-ptr.exp b/gdb/testsuite/gdb.base/vla-ptr.exp index 346ff00c524..23b3383903e 100644 --- a/gdb/testsuite/gdb.base/vla-ptr.exp +++ b/gdb/testsuite/gdb.base/vla-ptr.exp @@ -14,6 +14,7 @@ # along with this program. If not, see . standard_testfile +set using_clang [test_compiler_info clang*] if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } { return -1 @@ -38,4 +39,41 @@ gdb_test "print *vla_ptr" " = 2" "print *vla_ptr (bar)" gdb_breakpoint [gdb_get_line_number "vla_func_bp"] gdb_continue_to_breakpoint "vla_func_bp" -gdb_test "print td_vla" " = \\\{4, 5, 6, 7, 8\\\}" + +gdb_test_multiple "print td_vla" "" { + -re -wrap " = \\\{4, 5, 6, 7, 8\\\}" { + pass $gdb_test_name + } + -re -wrap " = $hex" { + if { $using_clang } { + # Clang 10.0.1 fails to generate complete type info, filed as + # llvm PR48247 - "vla var with typedef'd type has incomplete + # debug info". See note below. + xfail $gdb_test_name + # Verify that despite the incomplete type info, the variable is + # there and has the right value. + gdb_test "p *td_vla@5" " = \\\{4, 5, 6, 7, 8\\\}" + } else { + fail $gdb_test_name + } + } +} + +# Clang 10.0.1 generates this DWARF for td_vla: +# +# A variable DIE: +# <2><19f>: Abbrev Number: 6 (DW_TAG_variable) +# <1a0> DW_AT_location : 0x39 (location list) +# <1a4> DW_AT_name : td_vla +# <1aa> DW_AT_type : <0x1ae> +# with type: +# <2><1ae>: Abbrev Number: 7 (DW_TAG_typedef) +# <1af> DW_AT_type : <0x1fc> +# <1b3> DW_AT_name : typedef_vla +# pointing to: +# <1><1fc>: Abbrev Number: 11 (DW_TAG_array_type) +# <1fd> DW_AT_type : <0x1d3> +# <2><201>: Abbrev Number: 14 (DW_TAG_subrange_type) +# <202> DW_AT_type : <0x1f5> +# +# The subrange type is missing the count attribute. --------------D8DC4FD6D205496F99FC9300--