aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2024-02-24 11:30:02 +1030
committerAlan Modra <amodra@gmail.com>2024-02-24 14:58:55 +1030
commitbc45bfd25984a709dec4236daf412c58a127633a (patch)
treeb7924f8492641c071ec0f1f8bc3aa0cef05ed683
parent9c697157b823b052c6044f676d90a87aea6d173f (diff)
downloadgdb-bc45bfd25984a709dec4236daf412c58a127633a.zip
gdb-bc45bfd25984a709dec4236daf412c58a127633a.tar.gz
gdb-bc45bfd25984a709dec4236daf412c58a127633a.tar.bz2
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.
-rw-r--r--bfd/elf32-xtensa.c34
-rw-r--r--gas/config/tc-xtensa.c30
-rw-r--r--include/elf/xtensa.h2
3 files changed, 32 insertions, 34 deletions
diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c
index 4061341..e73f96a 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 c6e6881..188715d 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 402d9ad..523855e 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,