From: Indu Bhagat <indu.bhagat@oracle.com>
To: binutils@sourceware.org
Cc: Indu Bhagat <indu.bhagat@oracle.com>
Subject: [PATCH] gas: sframe: warn when skipping SFrame FDE generation
Date: Wed, 10 Jan 2024 15:11:29 -0800 [thread overview]
Message-ID: <20240110231129.831974-1-indu.bhagat@oracle.com> (raw)
Fix PR gas/31213.
gas/
PR gas/31213
* gen-sframe.c (sframe_do_cfi_insn): Add new warning.
gas/testsuite/
* gas/cfi-sframe/common-empty-1.d: Test the new warning as well.
* gas/cfi-sframe/common-empty-2.d: Likewise.
---
gas/gen-sframe.c | 34 ++++++++++++-------
gas/testsuite/gas/cfi-sframe/common-empty-1.d | 1 +
gas/testsuite/gas/cfi-sframe/common-empty-2.d | 1 +
3 files changed, 23 insertions(+), 13 deletions(-)
diff --git a/gas/gen-sframe.c b/gas/gen-sframe.c
index 3c212f3a882..75781fc8ccb 100644
--- a/gas/gen-sframe.c
+++ b/gas/gen-sframe.c
@@ -1247,25 +1247,33 @@ sframe_do_cfi_insn (struct sframe_xlate_ctx *xlate_ctx,
case DW_CFA_GNU_window_save:
err = sframe_xlate_do_gnu_window_save (xlate_ctx, cfi_insn);
break;
+ /* Other CFI opcodes are not processed at this time.
+ These do not impact the coverage of the basic stack tracing
+ information as conveyed in the SFrame format.
+ - DW_CFA_register,
+ - etc. */
+ case DW_CFA_register:
+ if (cfi_insn->u.rr.reg1 == SFRAME_CFA_SP_REG
+#ifdef SFRAME_FRE_RA_TRACKING
+ || cfi_insn->u.rr.reg1 == SFRAME_CFA_RA_REG
+#endif
+ || cfi_insn->u.rr.reg1 == SFRAME_CFA_FP_REG)
+ err = SFRAME_XLATE_ERR_NOTREPRESENTED;
+ break;
case DW_CFA_undefined:
case DW_CFA_same_value:
break;
default:
- {
- /* Other CFI opcodes are not processed at this time.
- These do not impact the coverage of the basic stack tracing
- information as conveyed in the SFrame format.
- - DW_CFA_register,
- - ...
-
- Following skipped operations do, however, impact the asynchronicity:
- - CFI_escape */
-
- err = SFRAME_XLATE_ERR_NOTREPRESENTED;
- // printf (_("SFrame Unsupported or unknown Dwarf CFI number: %#x\n"), op);
- }
+ /* Following skipped operations do, however, impact the asynchronicity:
+ - CFI_escape. */
+ err = SFRAME_XLATE_ERR_NOTREPRESENTED;
}
+ /* An error here will cause no SFrame FDE later. Warn the user because this
+ will affect the overall coverage and hence, asynchronicity. */
+ if (err)
+ as_warn (_("skipping SFrame FDE due to DWARF CFI op %#x"), op);
+
return err;
}
diff --git a/gas/testsuite/gas/cfi-sframe/common-empty-1.d b/gas/testsuite/gas/cfi-sframe/common-empty-1.d
index 141922517f0..b133b15b051 100644
--- a/gas/testsuite/gas/cfi-sframe/common-empty-1.d
+++ b/gas/testsuite/gas/cfi-sframe/common-empty-1.d
@@ -1,4 +1,5 @@
#as: --gsframe
+#warning: skipping SFrame FDE due to DWARF CFI op 0xa
#objdump: --sframe=.sframe
#name: Uninteresting cfi directives generate an empty SFrame section
#...
diff --git a/gas/testsuite/gas/cfi-sframe/common-empty-2.d b/gas/testsuite/gas/cfi-sframe/common-empty-2.d
index ab8de0b8afa..c5bc8594f1b 100644
--- a/gas/testsuite/gas/cfi-sframe/common-empty-2.d
+++ b/gas/testsuite/gas/cfi-sframe/common-empty-2.d
@@ -1,4 +1,5 @@
#as: --gsframe
+#warning: skipping SFrame FDE due to DWARF CFI op 0xe
#objdump: --sframe=.sframe
#name: SFrame supports only FP/SP based CFA
#...
--
2.41.0
next reply other threads:[~2024-01-10 23:11 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-10 23:11 Indu Bhagat [this message]
2024-01-12 8:35 ` Indu Bhagat
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240110231129.831974-1-indu.bhagat@oracle.com \
--to=indu.bhagat@oracle.com \
--cc=binutils@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).