[binutils-gdb] gas: sframe: guard block with support_sframe_p

Indu Bhagat ibhagat@sourceware.org
Sat Jul 12 06:57:20 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7f8017add951c46959e54590c70cb2adcc1cede4

commit 7f8017add951c46959e54590c70cb2adcc1cede4
Author: Indu Bhagat <indu.bhagat@oracle.com>
Date:   Fri Jul 11 23:31:50 2025 -0700

    gas: sframe: guard block with support_sframe_p
    
    SFrame is generated for ELF targets only.  Guard the block with
    support_sframe_p like others for consistency.
    
    Also, in a later commit, we would like to do a:
      elf_section_type (sframe_seg) = SHT_GNU_SFRAME;
    
    This cannot be done for non-ELF targets, hence the need to guard with
    some pre-processor conditional to enable it for only OBJ_ELF.  Guarding
    with support_sframe_p works for now, because those targets that support
    SFrame define support_sframe_p:
      - x86_64 and aarch64 define support_sframe_p when OBJ_ELF is defined
      - s390x has no non-LEF target.
    
    We continue to issue an error on targets where SFrame is not supported:
        .sframe not supported for target
    
    gas/
            * dw2gencfi.c (cfi_finish): Guard with support_sframe_p.
            (support_sframe_p): Remove stub to define to false for backends
            not supporting SFrame.

Diff:
---
 gas/dw2gencfi.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/gas/dw2gencfi.c b/gas/dw2gencfi.c
index 5eb8a5d1de8..6f8d5912a36 100644
--- a/gas/dw2gencfi.c
+++ b/gas/dw2gencfi.c
@@ -91,11 +91,6 @@
 #define tc_cfi_reloc_for_encoding(e) BFD_RELOC_NONE
 #endif
 
-/* Targets which support SFrame format will define this and return true.  */
-#ifndef support_sframe_p
-# define support_sframe_p() false
-#endif
-
 /* Private segment collection list.  */
 struct dwcfi_seg_list
 {
@@ -2606,6 +2601,7 @@ cfi_finish (void)
 	- .sframe in the .cfi_sections directive.  */
   if (flag_gen_sframe || (all_cfi_sections & CFI_EMIT_sframe) != 0)
     {
+#ifdef support_sframe_p
       if (support_sframe_p () && !SUPPORT_FRAME_LINKONCE)
 	{
 	  segT sframe_seg;
@@ -2618,6 +2614,7 @@ cfi_finish (void)
 	  output_sframe (sframe_seg);
 	}
       else
+#endif
 	as_bad (_(".sframe not supported for target"));
     }


More information about the Binutils-cvs mailing list