From b23e50e23eee077dfbfdad40ec2d92a546fb19fe Mon Sep 17 00:00:00 2001 From: Paul Brook Date: Mon, 15 Nov 2004 12:39:01 +0000 Subject: * elflink.c (elf_link_add_object_symbols): Don't assume version indices are consecutive. --- bfd/ChangeLog | 5 +++++ bfd/elflink.c | 17 ++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 43d5e45..8c46cd6 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2004-11-15 Paul Brook + + * elflink.c (elf_link_add_object_symbols): Don't assume version + indices are consecutive. + 2004-11-14 Richard Sandiford * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Deal with diff --git a/bfd/elflink.c b/bfd/elflink.c index e5c9d9f..4f2d096 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -3518,20 +3518,23 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) if (isym->st_shndx != SHN_UNDEF) { - if (vernum > elf_tdata (abfd)->dynverdef_hdr.sh_info) + if (vernum > elf_tdata (abfd)->cverdefs) + verstr = NULL; + else if (vernum > 1) + verstr = + elf_tdata (abfd)->verdef[vernum - 1].vd_nodename; + else + verstr = ""; + + if (verstr == NULL) { (*_bfd_error_handler) (_("%B: %s: invalid version %u (max %d)"), abfd, name, vernum, - elf_tdata (abfd)->dynverdef_hdr.sh_info); + elf_tdata (abfd)->cverdefs); bfd_set_error (bfd_error_bad_value); goto error_free_vers; } - else if (vernum > 1) - verstr = - elf_tdata (abfd)->verdef[vernum - 1].vd_nodename; - else - verstr = ""; } else { -- cgit v1.1