diff options
author | Alan Modra <amodra@gmail.com> | 2002-07-19 01:10:28 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2002-07-19 01:10:28 +0000 |
commit | 40c97fc6d18713f6c97d16539555f6d6ab825c1e (patch) | |
tree | d22521a0ef733164187346360c7532f1d1d1d8ec | |
parent | 0f815cdf7e77a23380ae4a1ff43b2d24117bf3f2 (diff) | |
download | gdb-40c97fc6d18713f6c97d16539555f6d6ab825c1e.zip gdb-40c97fc6d18713f6c97d16539555f6d6ab825c1e.tar.gz gdb-40c97fc6d18713f6c97d16539555f6d6ab825c1e.tar.bz2 |
* elfxx-ia64.c: (elfNN_ia64_modify_segment_map): Properly scan
PT_IA_64_UNWIND segments for a given section.
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/elfxx-ia64.c | 18 |
2 files changed, 12 insertions, 13 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 6128b86..db137f9 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -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> diff --git a/bfd/elfxx-ia64.c b/bfd/elfxx-ia64.c index 108cdf0..b63cfb0 100644 --- a/bfd/elfxx-ia64.c +++ b/bfd/elfxx-ia64.c @@ -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; } |