diff options
author | Ian Lance Taylor <ian@airs.com> | 1997-07-31 01:35:46 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1997-07-31 01:35:46 +0000 |
commit | 13eb6306e714d658344024d3e87600427517624a (patch) | |
tree | 5ee9cb32db761f9c3d5a4c988ffb2dc20a70b16f /bfd | |
parent | 293bc1d50629efc5d1b5605b1c8ffb01896fe271 (diff) | |
download | gdb-13eb6306e714d658344024d3e87600427517624a.zip gdb-13eb6306e714d658344024d3e87600427517624a.tar.gz gdb-13eb6306e714d658344024d3e87600427517624a.tar.bz2 |
Wed Jul 30 21:30:35 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* 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.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 8 | ||||
-rw-r--r-- | bfd/elflink.h | 13 |
2 files changed, 19 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ef22c97..f58d494 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +Wed Jul 30 21:30:35 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * 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 <rob@chinadoll.cygnus.com> * aclocal.m4: Add CYGWIN and EXEEXT autoconf macros. diff --git a/bfd/elflink.h b/bfd/elflink.h index a40e1d4..3898116 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; |