summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2001-10-04 16:09:03 +0000
committerAlan Modra <amodra@bigpond.net.au>2001-10-04 16:09:03 +0000
commitbb651f451ea0a60edf5d381ec563fbec5b9bc7ad (patch)
tree868c324e25c7256ad1fb5edc54d6ba037ee75b03
parentd3b336754d3af41189c571af048a39f1c9c5aa85 (diff)
downloadgdb-bb651f451ea0a60edf5d381ec563fbec5b9bc7ad.tar.gz
* elf32-mips.c (_bfd_mips_elf_copy_indirect_symbol): Bail out after
copying flags if this is a weakdef.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-mips.c6
2 files changed, 10 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 1f058878cec..e97b1b85742 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,10 @@
2001-10-04 Alan Modra <amodra@bigpond.net.au>
+ * elf32-mips.c (_bfd_mips_elf_copy_indirect_symbol): Bail out after
+ copying flags if this is a weakdef.
+
+2001-10-04 Alan Modra <amodra@bigpond.net.au>
+
* elf-bfd.h (struct elf_link_hash_entry): Reorganise for better
packing.
diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c
index fd79bbaec62..6f39d9f2b75 100644
--- a/bfd/elf32-mips.c
+++ b/bfd/elf32-mips.c
@@ -8074,7 +8074,8 @@ _bfd_mips_elf_gc_sweep_hook (abfd, info, sec, relocs)
/* Copy data from a MIPS ELF indirect symbol to its direct symbol,
hiding the old indirect symbol. Process additional relocation
- information. */
+ information. Also called for weakdefs, in which case we just let
+ _bfd_elf_link_hach_copy_indirect copy the flags for us. */
static void
_bfd_mips_elf_copy_indirect_symbol (dir, ind)
@@ -8084,6 +8085,9 @@ _bfd_mips_elf_copy_indirect_symbol (dir, ind)
_bfd_elf_link_hash_copy_indirect (dir, ind);
+ if (dir == ind->weakdef)
+ return;
+
dirmips = (struct mips_elf_link_hash_entry *) dir;
indmips = (struct mips_elf_link_hash_entry *) ind;
dirmips->possibly_dynamic_relocs += indmips->possibly_dynamic_relocs;