+2007-07-23 Richard Sandiford <richard@codesourcery.com>
+
+ * elflink.c (_bfd_elf_fix_symbol_flags): Only assert the type
+ of weakdef->root.type if weakdef has no regular definition.
+
2007-07-22 Adam Nemet <anemet@caviumnetworks.com>
* elfxx-mips.c (struct mips_elf_link_hash_table): Add new field
BFD_ASSERT (h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak);
- BFD_ASSERT (weakdef->root.type == bfd_link_hash_defined
- || weakdef->root.type == bfd_link_hash_defweak);
BFD_ASSERT (weakdef->def_dynamic);
/* If the real definition is defined by a regular object file,
if (weakdef->def_regular)
h->u.weakdef = NULL;
else
- (*bed->elf_backend_copy_indirect_symbol) (eif->info, weakdef,
- h);
+ {
+ BFD_ASSERT (weakdef->root.type == bfd_link_hash_defined
+ || weakdef->root.type == bfd_link_hash_defweak);
+ (*bed->elf_backend_copy_indirect_symbol) (eif->info, weakdef, h);
+ }
}
return TRUE;
+2007-07-23 Richard Sandiford <richard@codesourcery.com>
+
+ * ld-elf/weak-dyn-1a.s, ld-elf/weak-dyn-1b.s, ld-elf/weak-dyn-1.ld,
+ * ld-elf/weak-dyn-1.rd: New test.
+ * ld-elf/elf.exp: Run it.
+
2007-07-13 Nathan Sidwell <nathan@codesourcery.com>
* ld-scripts/assert.t: Tweak to avoid relying on empty's VMA being
run_dump_test [file rootname $t]
}
+if { [istarget *-*-linux*] } {
+ run_ld_link_tests {
+ {"Weak symbols in dynamic objects 1 (support)"
+ "-shared" "" {weak-dyn-1a.s}
+ {}
+ "libweakdyn1a.so"}
+ {"Weak symbols in dynamic objects 1 (main test)"
+ "-shared tmpdir/libweakdyn1a.so -Tweak-dyn-1.ld" "" {weak-dyn-1b.s}
+ {{readelf {--relocs --wide} weak-dyn-1.rd}}
+ "libweakdyn1b.so"}
+ }
+}
+
# The following tests require running the executable generated by ld.
if ![isnative] {
return
--- /dev/null
+SECTIONS
+{
+ . = 0x800000;
+ PROVIDE (bar = .);
+ .data : {
+ *(.data)
+ }
+}
--- /dev/null
+#...
+0+800000 .* foo.*
+#pass
--- /dev/null
+ .globl foo
+ .weak foo
+ .type foo,%object
+ .size foo,1
+
+ .globl bar
+ .type bar,%object
+ .size bar,1
+
+ .data
+foo:
+bar:
+ .dc.a data_begin
--- /dev/null
+ .data
+ .dc.a foo
+ .dc.a data_begin