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: case DW_CFA_GNU_window_save:
err = sframe_xlate_do_gnu_window_save (xlate_ctx, cfi_insn); err = sframe_xlate_do_gnu_window_save (xlate_ctx, cfi_insn);
break; break;
case DW_CFA_undefined:
case DW_CFA_same_value:
break;
default:
{
/* Other CFI opcodes are not processed at this time. /* Other CFI opcodes are not processed at this time.
These do not impact the coverage of the basic stack tracing These do not impact the coverage of the basic stack tracing
information as conveyed in the SFrame format. information as conveyed in the SFrame format.
- DW_CFA_register, - DW_CFA_register,
- ... - etc. */
case DW_CFA_register:
Following skipped operations do, however, impact the asynchronicity: if (cfi_insn->u.rr.reg1 == SFRAME_CFA_SP_REG
- CFI_escape */ #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:
/* Following skipped operations do, however, impact the asynchronicity:
- CFI_escape. */
err = SFRAME_XLATE_ERR_NOTREPRESENTED; err = SFRAME_XLATE_ERR_NOTREPRESENTED;
// printf (_("SFrame Unsupported or unknown Dwarf CFI number: %#x\n"), op);
}
} }
/* 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; return err;
} }

View File

@@ -1,4 +1,5 @@
#as: --gsframe #as: --gsframe
#warning: skipping SFrame FDE due to DWARF CFI op 0xa
#objdump: --sframe=.sframe #objdump: --sframe=.sframe
#name: Uninteresting cfi directives generate an empty SFrame section #name: Uninteresting cfi directives generate an empty SFrame section
#... #...

View File

@@ -1,4 +1,5 @@
#as: --gsframe #as: --gsframe
#warning: skipping SFrame FDE due to DWARF CFI op 0xe
#objdump: --sframe=.sframe #objdump: --sframe=.sframe
#name: SFrame supports only FP/SP based CFA #name: SFrame supports only FP/SP based CFA
#... #...