gas: sframe: warn when skipping SFrame FDE generation

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.
This commit is contained in:
Indu Bhagat
2024-01-12 00:22:12 -08:00
parent 156a2edbdb
commit 6bf40ece27
3 changed files with 23 additions and 13 deletions

View File

@@ -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;
}

View File

@@ -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
#...

View File

@@ -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
#...