From: Jens Remus Date: Thu, 7 Mar 2024 16:01:46 +0000 (+0100) Subject: gas: Validate SFrame RA tracking and fixed RA offset X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=216dab48bf3fccaddd00fc512b95f59b4fdcf4aa;p=thirdparty%2Fbinutils-gdb.git gas: Validate SFrame RA tracking and fixed RA offset If an architecture uses SFrame return-address (RA) tracking it must specify the fixed RA offset as invalid. Otherwise, if an architecture does not use RA tracking, it must specify a valid fixed RA offset. gas/ * gen-sframe.c: Validate SFrame RA tracking and fixed RA offset. Signed-off-by: Jens Remus --- diff --git a/gas/gen-sframe.c b/gas/gen-sframe.c index 9e5532bf07f..bd03be478e1 100644 --- a/gas/gen-sframe.c +++ b/gas/gen-sframe.c @@ -1536,6 +1536,18 @@ output_sframe (segT sframe_seg) /* Setup the version specific access functions. */ sframe_set_version (SFRAME_VERSION_2); +#ifdef SFRAME_FRE_RA_TRACKING + if (sframe_ra_tracking_p ()) + /* With RA tracking the fixed RA offset must be invalid. */ + gas_assert (sframe_cfa_ra_offset () == SFRAME_CFA_FIXED_RA_INVALID); + else + /* Without RA tracking the fixed RA offset may not be invalid. */ + gas_assert (sframe_cfa_ra_offset () != SFRAME_CFA_FIXED_RA_INVALID); +#else + /* Without RA tracking the fixed RA offset may not be invalid. */ + gas_assert (sframe_cfa_ra_offset () != SFRAME_CFA_FIXED_RA_INVALID); +#endif + /* Process all fdes and create SFrame stack trace information. */ create_sframe_all ();