summaryrefslogtreecommitdiff
path: root/bfd/elflink.c
diff options
context:
space:
mode:
Diffstat (limited to 'bfd/elflink.c')
-rw-r--r--bfd/elflink.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 0add01b5ad..972b6f8eb5 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -4932,6 +4932,7 @@ error_free_dyn:
struct elf_link_hash_entry *h;
bfd_size_type size;
unsigned int alignment_power;
+ unsigned int dynamic_ref_after_ir_def;
for (p = htab->root.table.table[i]; p != NULL; p = p->next)
{
@@ -4953,6 +4954,10 @@ error_free_dyn:
size = 0;
alignment_power = 0;
}
+ /* Preserve dynamic_ref_after_ir_def so that this symbol
+ will be exported when the dynamic lib becomes needed
+ in the second pass. */
+ dynamic_ref_after_ir_def = h->root.dynamic_ref_after_ir_def;
memcpy (p, old_ent, htab->root.table.entsize);
old_ent = (char *) old_ent + htab->root.table.entsize;
h = (struct elf_link_hash_entry *) p;
@@ -4969,6 +4974,7 @@ error_free_dyn:
if (alignment_power > h->root.u.c.p->alignment_power)
h->root.u.c.p->alignment_power = alignment_power;
}
+ h->root.dynamic_ref_after_ir_def = dynamic_ref_after_ir_def;
}
}