+2008-08-07 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * elfxx-mips.c (allocate_dynrelocs): Ignore indirect and warning
+ symbols.
+
2008-08-06 Richard Sandiford <rdsandiford@googlemail.com>
* elfxx-mips.c (mips_elf_link_hash_entry): Move bfd_boolean
if (htab->is_vxworks && !info->shared)
return TRUE;
+ /* Ignore indirect and warning symbols. All relocations against
+ such symbols will be redirected to the target symbol. */
+ if (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ return TRUE;
+
/* If this symbol is defined in a dynamic object, or we are creating
a shared library, we will need to copy any R_MIPS_32 or
R_MIPS_REL32 relocs against it into the output file. */
+2008-08-07 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * ld-mips-elf/reloc-estimate-1.d, ld-mips-elf/reloc-estimate-1.ld,
+ ld-mips-elf/reloc-estimate-1a.s, ld-mips-elf/reloc-estimate-1b.s:
+ New test.
+ * ld-mips-elf/mips-elf.exp: Run it.
+
2008-08-06 Richard Sandiford <rdsandiford@googlemail.com>
* ld-mips-elf/tls-hidden3.ld: Remove the unused .MIPS.stubs section.
if $has_newabi {
run_dump_test "got-dump-2"
}
+ run_dump_test "reloc-estimate-1"
}
if $has_newabi {
--- /dev/null
+#name: MIPS reloc estimation 1
+#source: reloc-estimate-1a.s
+#source: reloc-estimate-1b.s
+#ld: -shared -T reloc-estimate-1.ld
+#objdump: -R -sj.foo
+
+.*
+
+DYNAMIC RELOCATION RECORDS
+OFFSET TYPE VALUE
+00000000 R_MIPS_NONE \*ABS\*
+00010000 R_MIPS_REL32 foo
+
+
+# The address must be 0x810. We should only ever allocate one dynamic
+# reloc over and above the first R_MIPS_NONE entry.
+Contents of section \.foo:
+ 0810 deadbeef ....
--- /dev/null
+SECTIONS
+{
+ . = 0;
+ .reginfo : { *(.reginfo) }
+
+ . = ALIGN (0x400);
+ .dynamic : { *(.dynamic) }
+ .dynsym : { *(.dynsym) }
+ .dynstr : { *(.dynstr) }
+
+ . = ALIGN (0x400);
+ .rel.dyn : { *(.rel.dyn) }
+ .foo : { *(.foo) }
+ .text : { *(.text) }
+
+ . = ALIGN (0x400);
+ .MIPS.stubs : { *(.MIPS.stubs) }
+
+ . = ALIGN (0x10000);
+ .data : { *(.data) }
+
+ . = ALIGN (0x400);
+ _gp = . + 0x7ff0;
+ .got : { *(.got) }
+}
+
+VERSION {
+ V2 { global: foo; local: *; };
+}
--- /dev/null
+ .section .foo,"a",@progbits
+ .word 0xdeadbeef
+
+ .abicalls
+ .data
+ .word foo
--- /dev/null
+ .abicalls
+ .symver foo2,foo@@V2
+ .global foo2
+ .data
+ .type foo2,%object
+ .size foo2,4
+foo2: .word 0