From: Ian Lance Taylor Date: Thu, 31 Jul 1997 01:35:46 +0000 (+0000) Subject: Wed Jul 30 21:30:35 1997 Andreas Schwab X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=13eb6306e714d658344024d3e87600427517624a;p=deliverable%2Fbinutils-gdb.git Wed Jul 30 21:30:35 1997 Andreas Schwab * elflink.h (NAME(bfd_elf,record_link_assignment)): Remove any version info if this symbol came from a dynamic object. (elf_link_add_object_symbols): Set the version info of a symbol only if the object actually contains version definitions and defines this symbol. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ef22c97456..f58d4940dd 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +Wed Jul 30 21:30:35 1997 Andreas Schwab + + * elflink.h (NAME(bfd_elf,record_link_assignment)): Remove any + version info if this symbol came from a dynamic object. + (elf_link_add_object_symbols): Set the version info of a symbol + only if the object actually contains version definitions and + defines this symbol. + Mon Jul 28 18:07:43 1997 Rob Savoye * aclocal.m4: Add CYGWIN and EXEEXT autoconf macros. diff --git a/bfd/elflink.h b/bfd/elflink.h index a40e1d40cb..3898116a64 100644 --- a/bfd/elflink.h +++ b/bfd/elflink.h @@ -1211,10 +1211,10 @@ elf_link_add_object_symbols (abfd, info) if (h->root.type == bfd_link_hash_common) old_alignment = h->root.u.c.p->alignment_power; - if (ever != NULL + if (elf_tdata (abfd)->verdef != NULL && ! override && vernum > 1 - && (h->verinfo.verdef == NULL || definition)) + && definition) h->verinfo.verdef = &elf_tdata (abfd)->verdef[vernum - 1]; } @@ -2103,6 +2103,15 @@ NAME(bfd_elf,record_link_assignment) (output_bfd, info, name, provide) && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) h->root.type = bfd_link_hash_undefined; + /* If this symbol is not being provided by the linker script, and it is + currently defined by a dynamic object, but not by a regular object, + then clear out any version information because the symbol will not be + associated with the dynamic object any more. */ + if (!provide + && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0 + && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) + h->verinfo.verdef = NULL; + h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR; h->type = STT_OBJECT;