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 236FC3858C39 for ; Fri, 12 Apr 2024 14:47:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 236FC3858C39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.ibm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 236FC3858C39 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712933257; cv=none; b=nc/VwWyIX1fDnEeLZtHKl4MV0YmR/dWAsvuRbT1c1voAGYzQhpjfoIl1DrJYCgIFJKc2mqiTFFGGjfU10TTCY3ityrZL0oscdfiQSaejsggXaZaefMHIDpz0ueXNg1LOfnR0gVPuXOm8fEWmUu4QY0E++FktTJTr3eMP7yDbQJU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712933257; c=relaxed/simple; bh=GXOBR1G4QE5Do57Ip0uYwWb+KWycAV2GRpcOdP3RSfA=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=IPoUdsnWo8u8FQHi+2a7iNWQmjy6PBoJHWm2BYMH/+8Hc74LPGVbvCVF0fmG631uNTFNogviaGfMphFDXi2fXxgYyfH4eeRWU0hY/fvdjdNs6y9yJraK5C5MqJ0vRb5smCTsrojhwZpNMNhnA7oGoYLWkBtfrRhQJi0hvOPwUi4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 43CEfUbE023377; Fri, 12 Apr 2024 14:47:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=yoO5EGztLEDamYVnzJP5byNMqM41XpfhwkRacz3qc04=; b=XRnb5CPzLP8i58v1lO4evgiRoIZkQPWaBpZ0pdvsMIBDHc3tj68Uhm+QK2Xv5Sd4l6q0 2Zb1eyhPP6gEp70NzWDzifow2pmRYdjzzQqewSwLoNaQiaZyRJHv1e930+yQGjwcN4va KibyRzM5GocWJsMdA+r2iHezHRkP4Q6a+RRdD5nv7WIG3vjO1wvZALHCbS6CyCJ0jLA1 bxka6IZKaySFeS46b1r/qltNb4Ak9gkcEnxsMtsIO7A1fLoII610Pg7dSK5DANfvMsb1 1XjcUW8ex6wDBl7qkl0HNri34v9T+5XiLlDXrAljb+aeVBF2S0GeNSzVwzZ3KnNgVPf6 Eg== Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3xf55y08sm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 12 Apr 2024 14:47:30 +0000 Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 43CD0H2n013760; Fri, 12 Apr 2024 14:47:29 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 3xbgqu2nfu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 12 Apr 2024 14:47:29 +0000 Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 43CElOHA29884898 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 12 Apr 2024 14:47:26 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4B1A420043; Fri, 12 Apr 2024 14:47:24 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2FD7420071; Fri, 12 Apr 2024 14:47:24 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Fri, 12 Apr 2024 14:47:24 +0000 (GMT) From: Jens Remus To: binutils@sourceware.org, Indu Bhagat Cc: Jens Remus , Andreas Krebbel Subject: [PATCH v3 13/15] gas: Don't skip SFrame FDE if .cfi_register specifies SP register Date: Fri, 12 Apr 2024 16:47:16 +0200 Message-Id: <20240412144718.4191286-14-jremus@linux.ibm.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240412144718.4191286-1-jremus@linux.ibm.com> References: <20240412144718.4191286-1-jremus@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-GUID: Yy6rtLJsR5G0uBoFBZaGIDH2iOSnl-77 X-Proofpoint-ORIG-GUID: Yy6rtLJsR5G0uBoFBZaGIDH2iOSnl-77 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-04-12_11,2024-04-09_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 lowpriorityscore=0 phishscore=0 mlxscore=0 malwarescore=0 spamscore=0 clxscore=1015 impostorscore=0 priorityscore=1501 mlxlogscore=999 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2404010000 definitions=main-2404120107 X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: The stack-pointer (SP) register contents on entry can be reconstructed from the CFA base register tracking information from the current SFrame FRE and initial FRE from the FDE: 1. Compute CFA from the current CFA base register (SP or FP) and CFA offset from the SFrame CFA base register tracking information from the SFrame FRE for the current instruction address: CFA = + 2. Compute SP from the current CFA and the CFA offset from the SFrame CFA tracking information from the initial SFrame FRE of the FDE: SP = CFA - While at it add a comment to the processing of .cfi_val_offset that the SP can be reconstructed from the CFA base register tracking information. gas/ * gen-sframe.c (sframe_xlate_do_register): Do not skip SFrame FDE if .cfi_register specifies SP register. (sframe_xlate_do_val_offset): Add comment that this is likewise. Signed-off-by: Jens Remus --- Notes (jremus): Changes v2 -> v3: - New patch. gas/gen-sframe.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gas/gen-sframe.c b/gas/gen-sframe.c index 61c846f214ee..12b523a8d59a 100644 --- a/gas/gen-sframe.c +++ b/gas/gen-sframe.c @@ -1136,6 +1136,7 @@ sframe_xlate_do_val_offset (struct sframe_xlate_ctx *xlate_ctx ATTRIBUTE_UNUSED, #ifdef SFRAME_FRE_RA_TRACKING || (sframe_ra_tracking_p () && cfi_insn->u.r == SFRAME_CFA_RA_REG) #endif + /* Ignore SP reg, as it can be recovered from the CFA tracking info. */ ) { as_warn (_("skipping SFrame FDE due to .cfi_val_offset specifying %s register"), @@ -1155,14 +1156,15 @@ sframe_xlate_do_register (struct sframe_xlate_ctx *xlate_ctx ATTRIBUTE_UNUSED, struct cfi_insn_data *cfi_insn) { /* Previous value of register1 is register2. However, if the specified - register1 is not interesting (SP, FP, or RA reg), the current DW_CFA_register + register1 is not interesting (FP or RA reg), the current DW_CFA_register instruction can be safely skipped without sacrificing the asynchronicity of stack trace information. */ - if (cfi_insn->u.rr.reg1 == SFRAME_CFA_SP_REG + if (cfi_insn->u.rr.reg1 == SFRAME_CFA_FP_REG #ifdef SFRAME_FRE_RA_TRACKING || (sframe_ra_tracking_p () && cfi_insn->u.rr.reg1 == SFRAME_CFA_RA_REG) #endif - || cfi_insn->u.rr.reg1 == SFRAME_CFA_FP_REG) + /* Ignore SP reg, as it can be recovered from the CFA tracking info. */ + ) { as_warn (_("skipping SFrame FDE due to .cfi_register specifying %s register"), sframe_register_name (cfi_insn->u.rr.reg1)); -- 2.40.1