diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2004-05-02 14:36:25 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2004-05-02 14:36:25 +0000 |
commit | fafe6678a56d703ba0d3bfc32ff12f99b979f339 (patch) | |
tree | 7eff8f48c45bf21a28b8b12c78358aa92d9d1255 /bfd/section.c | |
parent | eb4556d736ee14965782a320db1496fb070e54c3 (diff) | |
download | gdb-fafe6678a56d703ba0d3bfc32ff12f99b979f339.zip gdb-fafe6678a56d703ba0d3bfc32ff12f99b979f339.tar.gz gdb-fafe6678a56d703ba0d3bfc32ff12f99b979f339.tar.bz2 |
bfd/
2004-05-02 H.J. Lu <hongjiu.lu@intel.com>
* section.c (bfd_get_section_by_name_if): New.
* bfd-in2.h: Regenerated.
gas/
2004-05-02 H.J. Lu <hongjiu.lu@intel.com>
* config/obj-elf.c (get_section): Return bfd_boolean.
(obj_elf_change_section): Call bfd_get_section_by_name_if
instead of bfd_map_over_sections.
Diffstat (limited to 'bfd/section.c')
-rw-r--r-- | bfd/section.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/bfd/section.c b/bfd/section.c index 58508a2..7f5365b 100644 --- a/bfd/section.c +++ b/bfd/section.c @@ -801,6 +801,57 @@ bfd_get_section_by_name (bfd *abfd, const char *name) /* FUNCTION + bfd_get_section_by_name_if + +SYNOPSIS + asection *bfd_get_section_by_name_if + (bfd *abfd, + const char *name, + bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj), + void *obj); + +DESCRIPTION + Call the provided function @var{func} for each section + attached to the BFD @var{abfd} whose name matches @var{name}, + passing @var{obj} as an argument. The function will be called + as if by + +| func (abfd, the_section, obj); + + It returns the first section for which @var{func} returns true, + otherwise <<NULL>>. + +*/ + +asection * +bfd_get_section_by_name_if (bfd *abfd, const char *name, + bfd_boolean (*operation) (bfd *, + asection *, + void *), + void *user_storage) +{ + struct section_hash_entry *sh; + unsigned long hash; + + sh = section_hash_lookup (&abfd->section_htab, name, FALSE, FALSE); + if (sh == NULL) + return NULL; + + hash = sh->root.hash; + do + { + if ((*operation) (abfd, &sh->section, user_storage)) + return &sh->section; + sh = (struct section_hash_entry *) sh->root.next; + } + while (sh != NULL && sh->root.hash == hash + && strcmp (sh->root.string, name) == 0); + + return NULL; +} + +/* +FUNCTION bfd_get_unique_section_name SYNOPSIS |