From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id CulnKG7OoGK+sAAAWB0awg (envelope-from ) for ; Wed, 08 Jun 2022 12:29:34 -0400 Received: by simark.ca (Postfix, from userid 112) id 93E971E223; Wed, 8 Jun 2022 12:29:34 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=eZ43FeaC; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 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 3D2DE1E220 for ; Wed, 8 Jun 2022 12:29:33 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CD7093850201 for ; Wed, 8 Jun 2022 16:29:32 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CD7093850201 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1654705772; bh=LjP5CT4iJb5tTRoIFZAEprkz7wRw47xfClh3CazoWdA=; h=Subject:To:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=eZ43FeaCy1aMrmCaXDVhz1twRyT42YteuDcCVl5dgDFzduXWamsvqpr/wXh964CCv La3hmMHEfavbnxBMJcfX7su+9NoCV7Gp1lm0mQkgssdvM2HaRZVExeqYTyuQCRk1Cd fiNysMSmRtjFm2yyB93jo41p3NuBjk6OmO4STwf0= Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id 5254D3850214 for ; Wed, 8 Jun 2022 16:29:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5254D3850214 Received: from pps.filterd (m0127361.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 258EqLTO021345; Wed, 8 Jun 2022 16:29:11 GMT Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3gjwwrj52a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 08 Jun 2022 16:29:11 +0000 Received: from m0127361.ppops.net (m0127361.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 258FNkx1021136; Wed, 8 Jun 2022 16:29:11 GMT Received: from ppma02dal.us.ibm.com (a.bd.3ea9.ip4.static.sl-reverse.com [169.62.189.10]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3gjwwrj520-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 08 Jun 2022 16:29:11 +0000 Received: from pps.filterd (ppma02dal.us.ibm.com [127.0.0.1]) by ppma02dal.us.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 258GLQBJ020923; Wed, 8 Jun 2022 16:29:10 GMT Received: from b01cxnp23034.gho.pok.ibm.com (b01cxnp23034.gho.pok.ibm.com [9.57.198.29]) by ppma02dal.us.ibm.com with ESMTP id 3gfy1aufqf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 08 Jun 2022 16:29:10 +0000 Received: from b01ledav001.gho.pok.ibm.com (b01ledav001.gho.pok.ibm.com [9.57.199.106]) by b01cxnp23034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 258GT9oq18153804 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 8 Jun 2022 16:29:09 GMT Received: from b01ledav001.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 74BAA28059; Wed, 8 Jun 2022 16:29:09 +0000 (GMT) Received: from b01ledav001.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id F2BD928058; Wed, 8 Jun 2022 16:29:08 +0000 (GMT) Received: from lexx (unknown [9.160.81.62]) by b01ledav001.gho.pok.ibm.com (Postfix) with ESMTP; Wed, 8 Jun 2022 16:29:08 +0000 (GMT) Message-ID: Subject: Re: [PATCH V5] PowerPC: fix for gdb.base/eh_return.exp To: Carl Love , Pedro Alves , Kevin Buettner , gdb-patches@sourceware.org Date: Wed, 08 Jun 2022 11:29:08 -0500 In-Reply-To: <794264a1beb2c2da19dc2c0d72ea9c9e5406abae.camel@us.ibm.com> References: <76bea9ad010a71ea5e2c7fd78f818bdb399810a6.camel@us.ibm.com> <20220506110826.5e16c8b6@f35-zws-1> <70a877cc-2f35-3924-6717-9d519c2730c5@palves.net> <099c8f8d8729a0051f83a034d62c18f03c789167.camel@vnet.ibm.com> <37d2a4b6a57b62662f0417f123bda6ba48066554.camel@vnet.ibm.com> <998d3f4859f16b73afd5103b682246643fef6d42.camel@us.ibm.com> <8ee42814763cc0e245c93f62c40cdaaad3ac65b2.camel@us.ibm.com> <6d82b4b8f30815f5dd98c001a8fe25632eb14a5a.camel@vnet.ibm.com> <356aac133a99cf293d7f4673412224d29b4a53be.camel@us.ibm.com> <794264a1beb2c2da19dc2c0d72ea9c9e5406abae.camel@us.ibm.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.5 (3.28.5-18.el8) Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 X-Proofpoint-GUID: RlXyYpBnfvZwcKS6WTafIGL0qmYPIQfx X-Proofpoint-ORIG-GUID: OyaHEYIu4vzHbuKC7pVfUIdZd2ZQcuIg X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.874,Hydra:6.0.517,FMLib:17.11.64.514 definitions=2022-06-08_05,2022-06-07_02,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 mlxlogscore=999 adultscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 mlxscore=0 lowpriorityscore=0 clxscore=1015 spamscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2206080066 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: , From: will schmidt via Gdb-patches Reply-To: will schmidt Cc: Ulrich Weigand Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" On Wed, 2022-06-08 at 08:36 -0700, Carl Love wrote: > Will, Pedro, Kevin, GDB maintainers: > > Oops, accidentally hit send. Didn't get the patch attached yet. > > I have made the additional fixes to the comments and the setting of the > clang options as mentioned by Will in version 4. I do not have an > environment where gdb can be built with clang. But I did check that > the clang options are properly passed to the compile command. > Unfortunately, extensive testing of gdb built with XLC and clang are > beyond the scope of this patch as I do not have access to such systems. > > Per the comments from Kevin, the patch was updated to check for the gcc > and xlc compilers on PowerPC. The patch was also tested and verified > on AIX which uses the gcc compiler to build gdb. The attempt to build > gdb using the xlc compiler fails due to unrelated compiler errors. The > xlc options to disable the Traceback Table was verified but that was > it. > > I have updated the patch per the comments from Will. The new version > of the patch uses a PowerPC specific gcc option to suppress the > generation of the Traceback Table information. The Traceback > information for this function is contained in the .long statements > following the last instruction in the function. The Traceback table > consists of a series of bit fields. The assembler tries to interpret > the Traceback Table as instructions. If the bits in the Traceback > Table happen to match a known instruction, the assembler will print a > bogus instruction, otherwise the assembler just prints the bits using > the .long statement. Unfortunately, the disassembler does not know how > to locate the Traceback Table information at the end of a function. > > With this patch, the Traceback Table is disabled, so the last > instruction of the function is accurately found. Previously, the break > point was set at the last .long statement which gdb will never reach. > The test now passes as gdb successfully executes to the identified last > instruction. > > Note, the use of the gcc mtraceback option is not valid on other > architectures. > > I have tested the patch on Linux Power 10 with gcc, AIX with the gcc > and Intel with gcc. > > Please let me know if this patch is acceptable. Thanks for the input > and help with the patch. > > Carl Love > > ------------------------------------------------------------------ > > PowerPC: fix for gdb.base/eh_return.exp > > Disable the Traceback Table generation on PowerPC for this test. The > Traceback Table consists of a series of bit fields to indicate things like > the Traceback Table version, language, and specific information about the > function. The Traceback Table is generated following the end of the code > for every function by default. The Traceback Table is defined in the > PowerPC ELF ABI and is intended to support debuggers and exception > handlers. The Traceback Table is displayed in the disassembly of functions > by default and is part of the function length. The table is typically > interpreted by the disassembler as data represented by .long xxx entries. > > Generation of the Traceback Table is disabled in this test using the > PowerPC specific gcc compiler option -mtraceback=no, the xlc option > additional_flags-qtable=none and the clang optons > -mllvm -xcoff-traceback-table=false. Disabling the Traceback Table > generation in this test results in the gdb_test_multiple statement > correctly locating the address of the bclr instruction before the statement > "End of assembler dump." in the disassembly output. > --- > gdb/testsuite/gdb.base/eh_return.exp | 36 +++++++++++++++++++++++++++- > 1 file changed, 35 insertions(+), 1 deletion(-) > > diff --git a/gdb/testsuite/gdb.base/eh_return.exp b/gdb/testsuite/gdb.base/eh_return.exp > index df55dbc72da..6e4b9bd0bba 100644 > --- a/gdb/testsuite/gdb.base/eh_return.exp > +++ b/gdb/testsuite/gdb.base/eh_return.exp > @@ -18,8 +18,42 @@ > > standard_testfile > > +# Set compiler flags. > +if {[istarget "powerpc*"]} then { > + # PowerPC generates a Traceback Table, as defined in the PPC64 ABI, > + # following each function by default. The Traceback Table information is > + # typically interpreted by the disassembler as data represented with > + # .long xxxx following the last instruction in the function. For example: > + # > + # Dump of assembler code for function eh2: > + # 0x00000000100009e0 <+0>: lis r2,4098 > + # ... > + # 0x0000000010000b04 <+292>: add r1,r1,r10 > + # 0x0000000010000b08 <+296>: blr > + # 0x0000000010000b0c <+300>: .long 0x0 > + # 0x0000000010000b10 <+304>: .long 0x1000000 > + # 0x0000000010000b14 <+308>: .long 0x1000180 > + # End of assembler dump. > + # > + # Disable the Traceback Table generation, using the PowerPC specific > + # compiler option, so the test gdb_test_multiple "disassemble eh2" will > + # locate the address of the blr instruction not the last .long statement. > + if { [test_compiler_info "gcc-*"] } { > + set compile_flags {debug nopie additional_flags=-mtraceback=no} > + } elseif { [test_compiler_info "xlc-*"] } { > + set compile_flags {debug nopie additional_flags=-qtbtable=none} > + } elseif { [test_compiler_info "clang-*"] } { > + set compile_flags [list debug nopie additional_flags=-mllvm \ > + additional_flags=-xcoff-traceback-table=false] > + } else { > + set compile_flags {debug nopie } > + } > +} else { > + set compile_flags {debug nopie} > +} > + > if {[prepare_for_testing "failed to prepare" $testfile $srcfile \ > - {debug nopie}]} { > + $compile_flags]} { > return -1 > } This looks good to me. Thanks for the multiple iterations and updates. I am not an approver but I recommend approval. :-) Thanks -Will >