[SFrame-V3] gas: sframe: add new backend hook sframe_support_flex_fde_p for FLEX FDEs

For the newly added SFrame FDE type SFRAME_FDE_TYPE_FLEX, add a new
backend hook so that the respective ABI/arch can opt out of the
generation of SFRAME_FDE_TYPE_FLEX in GAS.

AArch64 is an example of an ABI for which SFrame is supported, but one
that does not need the flexible FDE representation for any of the
current usecases currently.

Reviewed-by: Jens Remus <jremus@linux.ibm.com>

gas/
	* config/tc-aarch64.c (aarch64_support_flex_fde_p): New
	definition.
	* config/tc-aarch64.h (aarch64_support_flex_fde_p): New
	declaration.
	(sframe_support_flex_fde_p): Define.
	* config/tc-i386.c (x86_support_flex_fde_p): New definition.
	* config/tc-i386.h (x86_support_flex_fde_p): New declaration.
	(sframe_support_flex_fde_p): Define.
	* config/tc-s390.c (s390_support_flex_fde_p): New definition.
	* config/tc-s390.h (s390_support_flex_fde_p): New declaration.
	(sframe_support_flex_fde_p): Define.
This commit is contained in:
Indu Bhagat
2026-01-15 16:42:46 -08:00
parent acb66ce9d2
commit 2f9b3987db
6 changed files with 35 additions and 0 deletions

View File

@@ -9282,6 +9282,14 @@ aarch64_sframe_ra_tracking_p (void)
return true;
}
/* Whether SFrame FDE of type SFRAME_FDE_TYPE_FLEX be generated. */
bool
aarch64_support_flex_fde_p (void)
{
return false;
}
/* The fixed offset from CFA for SFrame to recover the return address.
(useful only when SFrame RA tracking is not needed). */

View File

@@ -339,6 +339,10 @@ extern offsetT aarch64_sframe_cfa_ra_offset (void);
unsigned char aarch64_sframe_get_abi_arch (void);
#define sframe_get_abi_arch aarch64_sframe_get_abi_arch
/* Whether SFrame FDE of type SFRAME_FDE_TYPE_FLEX be generated. */
extern bool aarch64_support_flex_fde_p (void);
#define sframe_support_flex_fde_p aarch64_support_flex_fde_p
#endif /* OBJ_ELF */
#define MD_PCREL_FROM_SECTION(F,S) md_pcrel_from_section(F,S)

View File

@@ -12172,6 +12172,13 @@ x86_sframe_ra_tracking_p (void)
return false;
}
/* Whether SFrame FDE of type SFRAME_FDE_TYPE_FLEX be generated. */
bool
x86_support_flex_fde_p (void)
{
return true;
}
/* The fixed offset from CFA for SFrame to recover the return address.
(useful only when SFrame RA tracking is not needed). */
offsetT

View File

@@ -478,6 +478,10 @@ extern offsetT x86_sframe_cfa_ra_offset (void);
extern unsigned char x86_sframe_get_abi_arch (void);
#define sframe_get_abi_arch x86_sframe_get_abi_arch
/* Whether SFrame FDE of type SFRAME_FDE_TYPE_FLEX be generated. */
extern bool x86_support_flex_fde_p (void);
#define sframe_support_flex_fde_p x86_support_flex_fde_p
#endif
#ifdef TE_PE

View File

@@ -2905,6 +2905,14 @@ s390_sframe_ra_tracking_p (void)
return true;
}
/* Whether SFrame FDE of type SFRAME_FDE_TYPE_FLEX be generated. */
bool
s390_support_flex_fde_p (void)
{
return false;
}
/* Specify the fixed offset to recover RA from CFA.
(useful only when RA tracking is not needed). */

View File

@@ -131,6 +131,10 @@ extern offsetT s390_sframe_cfa_ra_offset (void);
unsigned char s390_sframe_get_abi_arch (void);
#define sframe_get_abi_arch s390_sframe_get_abi_arch
/* Whether SFrame FDE of type SFRAME_FDE_TYPE_FLEX be generated. */
extern bool s390_support_flex_fde_p (void);
#define sframe_support_flex_fde_p s390_support_flex_fde_p
/* The target supports Object Attributes. */
#define TC_OBJ_ATTR 1