diff options
-rw-r--r-- | bfd/ChangeLog | 8 | ||||
-rw-r--r-- | bfd/section.c | 6 | ||||
-rw-r--r-- | bfd/vms.c | 14 |
3 files changed, 21 insertions, 7 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 0a09617..e37b504 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2001-11-13 John Marshall <jmarshall@acm.org> + Alan Modra <amodra@bigpond.net.au> + + * section.c (bfd_make_section_anyway): Don't increment section_id + and the BFD's section_count if adding the section failed. + * vms.c (vms_new_section_hook): Adjust for bfd_make_section_anyway + change. + 2001-11-12 Orjan Friberg <orjanf@axis.com> * elf32-cris.c (cris_elf_grok_prstatus): Adjust values to match new diff --git a/bfd/section.c b/bfd/section.c index 53491f1..0d95f11 100644 --- a/bfd/section.c +++ b/bfd/section.c @@ -796,8 +796,8 @@ bfd_make_section_anyway (abfd, name) return NULL; newsect->name = name; - newsect->id = section_id++; - newsect->index = abfd->section_count++; + newsect->id = section_id; + newsect->index = abfd->section_count; newsect->flags = SEC_NO_FLAGS; newsect->userdata = NULL; @@ -831,6 +831,8 @@ bfd_make_section_anyway (abfd, name) return NULL; } + section_id++; + abfd->section_count++; *prev = newsect; return newsect; } @@ -733,19 +733,23 @@ vms_new_section_hook (abfd, section) bfd *abfd; asection *section; { + /* Count hasn't been incremented yet. */ + unsigned int section_count = abfd->section_count + 1; + #if VMS_DEBUG - vms_debug (1, "vms_new_section_hook (%p, [%d]%s), count %d\n", abfd, section->index, section->name, abfd->section_count); + vms_debug (1, "vms_new_section_hook (%p, [%d]%s), count %d\n", + abfd, section->index, section->name, section_count); #endif - bfd_set_section_alignment(abfd, section, 4); + bfd_set_section_alignment (abfd, section, 4); - if (abfd->section_count > PRIV (section_count)) + if (section_count > PRIV (section_count)) { - bfd_size_type amt = abfd->section_count; + bfd_size_type amt = section_count; amt *= sizeof (asection *); PRIV (sections) = (asection **) bfd_realloc (PRIV (sections), amt); if (PRIV (sections) == 0) return false; - PRIV (section_count) = abfd->section_count; + PRIV (section_count) = section_count; } #if VMS_DEBUG vms_debug (6, "section_count: %d\n", PRIV (section_count)); |