From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id 43EFB38485A9 for ; Wed, 11 May 2022 21:52:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 43EFB38485A9 Received: from pps.filterd (m0098404.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24BL0J0Q004540; Wed, 11 May 2022 21:52:36 GMT Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3g0m521hbb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 11 May 2022 21:52:36 +0000 Received: from m0098404.ppops.net (m0098404.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 24BLqax6003991; Wed, 11 May 2022 21:52:36 GMT Received: from ppma05wdc.us.ibm.com (1b.90.2fa9.ip4.static.sl-reverse.com [169.47.144.27]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3g0m521hb4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 11 May 2022 21:52:35 +0000 Received: from pps.filterd (ppma05wdc.us.ibm.com [127.0.0.1]) by ppma05wdc.us.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 24BLhNdH016158; Wed, 11 May 2022 21:52:34 GMT Received: from b01cxnp22034.gho.pok.ibm.com (b01cxnp22034.gho.pok.ibm.com [9.57.198.24]) by ppma05wdc.us.ibm.com with ESMTP id 3fwgda73sw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 11 May 2022 21:52:34 +0000 Received: from b01ledav005.gho.pok.ibm.com (b01ledav005.gho.pok.ibm.com [9.57.199.110]) by b01cxnp22034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 24BLqYJc60948944 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 11 May 2022 21:52:34 GMT Received: from b01ledav005.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 32637AE05C; Wed, 11 May 2022 21:52:34 +0000 (GMT) Received: from b01ledav005.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7105EAE05F; Wed, 11 May 2022 21:52:33 +0000 (GMT) Received: from li-e362e14c-2378-11b2-a85c-87d605f3c641.ibm.com (unknown [9.211.152.172]) by b01ledav005.gho.pok.ibm.com (Postfix) with ESMTP; Wed, 11 May 2022 21:52:33 +0000 (GMT) Message-ID: <998d3f4859f16b73afd5103b682246643fef6d42.camel@us.ibm.com> Subject: Re: [PATCH V3] PowerPC: fix for gdb.base/eh_return.exp From: Carl Love To: will schmidt , Pedro Alves , Kevin Buettner , gdb-patches@sourceware.org Cc: Rogerio Alves , cel@us.ibm.com Date: Wed, 11 May 2022 14:52:32 -0700 In-Reply-To: <37d2a4b6a57b62662f0417f123bda6ba48066554.camel@vnet.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> 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: BFAI6CuTU3gVTtwPYzBFZ1BS_7GCsmoC X-Proofpoint-ORIG-GUID: _wqY4HsWRCUuUuB6J0HdSN3SIBwzmjca X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-05-11_07,2022-05-11_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 malwarescore=0 mlxscore=0 spamscore=0 adultscore=0 mlxlogscore=999 phishscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205110095 X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org 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: , X-List-Received-Date: Wed, 11 May 2022 21:52:42 -0000 Will, Pedro, Kevin, GDB maintainers: Sorry, resend, the first attempt was missing the mailing list. 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 existing gdb_test_multiple is able to locate the last instruction in the function correctly. 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 Power 10 and Intel. 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 in the disassembly output consists of the .long statements following the last instruction in the function. The Traceback Table is defined in the PowerPC ELF ABI and is intended to support debuggers and exception handlers. Generation of the Traceback Table is disabled in this test using the PowerPC specific gcc compiler option -mtraceback=no. 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 | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/gdb.base/eh_return.exp b/gdb/testsuite/gdb.base/eh_return.exp index df55dbc72da..13046df4040 100644 --- a/gdb/testsuite/gdb.base/eh_return.exp +++ b/gdb/testsuite/gdb.base/eh_return.exp @@ -18,8 +18,32 @@ standard_testfile +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 + # contained in the .long words output by the assembler 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 + # gcc option, so the test gdb_test_multiple "disassemble eh2" will match + # the blr instruction not the last .long statement. + set compile_flags {debug nopie additional_flags=-mtraceback=no} +} else { + set compile_flags {debug nopie} +} + if {[prepare_for_testing "failed to prepare" $testfile $srcfile \ - {debug nopie}]} { + $compile_flags]} { return -1 } -- 2.31.1