From da4aea843e5bab2fc29149b64256dbd166de6cc9 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Tue, 13 Nov 2001 03:52:25 +0000 Subject: [PATCH] * 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. --- bfd/ChangeLog | 8 ++++++++ bfd/section.c | 6 ++++-- bfd/vms.c | 14 +++++++++----- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 0a09617fce..e37b504a46 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2001-11-13 John Marshall + Alan Modra + + * 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 * elf32-cris.c (cris_elf_grok_prstatus): Adjust values to match new diff --git a/bfd/section.c b/bfd/section.c index 53491f1355..0d95f11783 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; } diff --git a/bfd/vms.c b/bfd/vms.c index 94fa84e044..55bcf6193c 100644 --- a/bfd/vms.c +++ b/bfd/vms.c @@ -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)); -- 2.11.0