aboutsummaryrefslogtreecommitdiff
path: root/bfd/elflink.h
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1997-07-31 01:35:46 +0000
committerIan Lance Taylor <ian@airs.com>1997-07-31 01:35:46 +0000
commit13eb6306e714d658344024d3e87600427517624a (patch)
tree5ee9cb32db761f9c3d5a4c988ffb2dc20a70b16f /bfd/elflink.h
parent293bc1d50629efc5d1b5605b1c8ffb01896fe271 (diff)
downloadgdb-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/elflink.h')
-rw-r--r--bfd/elflink.h13
1 files changed, 11 insertions, 2 deletions
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;