mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-26 19:44:11 +08:00
gas: Validate SFrame RA tracking and fixed RA offset
Verify all architectures participating in SFrame generation do define the mandatory SFrame return address (RA) tracking predicate function sframe_ra_tracking_p. Do so by explicitly not testing for the macro SFRAME_FRE_RA_TRACKING as otherwise required. Verify that architectures not using SFrame RA tracking specify a valid fixed RA offset. gas/ * gen-sframe.c (output_sframe_internal): Validate SFrame RA tracking and fixed RA offset. Signed-off-by: Jens Remus <jremus@linux.ibm.com>
This commit is contained in:
parent
cd1fab1330
commit
68e549ee54
@ -667,12 +667,16 @@ output_sframe_internal (void)
|
||||
-fno-omit-frame-pointer is used. */
|
||||
out_one (fixed_fp_offset);
|
||||
|
||||
/* Offset for the return address from CFA is fixed for some ABIs
|
||||
(e.g., AMD64), output a SFRAME_CFA_FIXED_RA_INVALID otherwise. */
|
||||
#ifdef sframe_ra_tracking_p
|
||||
/* All ABIs participating in SFrame generation must define
|
||||
sframe_ra_tracking_p.
|
||||
When RA tracking (in FREs) is not needed (e.g., AMD64), SFrame assumes
|
||||
the RA is going to be at a fixed offset from CFA. Check that the fixed RA
|
||||
offset is appropriately defined in all cases. */
|
||||
if (!sframe_ra_tracking_p ())
|
||||
fixed_ra_offset = sframe_cfa_ra_offset ();
|
||||
#endif
|
||||
{
|
||||
fixed_ra_offset = sframe_cfa_ra_offset ();
|
||||
gas_assert (fixed_ra_offset != SFRAME_CFA_FIXED_RA_INVALID);
|
||||
}
|
||||
out_one (fixed_ra_offset);
|
||||
|
||||
/* None of the AMD64, or AARCH64 ABIs need the auxiliary header.
|
||||
|
Loading…
Reference in New Issue
Block a user