[binutils-gdb] xtensa: move xtensa_make_property_section from bfd to gas

Alan Modra amodra@sourceware.org
Sat Feb 24 04:29:41 GMT 2024


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

commit bc45bfd25984a709dec4236daf412c58a127633a
Author: Alan Modra <amodra@gmail.com>
Date:   Sat Feb 24 11:30:02 2024 +1030

    xtensa: move xtensa_make_property_section from bfd to gas
    
    This function is only used by gas, so move it there.  Necessary for
    gas to keep track of group sections as they are created.
    
            PR 25333
    bfd/
            * elf32-xtensa.c (xtensa_make_property_section): Delete.
            (xtensa_property_section_name): Make public.
    include/
            * elf/xtensa.h (xtensa_make_property_section): Delete.
            (xtensa_property_section_name): Declare
    gas/
            * config/tc-xtensa.c (xtensa_make_property_section): New,
            moved from elf32-xtensa.c.

Diff:
---
 bfd/elf32-xtensa.c     | 34 +---------------------------------
 gas/config/tc-xtensa.c | 30 ++++++++++++++++++++++++++++++
 include/elf/xtensa.h   |  2 +-
 3 files changed, 32 insertions(+), 34 deletions(-)

diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c
index 4061341d38f..e73f96a7dcc 100644
--- a/bfd/elf32-xtensa.c
+++ b/bfd/elf32-xtensa.c
@@ -11253,7 +11253,7 @@ xtensa_add_names (const char *base, const char *suffix)
 
 static int linkonce_len = sizeof (".gnu.linkonce.") - 1;
 
-static char *
+char *
 xtensa_property_section_name (asection *sec, const char *base_name,
 			      bool separate_sections)
 {
@@ -11335,38 +11335,6 @@ xtensa_get_property_section (asection *sec, const char *base_name)
 }
 
 
-asection *
-xtensa_make_property_section (asection *sec, const char *base_name)
-{
-  char *prop_sec_name;
-  asection *prop_sec;
-
-  /* Check if the section already exists.  */
-  prop_sec_name = xtensa_property_section_name (sec, base_name,
-						elf32xtensa_separate_props);
-  prop_sec = bfd_get_section_by_name_if (sec->owner, prop_sec_name,
-					 match_section_group,
-					 (void *) elf_group_name (sec));
-  /* If not, create it.  */
-  if (! prop_sec)
-    {
-      flagword flags = (SEC_RELOC | SEC_HAS_CONTENTS | SEC_READONLY);
-      flags |= (bfd_section_flags (sec)
-		& (SEC_LINK_ONCE | SEC_LINK_DUPLICATES));
-
-      prop_sec = bfd_make_section_anyway_with_flags
-	(sec->owner, strdup (prop_sec_name), flags);
-      if (! prop_sec)
-	return 0;
-
-      elf_group_name (prop_sec) = elf_group_name (sec);
-    }
-
-  free (prop_sec_name);
-  return prop_sec;
-}
-
-
 flagword
 xtensa_get_property_predef_flags (asection *sec)
 {
diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c
index c6e6881ae68..188715d9619 100644
--- a/gas/config/tc-xtensa.c
+++ b/gas/config/tc-xtensa.c
@@ -11789,6 +11789,36 @@ get_frag_is_literal (const fragS *fragP)
   return fragP->tc_frag_data.is_literal;
 }
 
+static asection *
+xtensa_make_property_section (asection *sec, const char *base_name)
+{
+  char *prop_sec_name;
+  asection *prop_sec;
+
+  /* Check if the section already exists.  */
+  prop_sec_name = xtensa_property_section_name (sec, base_name,
+						elf32xtensa_separate_props);
+  prop_sec = bfd_get_section_by_name_if (sec->owner, prop_sec_name,
+					 match_section_group,
+					 (void *) elf_group_name (sec));
+  /* If not, create it.  */
+  if (! prop_sec)
+    {
+      flagword flags = (SEC_RELOC | SEC_HAS_CONTENTS | SEC_READONLY);
+      flags |= (bfd_section_flags (sec)
+		& (SEC_LINK_ONCE | SEC_LINK_DUPLICATES));
+
+      prop_sec = bfd_make_section_anyway_with_flags
+	(sec->owner, strdup (prop_sec_name), flags);
+      if (! prop_sec)
+	return 0;
+
+      elf_group_name (prop_sec) = elf_group_name (sec);
+    }
+
+  free (prop_sec_name);
+  return prop_sec;
+}
 
 static void
 xtensa_create_property_segments (frag_predicate property_function,
diff --git a/include/elf/xtensa.h b/include/elf/xtensa.h
index 402d9ad5465..523855e7e81 100644
--- a/include/elf/xtensa.h
+++ b/include/elf/xtensa.h
@@ -215,7 +215,7 @@ typedef struct property_table_entry_t
 
 #define XTENSA_PROP_INSN_ABSLIT        0x00020000
 
-extern asection *xtensa_make_property_section (asection *, const char *);
+extern char *xtensa_property_section_name (asection *, const char *, bool);
 extern int
 xtensa_read_table_entries (bfd *abfd,
 			   asection *section,


More information about the Binutils-cvs mailing list