]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[SFrame-V3] gas: sframe: add new backend hook sframe_support_flex_fde_p for FLEX...
authorIndu Bhagat <indu.bhagat@oracle.com>
Fri, 16 Jan 2026 00:42:46 +0000 (16:42 -0800)
committerIndu Bhagat <indu.bhagat@oracle.com>
Fri, 16 Jan 2026 01:02:26 +0000 (17:02 -0800)
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.

gas/config/tc-aarch64.c
gas/config/tc-aarch64.h
gas/config/tc-i386.c
gas/config/tc-i386.h
gas/config/tc-s390.c
gas/config/tc-s390.h

index 7b0d5d22b0cda1a14432d3f084b139f35b151746..0460bc8aef04f8727d17cc70cb611cf3c6ed1558 100644 (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).  */
 
index dced9e42296dde3def5dab166592045222b316bc..1b7cde747ac676bb69bbe0fce256f391ee694161 100644 (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)
index b317536cc602e6bf11aeb5666da92eb6d71d2a33..98f32049ffb8122ba5351751f81957d4aa4ecf6c 100644 (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
index 4eafa8b24fa46e4b569fdfed9622c79f8e7910df..544064380df0f842e7442be31a76cfacd735e335 100644 (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
index 8f6bcfc2e84ece9694e6ea97e4ceed52e21cb235..7d7c56dc8a95bf180a7dab51ffd435b54ba03673 100644 (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).  */
 
index 347a1dcef8009c54aa7d4559d438267376f29599..1511596a330f49117bee3d43ddc9a8d451e11b06 100644 (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