diff options
author | H.J. Lu <hjl@lucon.org> | 2001-02-18 22:04:08 +0000 |
---|---|---|
committer | H.J. Lu <hjl@lucon.org> | 2001-02-18 22:04:08 +0000 |
commit | ffff4020a5ffbac1c3d71ec8de2b132f54d97bd5 (patch) | |
tree | 2421cf527f85e34bb83936c5694046f435cac092 /bfd | |
parent | 2beeb720b8897b8de2b040cf67e255c38b6c4370 (diff) | |
download | gdb-ffff4020a5ffbac1c3d71ec8de2b132f54d97bd5.tar.gz |
2001-02-18 H.J. Lu <hjl@gnu.org>
* elflink.h (elf_link_input_bfd): Ignore invalid section symbol
index.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elflink.h | 29 |
2 files changed, 30 insertions, 4 deletions
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 <hjl@gnu.org> + + * elflink.h (elf_link_input_bfd): Ignore invalid section symbol + index. + 2001-02-18 Kazu Hirata <kazu@hxi.com> * 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 |