2004-04-30 H.J. Lu <hongjiu.lu@intel.com>
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 30 Apr 2004 15:01:15 +0000 (15:01 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 30 Apr 2004 15:01:15 +0000 (15:01 +0000)
* section.c (bfd_sections_find_if): New.
* bfd-in2.h: Regenerated.

bfd/ChangeLog
bfd/bfd-in2.h
bfd/section.c

index 74bc2cca7a243935b72e3b72a688580f6acd0058..1a431dad143772e7d16c25916010ec86a43a42b4 100644 (file)
@@ -1,3 +1,8 @@
+2004-04-30  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * section.c (bfd_sections_find_if): New.
+       * bfd-in2.h: Regenerated.
+
 2004-04-30  Alan Modra  <amodra@bigpond.net.au>
 
        * section.c (bfd_make_section_anyway): Add all sections to hash tab.
index ed45cac8c923f325aee2901b2528a63fa5e4cd4c..5843a190693c9f923a51d60971f81270e10a22a4 100644 (file)
@@ -1450,6 +1450,11 @@ void bfd_map_over_sections
     void (*func) (bfd *abfd, asection *sect, void *obj),
     void *obj);
 
+asection *bfd_sections_find_if
+   (bfd *abfd,
+    bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
+    void *obj);
+
 bfd_boolean bfd_set_section_size
    (bfd *abfd, asection *sec, bfd_size_type val);
 
index 5ecb4a634813589982b68a002e8cb2b19cb1b9f4..0236f08756c27bc0815eaaaa4b6e594942d35e7f 100644 (file)
@@ -1094,6 +1094,41 @@ bfd_map_over_sections (bfd *abfd,
     abort ();
 }
 
+/*
+FUNCTION
+       bfd_sections_find_if
+
+SYNOPSIS
+       asection *bfd_sections_find_if
+         (bfd *abfd,
+          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}, 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.
+
+*/
+
+asection *
+bfd_sections_find_if (bfd *abfd,
+                     bfd_boolean (*operation) (bfd *, asection *, void *),
+                     void *user_storage)
+{
+  asection *sect;
+
+  for (sect = abfd->sections; sect != NULL; sect = sect->next)
+    if ((*operation) (abfd, sect, user_storage))
+      break;
+
+  return sect;
+}
+
 /*
 FUNCTION
        bfd_set_section_size