From 3bd72c6f17a8488ebe6394e7276c25fc0e08ffad Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Mon, 20 Feb 2006 15:02:10 +0000 Subject: * symfile.c (place_section): Correct retry logic. --- gdb/symfile.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'gdb/symfile.c') diff --git a/gdb/symfile.c b/gdb/symfile.c index e63ee53..2a35e34 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -476,6 +476,7 @@ place_section (bfd *abfd, asection *sect, void *obj) struct place_section_arg *arg = obj; CORE_ADDR *offsets = arg->offsets->offsets, start_addr; int done; + ULONGEST align = ((ULONGEST) 1) << bfd_get_section_alignment (abfd, sect); /* We are only interested in loadable sections. */ if ((bfd_get_section_flags (abfd, sect) & SEC_LOAD) == 0) @@ -486,11 +487,11 @@ place_section (bfd *abfd, asection *sect, void *obj) return; /* Otherwise, let's try to find a place for the section. */ + start_addr = (arg->lowest + align - 1) & -align; + do { asection *cur_sec; - ULONGEST align = 1 << bfd_get_section_alignment (abfd, sect); - start_addr = (arg->lowest + align - 1) & -align; done = 1; for (cur_sec = abfd->sections; cur_sec != NULL; cur_sec = cur_sec->next) @@ -524,7 +525,7 @@ place_section (bfd *abfd, asection *sect, void *obj) start_addr = offsets[indx] + bfd_get_section_size (cur_sec); start_addr = (start_addr + align - 1) & -align; done = 0; - continue; + break; } /* Otherwise, we appear to be OK. So far. */ -- cgit v1.1