]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gas: Warn if SFrame FDE is skipped due to non-default return column
authorJens Remus <jremus@linux.ibm.com>
Thu, 4 Jul 2024 08:34:12 +0000 (10:34 +0200)
committerJens Remus <jremus@linux.ibm.com>
Thu, 4 Jul 2024 08:34:12 +0000 (10:34 +0200)
Print a warning message if SFrame FDE is skipped due to a non-default
DWARF return column (i.e. return address (RA) register number). This
may be caused by the use of CFI directive .cfi_return_column with a
non-default return address (RA) register number in the processed
assembler source code.

  Warning: skipping SFrame FDE due to non-default DWARF return column

gas/
* gen-sframe.c: Warn if SFrame FDE is skipped due to non-default
DWARF return column.

gas/testsuite/
* gas/cfi-sframe/common-empty-3.d: Update test case to expect
for new warning message when SFrame FDE is skipped due to
a non-default DWARF return column.

Signed-off-by: Jens Remus <jremus@linux.ibm.com>
gas/gen-sframe.c
gas/testsuite/gas/cfi-sframe/common-empty-3.d

index 52c2f3f4ff89cbc0205daba82ee43e0aca343ec2..fac5b6f0fa62469b2ef69cb7c2c19cd1e0a50a4e 100644 (file)
@@ -1345,9 +1345,12 @@ sframe_do_fde (struct sframe_xlate_ctx *xlate_ctx,
 
   xlate_ctx->dw_fde = dw_fde;
 
-  /* If the return column is not RIP, SFrame format cannot represent it.  */
+  /* SFrame format cannot represent a non-default DWARF return column reg.  */
   if (xlate_ctx->dw_fde->return_column != DWARF2_DEFAULT_RETURN_COLUMN)
-    return SFRAME_XLATE_ERR_NOTREPRESENTED;
+    {
+      as_warn (_("skipping SFrame FDE due to non-default DWARF return column"));
+      return SFRAME_XLATE_ERR_NOTREPRESENTED;
+    }
 
   /* Iterate over the CFIs and create SFrame FREs.  */
   for (cfi_insn = dw_fde->data; cfi_insn; cfi_insn = cfi_insn->next)
@@ -1357,7 +1360,8 @@ sframe_do_fde (struct sframe_xlate_ctx *xlate_ctx,
       if (err != SFRAME_XLATE_OK)
        {
          /* Skip generating SFrame stack trace info for the function if any
-            offending CFI is encountered by sframe_do_cfi_insn ().  */
+            offending CFI is encountered by sframe_do_cfi_insn ().  Warning
+            message already printed by sframe_do_cfi_insn ().  */
          return err; /* Return the error code.  */
        }
     }
index 5914c620760dc00a424e68526fe5fc5a6c658694..d17521dd88eae7d4bf83a3003fdafbd03d67c99a 100644 (file)
@@ -1,4 +1,5 @@
 #as: --gsframe
+#warning: skipping SFrame FDE due to non-default DWARF return column
 #objdump: --sframe=.sframe
 #name: SFrame supports only default return column
 #...