diff options
author | Bob Wilson <bob.wilson@acm.org> | 2008-05-07 23:13:09 +0000 |
---|---|---|
committer | Bob Wilson <bob.wilson@acm.org> | 2008-05-07 23:13:09 +0000 |
commit | 51c8ebc1d0399f147cf2dc5f6d2a75458fdf77f8 (patch) | |
tree | 365d0fb2ca5eca7efcae1c0244316075216e0627 | |
parent | 236369e7e776877959af5263b5e7a21bcce5e0d3 (diff) | |
download | gdb-51c8ebc1d0399f147cf2dc5f6d2a75458fdf77f8.zip gdb-51c8ebc1d0399f147cf2dc5f6d2a75458fdf77f8.tar.gz gdb-51c8ebc1d0399f147cf2dc5f6d2a75458fdf77f8.tar.bz2 |
bfd/
* elf32-xtensa.c (xtensa_property_section_name): New.
(xtensa_make_property_section): New.
(xtensa_get_property_section): Make static. Do not create a new
section if it does not exist.
gas/
* config/tc-xtensa.c (xtensa_create_property_segments): Use
xtensa_make_property_section instead of xtensa_get_property_section.
(xtensa_create_xproperty_segments): Likewise.
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/elf32-xtensa.c | 38 | ||||
-rw-r--r-- | gas/ChangeLog | 6 | ||||
-rw-r--r-- | gas/config/tc-xtensa.c | 6 |
4 files changed, 48 insertions, 9 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 0a8e250..0e1ce2c 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2008-05-07 Bob Wilson <bob.wilson@acm.org> + + * elf32-xtensa.c (xtensa_property_section_name): New. + (xtensa_make_property_section): New. + (xtensa_get_property_section): Make static. Do not create a new + section if it does not exist. + 2008-05-08 Alan Modra <amodra@bigpond.net.au> * elf32-spu.c (spu_elf_special_sections): Add "._ea". diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c index 0d744c2..a618d3b 100644 --- a/bfd/elf32-xtensa.c +++ b/bfd/elf32-xtensa.c @@ -108,7 +108,8 @@ static bfd_boolean xtensa_is_littable_section (asection *); static bfd_boolean xtensa_is_proptable_section (asection *); static int internal_reloc_compare (const void *, const void *); static int internal_reloc_matches (const void *, const void *); -extern asection *xtensa_get_property_section (asection *, const char *); +static asection *xtensa_get_property_section (asection *, const char *); +extern asection *xtensa_make_property_section (asection *, const char *); static flagword xtensa_get_property_predef_flags (asection *); /* Other functions called directly by the linker. */ @@ -9716,12 +9717,11 @@ match_section_group (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *inf) static int linkonce_len = sizeof (".gnu.linkonce.") - 1; -asection * -xtensa_get_property_section (asection *sec, const char *base_name) +static char * +xtensa_property_section_name (asection *sec, const char *base_name) { const char *suffix, *group_name; char *prop_sec_name; - asection *prop_sec; group_name = elf_group_name (sec); if (group_name) @@ -9763,10 +9763,36 @@ xtensa_get_property_section (asection *sec, const char *base_name) else prop_sec_name = strdup (base_name); + return prop_sec_name; +} + + +static asection * +xtensa_get_property_section (asection *sec, const char *base_name) +{ + char *prop_sec_name; + asection *prop_sec; + + prop_sec_name = xtensa_property_section_name (sec, base_name); + prop_sec = bfd_get_section_by_name_if (sec->owner, prop_sec_name, + match_section_group, + (void *) elf_group_name (sec)); + free (prop_sec_name); + return prop_sec; +} + + +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); prop_sec = bfd_get_section_by_name_if (sec->owner, prop_sec_name, match_section_group, - (void *) group_name); + (void *) elf_group_name (sec)); /* If not, create it. */ if (! prop_sec) { @@ -9779,7 +9805,7 @@ xtensa_get_property_section (asection *sec, const char *base_name) if (! prop_sec) return 0; - elf_group_name (prop_sec) = group_name; + elf_group_name (prop_sec) = elf_group_name (sec); } free (prop_sec_name); diff --git a/gas/ChangeLog b/gas/ChangeLog index a27a0c9..ac54660 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2008-05-07 Bob Wilson <bob.wilson@acm.org> + + * config/tc-xtensa.c (xtensa_create_property_segments): Use + xtensa_make_property_section instead of xtensa_get_property_section. + (xtensa_create_xproperty_segments): Likewise. + 2008-05-02 H.J. Lu <hongjiu.lu@intel.com> * NEWS: Mention XSAVE, EPT and MOVBE. diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c index 101c150..ace81a8 100644 --- a/gas/config/tc-xtensa.c +++ b/gas/config/tc-xtensa.c @@ -492,7 +492,7 @@ static segT cache_literal_section (bfd_boolean); /* Import from elf32-xtensa.c in BFD library. */ -extern asection *xtensa_get_property_section (asection *, const char *); +extern asection *xtensa_make_property_section (asection *, const char *); /* op_placement_info functions. */ @@ -10395,7 +10395,7 @@ xtensa_create_property_segments (frag_predicate property_function, { segment_info_type *xt_seg_info; xtensa_block_info **xt_blocks; - segT prop_sec = xtensa_get_property_section (sec, section_name_base); + segT prop_sec = xtensa_make_property_section (sec, section_name_base); prop_sec->output_section = prop_sec; subseg_set (prop_sec, 0); @@ -10497,7 +10497,7 @@ xtensa_create_xproperty_segments (frag_flags_fn flag_fn, { segment_info_type *xt_seg_info; xtensa_block_info **xt_blocks; - segT prop_sec = xtensa_get_property_section (sec, section_name_base); + segT prop_sec = xtensa_make_property_section (sec, section_name_base); prop_sec->output_section = prop_sec; subseg_set (prop_sec, 0); |