From: H.J. Lu Date: Sun, 18 Feb 2001 22:04:08 +0000 (+0000) Subject: 2001-02-18 H.J. Lu X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ea412e04e5d92431db4b2048143535505cc33455;p=binutils-gdb.git 2001-02-18 H.J. Lu * elflink.h (elf_link_input_bfd): Ignore invalid section symbol index. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index c07c5e51d2e..945af2ad61b 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2001-02-18 H.J. Lu + + * elflink.h (elf_link_input_bfd): Ignore invalid section symbol + index. + 2001-02-18 Kazu Hirata * vms-misc.c: Fix formatting. diff --git a/bfd/elflink.h b/bfd/elflink.h index 5cbbcbbe6c9..8605c736ce6 100644 --- a/bfd/elflink.h +++ b/bfd/elflink.h @@ -5515,14 +5515,24 @@ elf_link_input_bfd (finfo, input_bfd) } } + name = NULL; if (isym->st_shndx == SHN_UNDEF) - isec = bfd_und_section_ptr; + { + isec = bfd_und_section_ptr; + name = isec->name; + } else if (isym->st_shndx > 0 && isym->st_shndx < SHN_LORESERVE) isec = section_from_elf_index (input_bfd, isym->st_shndx); else if (isym->st_shndx == SHN_ABS) - isec = bfd_abs_section_ptr; + { + isec = bfd_abs_section_ptr; + name = isec->name; + } else if (isym->st_shndx == SHN_COMMON) - isec = bfd_com_section_ptr; + { + isec = bfd_com_section_ptr; + name = isec->name; + } else { /* Who knows? */ @@ -5541,7 +5551,18 @@ elf_link_input_bfd (finfo, input_bfd) /* Save away all section symbol values. */ if (isec != NULL) - isec->symbol->value = isym->st_value; + { + if (name) + { + if (isec->symbol->value != isym->st_value) + (*_bfd_error_handler) + (_("%s: invalid section symbol index 0x%x (%s) ingored"), + bfd_get_filename (input_bfd), isym->st_shndx, + name); + continue; + } + isec->symbol->value = isym->st_value; + } /* If this is a discarded link-once section symbol, update it's value to that of the kept section symbol. The