From 3127c825387bb9ab426b383095b368a697fc6258 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Tue, 12 Feb 2013 09:54:56 +0000 Subject: bfd/ * elfxx-mips.c (mips_elf_lay_out_got): Count VxWorks GOT relocs in g->relocs. --- bfd/elfxx-mips.c | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) (limited to 'bfd/elfxx-mips.c') diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index 00757ff676..1d4586f2c8 100644 --- a/bfd/elfxx-mips.c +++ b/bfd/elfxx-mips.c @@ -8649,20 +8649,7 @@ mips_elf_lay_out_got (bfd *output_bfd, struct bfd_link_info *info) /* VxWorks does not support multiple GOTs. It initializes $gp to __GOTT_BASE__[__GOTT_INDEX__], the value of which is set by the dynamic loader. */ - if (htab->is_vxworks) - { - /* VxWorks executables do not need a GOT. */ - if (info->shared) - { - /* Each VxWorks GOT entry needs an explicit relocation. */ - unsigned int count; - - count = g->global_gotno + g->local_gotno - htab->reserved_gotno; - if (count) - mips_elf_allocate_dynamic_relocations (dynobj, info, count); - } - } - else if (s->size > MIPS_ELF_GOT_MAX_SIZE (info)) + if (!htab->is_vxworks && s->size > MIPS_ELF_GOT_MAX_SIZE (info)) { if (!mips_elf_multi_got (output_bfd, info, s, page_gotno)) return FALSE; @@ -8687,6 +8674,10 @@ mips_elf_lay_out_got (bfd *output_bfd, struct bfd_link_info *info) BFD_ASSERT (g->tls_assigned_gotno == g->global_gotno + g->local_gotno + g->tls_gotno); + /* Each VxWorks GOT entry needs an explicit relocation. */ + if (htab->is_vxworks && info->shared) + g->relocs += g->global_gotno + g->local_gotno - htab->reserved_gotno; + /* Allocate room for the TLS relocations. */ if (g->relocs) mips_elf_allocate_dynamic_relocations (dynobj, info, g->relocs); -- cgit v1.2.1