This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
ia64 modify_segment_map
- From: Alan Modra <amodra at bigpond dot net dot au>
- To: Jim Wilson <wilson at redhat dot com>
- Cc: binutils at sources dot redhat dot com
- Date: Thu, 11 Jul 2002 13:24:41 +0930
- Subject: ia64 modify_segment_map
Looks fairly obviously wrong to me to be following sec->next, but
I might be missing something. OK Jim?
bfd/ChangeLog
* elfxx-ia64.c (elfNN_ia64_modify_segment_map): Properly scan
PT_IA_64_UNWIND segments for a given section.
--
Alan Modra
IBM OzLabs - Linux Technology Centre
Index: bfd/elfxx-ia64.c
===================================================================
RCS file: /cvs/src/src/bfd/elfxx-ia64.c,v
retrieving revision 1.52
diff -u -p -r1.52 elfxx-ia64.c
--- bfd/elfxx-ia64.c 7 Jul 2002 09:10:40 -0000 1.52
+++ bfd/elfxx-ia64.c 11 Jul 2002 03:47:44 -0000
@@ -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;
}