mirror of
https://github.com/bminor/binutils-gdb.git
synced 2026-02-05 10:31:31 +00:00
[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:
@@ -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). */
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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). */
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user