OSDN Git Service

* elfxx-ia64.c: (elfNN_ia64_modify_segment_map): Properly scan
authoramodra <amodra>
Fri, 19 Jul 2002 01:10:28 +0000 (01:10 +0000)
committeramodra <amodra>
Fri, 19 Jul 2002 01:10:28 +0000 (01:10 +0000)
PT_IA_64_UNWIND segments for a given section.

bfd/ChangeLog
bfd/elfxx-ia64.c

index 6128b86..db137f9 100644 (file)
@@ -1,3 +1,8 @@
+2002-07-19  Alan Modra  <amodra@bigpond.net.au>
+
+       * elfxx-ia64.c: (elfNN_ia64_modify_segment_map): Properly scan
+       PT_IA_64_UNWIND segments for a given section.
+
 2002-07-17  H.J. Lu <hjl@gnu.org>
 
        * Makefile.am: Fix a typo.
@@ -27,7 +32,7 @@
 
 2002-07-17  Ian Rickards  <irickard@arm.com>
 
-       * dwarf2.c (concat_filename): If we can't establish the directory 
+       * dwarf2.c (concat_filename): If we can't establish the directory
        just return the filename.
 
 2002-07-16  Moritz Jodeit  <moritz@jodeit.org>
index 108cdf0..b63cfb0 100644 (file)
@@ -1369,8 +1369,6 @@ elfNN_ia64_modify_segment_map (abfd)
   struct elf_segment_map *m, **pm;
   Elf_Internal_Shdr *hdr;
   asection *s;
-  boolean unwind_found;
-  asection *unwind_sec;
 
   /* If we need a PT_IA_64_ARCHEXT segment, it must come before
      all PT_LOAD segments.  */
@@ -1415,20 +1413,16 @@ elfNN_ia64_modify_segment_map (abfd)
          for (m = elf_tdata (abfd)->segment_map; m != NULL; m = m->next)
            if (m->p_type == PT_IA_64_UNWIND)
              {
+               int i;
+
                /* Look through all sections in the unwind segment
                   for a match since there may be multiple sections
                   to a segment.  */
+               for (i = m->count - 1; i >= 0; --i)
+                 if (m->sections[i] == s)
+                   break;
 
-               unwind_sec = m->sections[0];
-               unwind_found = false;
-               while (unwind_sec != NULL && !unwind_found)
-                 {
-                   if (unwind_sec == s)
-                     unwind_found = true;
-                   else
-                     unwind_sec = unwind_sec -> next;
-                 }
-               if (unwind_found)
+               if (i >= 0)
                  break;
              }