public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] [MIPS] Ensure that local GOT entries accessed via a 16-bit index come first
@ 2014-04-16 13:25 Kwok Cheung Yeung
  2014-04-16 19:29 ` Richard Sandiford
  0 siblings, 1 reply; 5+ messages in thread
From: Kwok Cheung Yeung @ 2014-04-16 13:25 UTC (permalink / raw)
  To: binutils; +Cc: jack.carter, rdsandiford, hjl.tools, Maciej W. Rozycki

[-- Attachment #1: Type: text/plain, Size: 4049 bytes --]

Hello

> We have a "canadian_cross" build of LLVM and have been getting off and on link time errors from one of the input object files RecursiveASTVisitorTest.o. :
>
> (.text._ZN4llvm25SmallVectorTemplateCommonIN5clang19RecursiveASTVisitorINS1_11AttrVisitorEE10EnqueueJobEvE4backEv[_ZN4llvm25SmallVectorTemplateCommonIN5clang19RecursiveASTVisitorINS1_11AttrVisitorEE10EnqueueJobEvE4backEv]+0x64): relocation truncated to fit: R_MIPS_GOT16 against `no symbol'
>
> Basically building LLVM with a MIPS GCC. I noticed that the section count was way above 16 bits and seized on that as being the culprit.
>
>From the information you and H.J. have pointed me to, I need to dig further. Why I never knew about this trap door for section overflow is beyond me :-| Probably since I never hit the limit myself.

I have been investigating this issue with the LLVM Canadian Cross build 
on MIPS. The problem arises mainly because of the way GCC constructs 
calls to member functions of C++ classes in PIC code - each member 
function of each class is placed in a different section (which, coupled 
with the use of class templates, explains the huge number of sections in 
the problematic object file). A call to a member function generates this 
type of code (with -mxgot):

       2c:       3c020000        lui     v0,0x0
                         2c: R_MIPS_GOT_HI16 
_ZN5clang33ParmVarDeclVisitorForImplicitCodeC1Ev
       30:       005c1021        addu    v0,v0,gp
       34:       8c420000        lw      v0,0(v0)
                         34: R_MIPS_GOT_LO16 
_ZN5clang33ParmVarDeclVisitorForImplicitCodeC1Ev
       38:       0040c821        move    t9,v0
       3c:       0320f809        jalr    t9
                         3c: R_MIPS_JALR 
_ZN5clang33ParmVarDeclVisitorForImplicitCodeC1Ev
       40:       00000000        nop

meaning that each call to a member function may result in a new entry 
being placed in the local section of the GOT (if the symbol is local or 
mips_use_local_got_p() evaluates to true).

The other main type of local GOT entry is created by page+offset 
references - e.g.:

       50:       8f820000        lw      v0,0(gp)
                         50: R_MIPS_GOT16        .rodata
       54:       24450488        addiu   a1,v0,1160
                         54: R_MIPS_LO16 .rodata
       58:       3c020000        lui     v0,0x0

The GOT entry for the page is always accessed using a 16-bit lookup even 
with -mxgot - I believe the reasoning for this was because with each 
page covering 64KB, the addressable 16K GOT page entries would be enough 
to cover ~1GB of address space?

Unfortunately, since local GOT entries are allocated on-the-fly as they 
are encountered in the code, this means that the initial 16K entries are 
filled with a mixture of entries for member functions and pages (in this 
case, mainly the former). This means that there is the possibility that 
a page entry will be allocated outside of the addressable first 16K 
entries, resulting in a reloc overflow. However, with -mxgot, there is 
no problem calling member functions with entries after the first 16K 
entries (without -mxgot, these would also eventually result in overflows).

I have created this patch to ensure that GOT page entries come before 
the member function entries. The idea is to fill the local GOT space 
from both ends at once, with entries accessed via 16-bit indexing being 
added on the lower end, and those with 32-bit indexing on the upper end. 
If the size of the local GOT is overestimated, this results in a gap in 
the middle of the local GOT area that must be accounted for when 
iterating over the local part of the GOT.

This patch has only been lightly tested. I can confirm that the reloc 
overflow on building LLVM/Clang no longer occurs, and have tried running 
some of the generated LLVM and Clang binaries on QEMU and a real MIPS 
board. The ld testsuite has a couple of new failures due to the change 
in the GOT layout, so the expected outputs need to be updated (included 
in the patch).

Kwok Cheung Yeung

[-- Attachment #2: mips_reloc_overflow.patch --]
[-- Type: text/plain, Size: 107622 bytes --]

commit f0cfefc791115f00be6274c05c768fa2a4012bd9
Author: Kwok Cheung Yeung <kcy@codesourcery.com>
Date:   Wed Apr 16 05:46:58 2014 -0700

        bfd/
            * elfxx-mips.c (struct mips_got_info): Delete assigned_gotno
            field.  Add assigned_low_gotno and assigned_high_gotno fields.
            (mips_elf_create_local_got_entry): Update out-of-space condition.
            Set index of new GOT entry to assigned_low_gotno if required by
            the current relocation, else set it to assigned_high_gotno.
            (mips_elf_set_global_gotidx): Replace uses of assigned_gotno
            with assigned_low_gotno.
            (mips_elf_multi_got): Initialize assigned_low_gotno and
            assigned_high_gotno in secondary GOTs.  Use assigned_low_gotno
            in place of assigned_gotno when handling global GOT entries.
            (mips_elf_lay_out_got): Initialize assigned_low_gotno and
            assigned_high_gotno.
            (_bfd_mips_elf_finish_dynamic_sections): Account for a possible
            gap in the middle of local GOT space.
    
        ld/testsuite/
            * ld-mips-elf/elf-rel-xgot-n32.d: Update for new GOT layout.
            * ld-mips-elf/elf-rel-xgot-n32-embed.d: Likewise.
            * ld-mips-elf/elf-rel-xgot-n64.d: Likewise.
            * ld-mips-elf/elf-rel-xgot-n64-embed.d: Likewise.
            * ld-mips-elf/elf-rel-xgot-n64-linux.d: Likewise.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index c9af9da..9fe0417 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,20 @@
+2014-04-16  Kwok Cheung Yeung  <kcy@codesourcery.com>
+
+	* elfxx-mips.c (struct mips_got_info): Delete assigned_gotno
+	field.  Add assigned_low_gotno and assigned_high_gotno fields.
+	(mips_elf_create_local_got_entry): Update out-of-space condition.
+	Set index of new GOT entry to assigned_low_gotno if required by
+	the current relocation, else set it to assigned_high_gotno.
+	(mips_elf_set_global_gotidx): Replace uses of assigned_gotno
+	with assigned_low_gotno.
+	(mips_elf_multi_got): Initialize assigned_low_gotno and
+	assigned_high_gotno in secondary GOTs.  Use assigned_low_gotno
+	in place of assigned_gotno when handling global GOT entries.
+	(mips_elf_lay_out_got): Initialize assigned_low_gotno and
+	assigned_high_gotno.
+	(_bfd_mips_elf_finish_dynamic_sections): Account for a possible
+	gap in the middle of local GOT space.
+
 2014-04-16  Tristan Gingold  <gingold@adacore.com>
 
 	* mach-o-x86-64.c (bfd_mach_o_x86_64_mkobject): Adjust cpusubtype
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index b44fc21..d939444 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -168,8 +168,10 @@ struct mips_got_info
   unsigned int page_gotno;
   /* The number of relocations needed for the GOT entries.  */
   unsigned int relocs;
-  /* The number of local .got entries we have used.  */
-  unsigned int assigned_gotno;
+  /* The first unused local .got entry.  */
+  unsigned int assigned_low_gotno;
+  /* The last unused local .got entry.  */
+  unsigned int assigned_high_gotno;
   /* A hash table holding members of the got.  */
   struct htab *got_entries;
   /* A hash table holding mips_got_page_ref structures.  */
@@ -3635,7 +3637,7 @@ mips_elf_create_local_got_entry (bfd *abfd, struct bfd_link_info *info,
   if (entry)
     return entry;
 
-  if (g->assigned_gotno >= g->local_gotno)
+  if (g->assigned_low_gotno > g->assigned_high_gotno)
     {
       /* We didn't allocate enough space in the GOT.  */
       (*_bfd_error_handler)
@@ -3648,7 +3650,14 @@ mips_elf_create_local_got_entry (bfd *abfd, struct bfd_link_info *info,
   if (!entry)
     return NULL;
 
-  lookup.gotidx = MIPS_ELF_GOT_SIZE (abfd) * g->assigned_gotno++;
+  if (got16_reloc_p (r_type)
+      || call16_reloc_p (r_type)
+      || got_page_reloc_p (r_type)
+      || got_disp_reloc_p (r_type))
+    lookup.gotidx = MIPS_ELF_GOT_SIZE (abfd) * g->assigned_low_gotno++;
+  else
+    lookup.gotidx = MIPS_ELF_GOT_SIZE (abfd) * g->assigned_high_gotno--;
+
   *entry = lookup;
   *loc = entry;
 
@@ -4628,12 +4637,12 @@ mips_elf_set_global_gotidx (void **entryp, void *data)
       && entry->symndx == -1
       && entry->d.h->global_got_area != GGA_NONE)
     {
-      if (!mips_elf_set_gotidx (entryp, arg->value * arg->g->assigned_gotno))
+      if (!mips_elf_set_gotidx (entryp, arg->value * arg->g->assigned_low_gotno))
 	{
 	  arg->g = NULL;
 	  return 0;
 	}
-      arg->g->assigned_gotno += 1;
+      arg->g->assigned_low_gotno += 1;
 
       if (arg->info->shared
 	  || (elf_hash_table (arg->info)->dynamic_sections_created
@@ -4766,7 +4775,7 @@ mips_elf_multi_got (bfd *abfd, struct bfd_link_info *info,
   htab_traverse (g->got_entries, mips_elf_set_global_got_area, &tga);
 
   /* Now go through the GOTs assigning them offset ranges.
-     [assigned_gotno, local_gotno[ will be set to the range of local
+     [assigned_low_gotno, local_gotno[ will be set to the range of local
      entries in each GOT.  We can then compute the end of a GOT by
      adding local_gotno to global_gotno.  We reverse the list and make
      it circular since then we'll be able to quickly compute the
@@ -4789,9 +4798,10 @@ mips_elf_multi_got (bfd *abfd, struct bfd_link_info *info,
       struct mips_got_info *gn;
 
       assign += htab->reserved_gotno;
-      g->assigned_gotno = assign;
+      g->assigned_low_gotno = assign;
       g->local_gotno += assign;
       g->local_gotno += (pages < g->page_gotno ? pages : g->page_gotno);
+      g->assigned_high_gotno = g->local_gotno - 1;
       assign = g->local_gotno + g->global_gotno + g->tls_gotno;
 
       /* Take g out of the direct list, and push it onto the reversed
@@ -4830,21 +4840,21 @@ mips_elf_multi_got (bfd *abfd, struct bfd_link_info *info,
 
       /* Assign offsets to global GOT entries and count how many
 	 relocations they need.  */
-      save_assign = g->assigned_gotno;
-      g->assigned_gotno = g->local_gotno;
+      save_assign = g->assigned_low_gotno;
+      g->assigned_low_gotno = g->local_gotno;
       tga.info = info;
       tga.value = MIPS_ELF_GOT_SIZE (abfd);
       tga.g = g;
       htab_traverse (g->got_entries, mips_elf_set_global_gotidx, &tga);
       if (!tga.g)
 	return FALSE;
-      BFD_ASSERT (g->assigned_gotno == g->local_gotno + g->global_gotno);
-      g->assigned_gotno = save_assign;
+      BFD_ASSERT (g->assigned_low_gotno == g->local_gotno + g->global_gotno);
+      g->assigned_low_gotno = save_assign;
 
       if (info->shared)
 	{
-	  g->relocs += g->local_gotno - g->assigned_gotno;
-	  BFD_ASSERT (g->assigned_gotno == g->next->local_gotno
+	  g->relocs += g->local_gotno - g->assigned_low_gotno;
+	  BFD_ASSERT (g->assigned_low_gotno == g->next->local_gotno
 		      + g->next->global_gotno
 		      + g->next->tls_gotno
 		      + htab->reserved_gotno);
@@ -9064,13 +9074,13 @@ mips_elf_lay_out_got (bfd *output_bfd, struct bfd_link_info *info)
 
   /* Allocate room for the reserved entries.  VxWorks always reserves
      3 entries; other objects only reserve 2 entries.  */
-  BFD_ASSERT (g->assigned_gotno == 0);
+  BFD_ASSERT (g->assigned_low_gotno == 0);
   if (htab->is_vxworks)
     htab->reserved_gotno = 3;
   else
     htab->reserved_gotno = 2;
   g->local_gotno += htab->reserved_gotno;
-  g->assigned_gotno = htab->reserved_gotno;
+  g->assigned_low_gotno = htab->reserved_gotno;
 
   /* Decide which symbols need to go in the global part of the GOT and
      count the number of reloc-only GOT symbols.  */
@@ -9113,6 +9123,7 @@ mips_elf_lay_out_got (bfd *output_bfd, struct bfd_link_info *info)
     page_gotno = g->page_gotno;
 
   g->local_gotno += page_gotno;
+  g->assigned_high_gotno = g->local_gotno - 1;
 
   s->size += g->local_gotno * MIPS_ELF_GOT_SIZE (output_bfd);
   s->size += g->global_gotno * MIPS_ELF_GOT_SIZE (output_bfd);
@@ -11387,10 +11398,14 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
 	  if (! info->shared)
 	    continue;
 
-	  while (got_index < g->assigned_gotno)
+	  for (; got_index < g->local_gotno; got_index++)
 	    {
+	      if (got_index >= g->assigned_low_gotno
+		  && got_index <= g->assigned_high_gotno)
+		continue;
+
 	      rel[0].r_offset = rel[1].r_offset = rel[2].r_offset
-		= got_index++ * MIPS_ELF_GOT_SIZE (output_bfd);
+		= got_index * MIPS_ELF_GOT_SIZE (output_bfd);
 	      if (!(mips_elf_create_dynamic_relocation
 		    (output_bfd, info, rel, NULL,
 		     bfd_abs_section_ptr,
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index ae0fa89..b3772c4 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2014-04-16  Kwok Cheung Yeung  <kcy@codesourcery.com>
+
+	* ld-mips-elf/elf-rel-xgot-n32.d: Update for new GOT layout.
+	* ld-mips-elf/elf-rel-xgot-n32-embed.d: Likewise.
+	* ld-mips-elf/elf-rel-xgot-n64.d: Likewise.
+	* ld-mips-elf/elf-rel-xgot-n64-embed.d: Likewise.
+	* ld-mips-elf/elf-rel-xgot-n64-linux.d: Likewise.
+
 2014-04-15  Marcus Shawcroft  <marcus.shawcroft@arm.com>
 
 	* ld-aarch64/tls-relax-gdesc-ie.s (var): Adjust test case
diff --git a/ld/testsuite/ld-mips-elf/elf-rel-xgot-n32-embed.d b/ld/testsuite/ld-mips-elf/elf-rel-xgot-n32-embed.d
index 1d0c045..a0bef16 100644
--- a/ld/testsuite/ld-mips-elf/elf-rel-xgot-n32-embed.d
+++ b/ld/testsuite/ld-mips-elf/elf-rel-xgot-n32-embed.d
@@ -18,382 +18,382 @@ Disassembly of section \.text:
 10000074 <fn>:
 10000074:	3c050000 	lui	a1,0x0
 10000078:	00bc2821 	addu	a1,a1,gp
-1000007c:	8ca58018 	lw	a1,-32744\(a1\)
+1000007c:	8ca58038 	lw	a1,-32712\(a1\)
 10000080:	3c050000 	lui	a1,0x0
 10000084:	00bc2821 	addu	a1,a1,gp
-10000088:	8ca58018 	lw	a1,-32744\(a1\)
+10000088:	8ca58038 	lw	a1,-32712\(a1\)
 1000008c:	24a5000c 	addiu	a1,a1,12
 10000090:	3c050000 	lui	a1,0x0
 10000094:	00bc2821 	addu	a1,a1,gp
-10000098:	8ca58018 	lw	a1,-32744\(a1\)
+10000098:	8ca58038 	lw	a1,-32712\(a1\)
 1000009c:	3c010001 	lui	at,0x1
 100000a0:	3421e240 	ori	at,at,0xe240
 100000a4:	00a12821 	addu	a1,a1,at
 100000a8:	3c050000 	lui	a1,0x0
 100000ac:	00bc2821 	addu	a1,a1,gp
-100000b0:	8ca58018 	lw	a1,-32744\(a1\)
+100000b0:	8ca58038 	lw	a1,-32712\(a1\)
 100000b4:	00b12821 	addu	a1,a1,s1
 100000b8:	3c050000 	lui	a1,0x0
 100000bc:	00bc2821 	addu	a1,a1,gp
-100000c0:	8ca58018 	lw	a1,-32744\(a1\)
+100000c0:	8ca58038 	lw	a1,-32712\(a1\)
 100000c4:	24a5000c 	addiu	a1,a1,12
 100000c8:	00b12821 	addu	a1,a1,s1
 100000cc:	3c050000 	lui	a1,0x0
 100000d0:	00bc2821 	addu	a1,a1,gp
-100000d4:	8ca58018 	lw	a1,-32744\(a1\)
+100000d4:	8ca58038 	lw	a1,-32712\(a1\)
 100000d8:	3c010001 	lui	at,0x1
 100000dc:	3421e240 	ori	at,at,0xe240
 100000e0:	00a12821 	addu	a1,a1,at
 100000e4:	00b12821 	addu	a1,a1,s1
 100000e8:	3c050000 	lui	a1,0x0
 100000ec:	00bc2821 	addu	a1,a1,gp
-100000f0:	8ca58018 	lw	a1,-32744\(a1\)
+100000f0:	8ca58038 	lw	a1,-32712\(a1\)
 100000f4:	8ca50000 	lw	a1,0\(a1\)
 100000f8:	3c050000 	lui	a1,0x0
 100000fc:	00bc2821 	addu	a1,a1,gp
-10000100:	8ca58018 	lw	a1,-32744\(a1\)
+10000100:	8ca58038 	lw	a1,-32712\(a1\)
 10000104:	8ca5000c 	lw	a1,12\(a1\)
 10000108:	3c050000 	lui	a1,0x0
 1000010c:	00bc2821 	addu	a1,a1,gp
-10000110:	8ca58018 	lw	a1,-32744\(a1\)
+10000110:	8ca58038 	lw	a1,-32712\(a1\)
 10000114:	00b12821 	addu	a1,a1,s1
 10000118:	8ca50000 	lw	a1,0\(a1\)
 1000011c:	3c050000 	lui	a1,0x0
 10000120:	00bc2821 	addu	a1,a1,gp
-10000124:	8ca58018 	lw	a1,-32744\(a1\)
+10000124:	8ca58038 	lw	a1,-32712\(a1\)
 10000128:	00b12821 	addu	a1,a1,s1
 1000012c:	8ca5000c 	lw	a1,12\(a1\)
 10000130:	3c010000 	lui	at,0x0
 10000134:	003c0821 	addu	at,at,gp
-10000138:	8c218018 	lw	at,-32744\(at\)
+10000138:	8c218038 	lw	at,-32712\(at\)
 1000013c:	00250821 	addu	at,at,a1
 10000140:	8c250022 	lw	a1,34\(at\)
 10000144:	3c010000 	lui	at,0x0
 10000148:	003c0821 	addu	at,at,gp
-1000014c:	8c218018 	lw	at,-32744\(at\)
+1000014c:	8c218038 	lw	at,-32712\(at\)
 10000150:	00250821 	addu	at,at,a1
 10000154:	ac250038 	sw	a1,56\(at\)
 10000158:	3c010000 	lui	at,0x0
 1000015c:	003c0821 	addu	at,at,gp
-10000160:	8c218018 	lw	at,-32744\(at\)
+10000160:	8c218038 	lw	at,-32712\(at\)
 10000164:	88250000 	lwl	a1,0\(at\)
 10000168:	98250003 	lwr	a1,3\(at\)
 1000016c:	3c010000 	lui	at,0x0
 10000170:	003c0821 	addu	at,at,gp
-10000174:	8c218018 	lw	at,-32744\(at\)
+10000174:	8c218038 	lw	at,-32712\(at\)
 10000178:	2421000c 	addiu	at,at,12
 1000017c:	88250000 	lwl	a1,0\(at\)
 10000180:	98250003 	lwr	a1,3\(at\)
 10000184:	3c010000 	lui	at,0x0
 10000188:	003c0821 	addu	at,at,gp
-1000018c:	8c218018 	lw	at,-32744\(at\)
+1000018c:	8c218038 	lw	at,-32712\(at\)
 10000190:	00310821 	addu	at,at,s1
 10000194:	88250000 	lwl	a1,0\(at\)
 10000198:	98250003 	lwr	a1,3\(at\)
 1000019c:	3c010000 	lui	at,0x0
 100001a0:	003c0821 	addu	at,at,gp
-100001a4:	8c218018 	lw	at,-32744\(at\)
+100001a4:	8c218038 	lw	at,-32712\(at\)
 100001a8:	2421000c 	addiu	at,at,12
 100001ac:	00310821 	addu	at,at,s1
 100001b0:	88250000 	lwl	a1,0\(at\)
 100001b4:	98250003 	lwr	a1,3\(at\)
 100001b8:	3c010000 	lui	at,0x0
 100001bc:	003c0821 	addu	at,at,gp
-100001c0:	8c218018 	lw	at,-32744\(at\)
+100001c0:	8c218038 	lw	at,-32712\(at\)
 100001c4:	24210022 	addiu	at,at,34
 100001c8:	00250821 	addu	at,at,a1
 100001cc:	88250000 	lwl	a1,0\(at\)
 100001d0:	98250003 	lwr	a1,3\(at\)
 100001d4:	3c010000 	lui	at,0x0
 100001d8:	003c0821 	addu	at,at,gp
-100001dc:	8c218018 	lw	at,-32744\(at\)
+100001dc:	8c218038 	lw	at,-32712\(at\)
 100001e0:	24210038 	addiu	at,at,56
 100001e4:	00250821 	addu	at,at,a1
 100001e8:	a8250000 	swl	a1,0\(at\)
 100001ec:	b8250003 	swr	a1,3\(at\)
-100001f0:	8f85801c 	lw	a1,-32740\(gp\)
+100001f0:	8f858018 	lw	a1,-32744\(gp\)
 100001f4:	24a506b8 	addiu	a1,a1,1720
-100001f8:	8f85801c 	lw	a1,-32740\(gp\)
+100001f8:	8f858018 	lw	a1,-32744\(gp\)
 100001fc:	24a506c4 	addiu	a1,a1,1732
-10000200:	8f858020 	lw	a1,-32736\(gp\)
+10000200:	8f85801c 	lw	a1,-32740\(gp\)
 10000204:	24a5e8f8 	addiu	a1,a1,-5896
-10000208:	8f85801c 	lw	a1,-32740\(gp\)
+10000208:	8f858018 	lw	a1,-32744\(gp\)
 1000020c:	24a506b8 	addiu	a1,a1,1720
 10000210:	00b12821 	addu	a1,a1,s1
-10000214:	8f85801c 	lw	a1,-32740\(gp\)
+10000214:	8f858018 	lw	a1,-32744\(gp\)
 10000218:	24a506c4 	addiu	a1,a1,1732
 1000021c:	00b12821 	addu	a1,a1,s1
-10000220:	8f858020 	lw	a1,-32736\(gp\)
+10000220:	8f85801c 	lw	a1,-32740\(gp\)
 10000224:	24a5e8f8 	addiu	a1,a1,-5896
 10000228:	00b12821 	addu	a1,a1,s1
-1000022c:	8f85801c 	lw	a1,-32740\(gp\)
+1000022c:	8f858018 	lw	a1,-32744\(gp\)
 10000230:	8ca506b8 	lw	a1,1720\(a1\)
-10000234:	8f85801c 	lw	a1,-32740\(gp\)
+10000234:	8f858018 	lw	a1,-32744\(gp\)
 10000238:	8ca506c4 	lw	a1,1732\(a1\)
-1000023c:	8f85801c 	lw	a1,-32740\(gp\)
+1000023c:	8f858018 	lw	a1,-32744\(gp\)
 10000240:	00b12821 	addu	a1,a1,s1
 10000244:	8ca506b8 	lw	a1,1720\(a1\)
-10000248:	8f85801c 	lw	a1,-32740\(gp\)
+10000248:	8f858018 	lw	a1,-32744\(gp\)
 1000024c:	00b12821 	addu	a1,a1,s1
 10000250:	8ca506c4 	lw	a1,1732\(a1\)
-10000254:	8f81801c 	lw	at,-32740\(gp\)
+10000254:	8f818018 	lw	at,-32744\(gp\)
 10000258:	00250821 	addu	at,at,a1
 1000025c:	8c2506da 	lw	a1,1754\(at\)
-10000260:	8f81801c 	lw	at,-32740\(gp\)
+10000260:	8f818018 	lw	at,-32744\(gp\)
 10000264:	00250821 	addu	at,at,a1
 10000268:	ac2506f0 	sw	a1,1776\(at\)
-1000026c:	8f81801c 	lw	at,-32740\(gp\)
+1000026c:	8f818018 	lw	at,-32744\(gp\)
 10000270:	242106b8 	addiu	at,at,1720
 10000274:	88250000 	lwl	a1,0\(at\)
 10000278:	98250003 	lwr	a1,3\(at\)
-1000027c:	8f81801c 	lw	at,-32740\(gp\)
+1000027c:	8f818018 	lw	at,-32744\(gp\)
 10000280:	242106c4 	addiu	at,at,1732
 10000284:	88250000 	lwl	a1,0\(at\)
 10000288:	98250003 	lwr	a1,3\(at\)
-1000028c:	8f81801c 	lw	at,-32740\(gp\)
+1000028c:	8f818018 	lw	at,-32744\(gp\)
 10000290:	242106b8 	addiu	at,at,1720
 10000294:	00310821 	addu	at,at,s1
 10000298:	88250000 	lwl	a1,0\(at\)
 1000029c:	98250003 	lwr	a1,3\(at\)
-100002a0:	8f81801c 	lw	at,-32740\(gp\)
+100002a0:	8f818018 	lw	at,-32744\(gp\)
 100002a4:	242106c4 	addiu	at,at,1732
 100002a8:	00310821 	addu	at,at,s1
 100002ac:	88250000 	lwl	a1,0\(at\)
 100002b0:	98250003 	lwr	a1,3\(at\)
-100002b4:	8f81801c 	lw	at,-32740\(gp\)
+100002b4:	8f818018 	lw	at,-32744\(gp\)
 100002b8:	242106da 	addiu	at,at,1754
 100002bc:	00250821 	addu	at,at,a1
 100002c0:	88250000 	lwl	a1,0\(at\)
 100002c4:	98250003 	lwr	a1,3\(at\)
-100002c8:	8f81801c 	lw	at,-32740\(gp\)
+100002c8:	8f818018 	lw	at,-32744\(gp\)
 100002cc:	242106f0 	addiu	at,at,1776
 100002d0:	00250821 	addu	at,at,a1
 100002d4:	a8250000 	swl	a1,0\(at\)
 100002d8:	b8250003 	swr	a1,3\(at\)
 100002dc:	3c050000 	lui	a1,0x0
 100002e0:	00bc2821 	addu	a1,a1,gp
-100002e4:	8ca58024 	lw	a1,-32732\(a1\)
-100002e8:	8f858028 	lw	a1,-32728\(gp\)
+100002e4:	8ca58034 	lw	a1,-32716\(a1\)
+100002e8:	8f858020 	lw	a1,-32736\(gp\)
 100002ec:	24a50074 	addiu	a1,a1,116
 100002f0:	3c190000 	lui	t9,0x0
 100002f4:	033cc821 	addu	t9,t9,gp
-100002f8:	8f398024 	lw	t9,-32732\(t9\)
-100002fc:	8f998028 	lw	t9,-32728\(gp\)
+100002f8:	8f398034 	lw	t9,-32716\(t9\)
+100002fc:	8f998020 	lw	t9,-32736\(gp\)
 10000300:	27390074 	addiu	t9,t9,116
 10000304:	3c190000 	lui	t9,0x0
 10000308:	033cc821 	addu	t9,t9,gp
-1000030c:	8f398024 	lw	t9,-32732\(t9\)
+1000030c:	8f398034 	lw	t9,-32716\(t9\)
 10000310:	0411ff58 	bal	10000074 <fn>
 10000314:	00000000 	nop
-10000318:	8f998028 	lw	t9,-32728\(gp\)
+10000318:	8f998020 	lw	t9,-32736\(gp\)
 1000031c:	27390074 	addiu	t9,t9,116
 10000320:	0411ff54 	bal	10000074 <fn>
 10000324:	00000000 	nop
 10000328:	3c050000 	lui	a1,0x0
 1000032c:	00bc2821 	addu	a1,a1,gp
-10000330:	8ca5802c 	lw	a1,-32724\(a1\)
+10000330:	8ca58030 	lw	a1,-32720\(a1\)
 10000334:	3c050000 	lui	a1,0x0
 10000338:	00bc2821 	addu	a1,a1,gp
-1000033c:	8ca5802c 	lw	a1,-32724\(a1\)
+1000033c:	8ca58030 	lw	a1,-32720\(a1\)
 10000340:	24a5000c 	addiu	a1,a1,12
 10000344:	3c050000 	lui	a1,0x0
 10000348:	00bc2821 	addu	a1,a1,gp
-1000034c:	8ca5802c 	lw	a1,-32724\(a1\)
+1000034c:	8ca58030 	lw	a1,-32720\(a1\)
 10000350:	3c010001 	lui	at,0x1
 10000354:	3421e240 	ori	at,at,0xe240
 10000358:	00a12821 	addu	a1,a1,at
 1000035c:	3c050000 	lui	a1,0x0
 10000360:	00bc2821 	addu	a1,a1,gp
-10000364:	8ca5802c 	lw	a1,-32724\(a1\)
+10000364:	8ca58030 	lw	a1,-32720\(a1\)
 10000368:	00b12821 	addu	a1,a1,s1
 1000036c:	3c050000 	lui	a1,0x0
 10000370:	00bc2821 	addu	a1,a1,gp
-10000374:	8ca5802c 	lw	a1,-32724\(a1\)
+10000374:	8ca58030 	lw	a1,-32720\(a1\)
 10000378:	24a5000c 	addiu	a1,a1,12
 1000037c:	00b12821 	addu	a1,a1,s1
 10000380:	3c050000 	lui	a1,0x0
 10000384:	00bc2821 	addu	a1,a1,gp
-10000388:	8ca5802c 	lw	a1,-32724\(a1\)
+10000388:	8ca58030 	lw	a1,-32720\(a1\)
 1000038c:	3c010001 	lui	at,0x1
 10000390:	3421e240 	ori	at,at,0xe240
 10000394:	00a12821 	addu	a1,a1,at
 10000398:	00b12821 	addu	a1,a1,s1
 1000039c:	3c050000 	lui	a1,0x0
 100003a0:	00bc2821 	addu	a1,a1,gp
-100003a4:	8ca5802c 	lw	a1,-32724\(a1\)
+100003a4:	8ca58030 	lw	a1,-32720\(a1\)
 100003a8:	8ca50000 	lw	a1,0\(a1\)
 100003ac:	3c050000 	lui	a1,0x0
 100003b0:	00bc2821 	addu	a1,a1,gp
-100003b4:	8ca5802c 	lw	a1,-32724\(a1\)
+100003b4:	8ca58030 	lw	a1,-32720\(a1\)
 100003b8:	8ca5000c 	lw	a1,12\(a1\)
 100003bc:	3c050000 	lui	a1,0x0
 100003c0:	00bc2821 	addu	a1,a1,gp
-100003c4:	8ca5802c 	lw	a1,-32724\(a1\)
+100003c4:	8ca58030 	lw	a1,-32720\(a1\)
 100003c8:	00b12821 	addu	a1,a1,s1
 100003cc:	8ca50000 	lw	a1,0\(a1\)
 100003d0:	3c050000 	lui	a1,0x0
 100003d4:	00bc2821 	addu	a1,a1,gp
-100003d8:	8ca5802c 	lw	a1,-32724\(a1\)
+100003d8:	8ca58030 	lw	a1,-32720\(a1\)
 100003dc:	00b12821 	addu	a1,a1,s1
 100003e0:	8ca5000c 	lw	a1,12\(a1\)
 100003e4:	3c010000 	lui	at,0x0
 100003e8:	003c0821 	addu	at,at,gp
-100003ec:	8c21802c 	lw	at,-32724\(at\)
+100003ec:	8c218030 	lw	at,-32720\(at\)
 100003f0:	00250821 	addu	at,at,a1
 100003f4:	8c250022 	lw	a1,34\(at\)
 100003f8:	3c010000 	lui	at,0x0
 100003fc:	003c0821 	addu	at,at,gp
-10000400:	8c21802c 	lw	at,-32724\(at\)
+10000400:	8c218030 	lw	at,-32720\(at\)
 10000404:	00250821 	addu	at,at,a1
 10000408:	ac250038 	sw	a1,56\(at\)
 1000040c:	3c010000 	lui	at,0x0
 10000410:	003c0821 	addu	at,at,gp
-10000414:	8c21802c 	lw	at,-32724\(at\)
+10000414:	8c218030 	lw	at,-32720\(at\)
 10000418:	88250000 	lwl	a1,0\(at\)
 1000041c:	98250003 	lwr	a1,3\(at\)
 10000420:	3c010000 	lui	at,0x0
 10000424:	003c0821 	addu	at,at,gp
-10000428:	8c21802c 	lw	at,-32724\(at\)
+10000428:	8c218030 	lw	at,-32720\(at\)
 1000042c:	2421000c 	addiu	at,at,12
 10000430:	88250000 	lwl	a1,0\(at\)
 10000434:	98250003 	lwr	a1,3\(at\)
 10000438:	3c010000 	lui	at,0x0
 1000043c:	003c0821 	addu	at,at,gp
-10000440:	8c21802c 	lw	at,-32724\(at\)
+10000440:	8c218030 	lw	at,-32720\(at\)
 10000444:	00310821 	addu	at,at,s1
 10000448:	88250000 	lwl	a1,0\(at\)
 1000044c:	98250003 	lwr	a1,3\(at\)
 10000450:	3c010000 	lui	at,0x0
 10000454:	003c0821 	addu	at,at,gp
-10000458:	8c21802c 	lw	at,-32724\(at\)
+10000458:	8c218030 	lw	at,-32720\(at\)
 1000045c:	2421000c 	addiu	at,at,12
 10000460:	00310821 	addu	at,at,s1
 10000464:	88250000 	lwl	a1,0\(at\)
 10000468:	98250003 	lwr	a1,3\(at\)
 1000046c:	3c010000 	lui	at,0x0
 10000470:	003c0821 	addu	at,at,gp
-10000474:	8c21802c 	lw	at,-32724\(at\)
+10000474:	8c218030 	lw	at,-32720\(at\)
 10000478:	24210022 	addiu	at,at,34
 1000047c:	00250821 	addu	at,at,a1
 10000480:	88250000 	lwl	a1,0\(at\)
 10000484:	98250003 	lwr	a1,3\(at\)
 10000488:	3c010000 	lui	at,0x0
 1000048c:	003c0821 	addu	at,at,gp
-10000490:	8c21802c 	lw	at,-32724\(at\)
+10000490:	8c218030 	lw	at,-32720\(at\)
 10000494:	24210038 	addiu	at,at,56
 10000498:	00250821 	addu	at,at,a1
 1000049c:	a8250000 	swl	a1,0\(at\)
 100004a0:	b8250003 	swr	a1,3\(at\)
-100004a4:	8f85801c 	lw	a1,-32740\(gp\)
+100004a4:	8f858018 	lw	a1,-32744\(gp\)
 100004a8:	24a50730 	addiu	a1,a1,1840
-100004ac:	8f85801c 	lw	a1,-32740\(gp\)
+100004ac:	8f858018 	lw	a1,-32744\(gp\)
 100004b0:	24a5073c 	addiu	a1,a1,1852
-100004b4:	8f858020 	lw	a1,-32736\(gp\)
+100004b4:	8f85801c 	lw	a1,-32740\(gp\)
 100004b8:	24a5e970 	addiu	a1,a1,-5776
-100004bc:	8f85801c 	lw	a1,-32740\(gp\)
+100004bc:	8f858018 	lw	a1,-32744\(gp\)
 100004c0:	24a50730 	addiu	a1,a1,1840
 100004c4:	00b12821 	addu	a1,a1,s1
-100004c8:	8f85801c 	lw	a1,-32740\(gp\)
+100004c8:	8f858018 	lw	a1,-32744\(gp\)
 100004cc:	24a5073c 	addiu	a1,a1,1852
 100004d0:	00b12821 	addu	a1,a1,s1
-100004d4:	8f858020 	lw	a1,-32736\(gp\)
+100004d4:	8f85801c 	lw	a1,-32740\(gp\)
 100004d8:	24a5e970 	addiu	a1,a1,-5776
 100004dc:	00b12821 	addu	a1,a1,s1
-100004e0:	8f85801c 	lw	a1,-32740\(gp\)
+100004e0:	8f858018 	lw	a1,-32744\(gp\)
 100004e4:	8ca50730 	lw	a1,1840\(a1\)
-100004e8:	8f85801c 	lw	a1,-32740\(gp\)
+100004e8:	8f858018 	lw	a1,-32744\(gp\)
 100004ec:	8ca5073c 	lw	a1,1852\(a1\)
-100004f0:	8f85801c 	lw	a1,-32740\(gp\)
+100004f0:	8f858018 	lw	a1,-32744\(gp\)
 100004f4:	00b12821 	addu	a1,a1,s1
 100004f8:	8ca50730 	lw	a1,1840\(a1\)
-100004fc:	8f85801c 	lw	a1,-32740\(gp\)
+100004fc:	8f858018 	lw	a1,-32744\(gp\)
 10000500:	00b12821 	addu	a1,a1,s1
 10000504:	8ca5073c 	lw	a1,1852\(a1\)
-10000508:	8f81801c 	lw	at,-32740\(gp\)
+10000508:	8f818018 	lw	at,-32744\(gp\)
 1000050c:	00250821 	addu	at,at,a1
 10000510:	8c250752 	lw	a1,1874\(at\)
-10000514:	8f81801c 	lw	at,-32740\(gp\)
+10000514:	8f818018 	lw	at,-32744\(gp\)
 10000518:	00250821 	addu	at,at,a1
 1000051c:	ac250768 	sw	a1,1896\(at\)
-10000520:	8f81801c 	lw	at,-32740\(gp\)
+10000520:	8f818018 	lw	at,-32744\(gp\)
 10000524:	24210730 	addiu	at,at,1840
 10000528:	88250000 	lwl	a1,0\(at\)
 1000052c:	98250003 	lwr	a1,3\(at\)
-10000530:	8f81801c 	lw	at,-32740\(gp\)
+10000530:	8f818018 	lw	at,-32744\(gp\)
 10000534:	2421073c 	addiu	at,at,1852
 10000538:	88250000 	lwl	a1,0\(at\)
 1000053c:	98250003 	lwr	a1,3\(at\)
-10000540:	8f81801c 	lw	at,-32740\(gp\)
+10000540:	8f818018 	lw	at,-32744\(gp\)
 10000544:	24210730 	addiu	at,at,1840
 10000548:	00310821 	addu	at,at,s1
 1000054c:	88250000 	lwl	a1,0\(at\)
 10000550:	98250003 	lwr	a1,3\(at\)
-10000554:	8f81801c 	lw	at,-32740\(gp\)
+10000554:	8f818018 	lw	at,-32744\(gp\)
 10000558:	2421073c 	addiu	at,at,1852
 1000055c:	00310821 	addu	at,at,s1
 10000560:	88250000 	lwl	a1,0\(at\)
 10000564:	98250003 	lwr	a1,3\(at\)
-10000568:	8f81801c 	lw	at,-32740\(gp\)
+10000568:	8f818018 	lw	at,-32744\(gp\)
 1000056c:	24210752 	addiu	at,at,1874
 10000570:	00250821 	addu	at,at,a1
 10000574:	88250000 	lwl	a1,0\(at\)
 10000578:	98250003 	lwr	a1,3\(at\)
-1000057c:	8f81801c 	lw	at,-32740\(gp\)
+1000057c:	8f818018 	lw	at,-32744\(gp\)
 10000580:	24210768 	addiu	at,at,1896
 10000584:	00250821 	addu	at,at,a1
 10000588:	a8250000 	swl	a1,0\(at\)
 1000058c:	b8250003 	swr	a1,3\(at\)
 10000590:	3c050000 	lui	a1,0x0
 10000594:	00bc2821 	addu	a1,a1,gp
-10000598:	8ca58030 	lw	a1,-32720\(a1\)
-1000059c:	8f858028 	lw	a1,-32728\(gp\)
+10000598:	8ca5802c 	lw	a1,-32724\(a1\)
+1000059c:	8f858020 	lw	a1,-32736\(gp\)
 100005a0:	24a50674 	addiu	a1,a1,1652
 100005a4:	3c190000 	lui	t9,0x0
 100005a8:	033cc821 	addu	t9,t9,gp
-100005ac:	8f398030 	lw	t9,-32720\(t9\)
-100005b0:	8f998028 	lw	t9,-32728\(gp\)
+100005ac:	8f39802c 	lw	t9,-32724\(t9\)
+100005b0:	8f998020 	lw	t9,-32736\(gp\)
 100005b4:	27390674 	addiu	t9,t9,1652
 100005b8:	3c190000 	lui	t9,0x0
 100005bc:	033cc821 	addu	t9,t9,gp
-100005c0:	8f398030 	lw	t9,-32720\(t9\)
+100005c0:	8f39802c 	lw	t9,-32724\(t9\)
 100005c4:	0411002b 	bal	10000674 <fn2>
 100005c8:	00000000 	nop
-100005cc:	8f998028 	lw	t9,-32728\(gp\)
+100005cc:	8f998020 	lw	t9,-32736\(gp\)
 100005d0:	27390674 	addiu	t9,t9,1652
 100005d4:	04110027 	bal	10000674 <fn2>
 100005d8:	00000000 	nop
 100005dc:	3c050000 	lui	a1,0x0
 100005e0:	00bc2821 	addu	a1,a1,gp
-100005e4:	8ca58018 	lw	a1,-32744\(a1\)
+100005e4:	8ca58038 	lw	a1,-32712\(a1\)
 100005e8:	1000fea2 	b	10000074 <fn>
 100005ec:	00000000 	nop
 100005f0:	3c050000 	lui	a1,0x0
 100005f4:	00bc2821 	addu	a1,a1,gp
-100005f8:	8ca5802c 	lw	a1,-32724\(a1\)
+100005f8:	8ca58030 	lw	a1,-32720\(a1\)
 100005fc:	8ca50000 	lw	a1,0\(a1\)
 10000600:	1000001c 	b	10000674 <fn2>
 10000604:	00000000 	nop
-10000608:	8f85801c 	lw	a1,-32740\(gp\)
+10000608:	8f858018 	lw	a1,-32744\(gp\)
 1000060c:	24a506b8 	addiu	a1,a1,1720
 10000610:	1000fe98 	b	10000074 <fn>
 10000614:	00000000 	nop
-10000618:	8f85801c 	lw	a1,-32740\(gp\)
+10000618:	8f858018 	lw	a1,-32744\(gp\)
 1000061c:	24a5073c 	addiu	a1,a1,1852
 10000620:	10000014 	b	10000674 <fn2>
 10000624:	00000000 	nop
-10000628:	8f858020 	lw	a1,-32736\(gp\)
+10000628:	8f85801c 	lw	a1,-32740\(gp\)
 1000062c:	24a5e8f8 	addiu	a1,a1,-5896
 10000630:	1000fe90 	b	10000074 <fn>
 10000634:	00000000 	nop
-10000638:	8f85801c 	lw	a1,-32740\(gp\)
+10000638:	8f858018 	lw	a1,-32744\(gp\)
 1000063c:	8ca50730 	lw	a1,1840\(a1\)
 10000640:	1000000c 	b	10000674 <fn2>
 10000644:	00000000 	nop
-10000648:	8f85801c 	lw	a1,-32740\(gp\)
+10000648:	8f858018 	lw	a1,-32744\(gp\)
 1000064c:	8ca506c4 	lw	a1,1732\(a1\)
 10000650:	1000fe88 	b	10000074 <fn>
 10000654:	00000000 	nop
-10000658:	8f81801c 	lw	at,-32740\(gp\)
+10000658:	8f818018 	lw	at,-32744\(gp\)
 1000065c:	00250821 	addu	at,at,a1
 10000660:	8c250752 	lw	a1,1874\(at\)
 10000664:	10000003 	b	10000674 <fn2>
@@ -422,13 +422,13 @@ Disassembly of section \.got:
 10010770 <_GLOBAL_OFFSET_TABLE_>:
 10010770:	00000000 	.*
 10010774:	80000000 	.*
-10010778:	100106b8 	.*
-1001077c:	10010000 	.*
-10010780:	10030000 	.*
-10010784:	10000074 	.*
-10010788:	10000000 	.*
-1001078c:	10010730 	.*
-10010790:	10000674 	.*
-10010794:	00000000 	.*
-10010798:	00000000 	.*
+10010778:	10010000 	.*
+1001077c:	10030000 	.*
+10010780:	10000000 	.*
+10010784:	00000000 	.*
+10010788:	00000000 	.*
+1001078c:	10000674 	.*
+10010790:	10010730 	.*
+10010794:	10000074 	.*
+10010798:	100106b8 	.*
 #pass
diff --git a/ld/testsuite/ld-mips-elf/elf-rel-xgot-n32.d b/ld/testsuite/ld-mips-elf/elf-rel-xgot-n32.d
index 4e105aa..a909aa9 100644
--- a/ld/testsuite/ld-mips-elf/elf-rel-xgot-n32.d
+++ b/ld/testsuite/ld-mips-elf/elf-rel-xgot-n32.d
@@ -18,382 +18,382 @@ Disassembly of section \.text:
 100000b0 <fn>:
 100000b0:	3c050000 	lui	a1,0x0
 100000b4:	00bc2821 	addu	a1,a1,gp
-100000b8:	8ca58018 	lw	a1,-32744\(a1\)
+100000b8:	8ca58038 	lw	a1,-32712\(a1\)
 100000bc:	3c050000 	lui	a1,0x0
 100000c0:	00bc2821 	addu	a1,a1,gp
-100000c4:	8ca58018 	lw	a1,-32744\(a1\)
+100000c4:	8ca58038 	lw	a1,-32712\(a1\)
 100000c8:	24a5000c 	addiu	a1,a1,12
 100000cc:	3c050000 	lui	a1,0x0
 100000d0:	00bc2821 	addu	a1,a1,gp
-100000d4:	8ca58018 	lw	a1,-32744\(a1\)
+100000d4:	8ca58038 	lw	a1,-32712\(a1\)
 100000d8:	3c010001 	lui	at,0x1
 100000dc:	3421e240 	ori	at,at,0xe240
 100000e0:	00a12821 	addu	a1,a1,at
 100000e4:	3c050000 	lui	a1,0x0
 100000e8:	00bc2821 	addu	a1,a1,gp
-100000ec:	8ca58018 	lw	a1,-32744\(a1\)
+100000ec:	8ca58038 	lw	a1,-32712\(a1\)
 100000f0:	00b12821 	addu	a1,a1,s1
 100000f4:	3c050000 	lui	a1,0x0
 100000f8:	00bc2821 	addu	a1,a1,gp
-100000fc:	8ca58018 	lw	a1,-32744\(a1\)
+100000fc:	8ca58038 	lw	a1,-32712\(a1\)
 10000100:	24a5000c 	addiu	a1,a1,12
 10000104:	00b12821 	addu	a1,a1,s1
 10000108:	3c050000 	lui	a1,0x0
 1000010c:	00bc2821 	addu	a1,a1,gp
-10000110:	8ca58018 	lw	a1,-32744\(a1\)
+10000110:	8ca58038 	lw	a1,-32712\(a1\)
 10000114:	3c010001 	lui	at,0x1
 10000118:	3421e240 	ori	at,at,0xe240
 1000011c:	00a12821 	addu	a1,a1,at
 10000120:	00b12821 	addu	a1,a1,s1
 10000124:	3c050000 	lui	a1,0x0
 10000128:	00bc2821 	addu	a1,a1,gp
-1000012c:	8ca58018 	lw	a1,-32744\(a1\)
+1000012c:	8ca58038 	lw	a1,-32712\(a1\)
 10000130:	8ca50000 	lw	a1,0\(a1\)
 10000134:	3c050000 	lui	a1,0x0
 10000138:	00bc2821 	addu	a1,a1,gp
-1000013c:	8ca58018 	lw	a1,-32744\(a1\)
+1000013c:	8ca58038 	lw	a1,-32712\(a1\)
 10000140:	8ca5000c 	lw	a1,12\(a1\)
 10000144:	3c050000 	lui	a1,0x0
 10000148:	00bc2821 	addu	a1,a1,gp
-1000014c:	8ca58018 	lw	a1,-32744\(a1\)
+1000014c:	8ca58038 	lw	a1,-32712\(a1\)
 10000150:	00b12821 	addu	a1,a1,s1
 10000154:	8ca50000 	lw	a1,0\(a1\)
 10000158:	3c050000 	lui	a1,0x0
 1000015c:	00bc2821 	addu	a1,a1,gp
-10000160:	8ca58018 	lw	a1,-32744\(a1\)
+10000160:	8ca58038 	lw	a1,-32712\(a1\)
 10000164:	00b12821 	addu	a1,a1,s1
 10000168:	8ca5000c 	lw	a1,12\(a1\)
 1000016c:	3c010000 	lui	at,0x0
 10000170:	003c0821 	addu	at,at,gp
-10000174:	8c218018 	lw	at,-32744\(at\)
+10000174:	8c218038 	lw	at,-32712\(at\)
 10000178:	00250821 	addu	at,at,a1
 1000017c:	8c250022 	lw	a1,34\(at\)
 10000180:	3c010000 	lui	at,0x0
 10000184:	003c0821 	addu	at,at,gp
-10000188:	8c218018 	lw	at,-32744\(at\)
+10000188:	8c218038 	lw	at,-32712\(at\)
 1000018c:	00250821 	addu	at,at,a1
 10000190:	ac250038 	sw	a1,56\(at\)
 10000194:	3c010000 	lui	at,0x0
 10000198:	003c0821 	addu	at,at,gp
-1000019c:	8c218018 	lw	at,-32744\(at\)
+1000019c:	8c218038 	lw	at,-32712\(at\)
 100001a0:	88250000 	lwl	a1,0\(at\)
 100001a4:	98250003 	lwr	a1,3\(at\)
 100001a8:	3c010000 	lui	at,0x0
 100001ac:	003c0821 	addu	at,at,gp
-100001b0:	8c218018 	lw	at,-32744\(at\)
+100001b0:	8c218038 	lw	at,-32712\(at\)
 100001b4:	2421000c 	addiu	at,at,12
 100001b8:	88250000 	lwl	a1,0\(at\)
 100001bc:	98250003 	lwr	a1,3\(at\)
 100001c0:	3c010000 	lui	at,0x0
 100001c4:	003c0821 	addu	at,at,gp
-100001c8:	8c218018 	lw	at,-32744\(at\)
+100001c8:	8c218038 	lw	at,-32712\(at\)
 100001cc:	00310821 	addu	at,at,s1
 100001d0:	88250000 	lwl	a1,0\(at\)
 100001d4:	98250003 	lwr	a1,3\(at\)
 100001d8:	3c010000 	lui	at,0x0
 100001dc:	003c0821 	addu	at,at,gp
-100001e0:	8c218018 	lw	at,-32744\(at\)
+100001e0:	8c218038 	lw	at,-32712\(at\)
 100001e4:	2421000c 	addiu	at,at,12
 100001e8:	00310821 	addu	at,at,s1
 100001ec:	88250000 	lwl	a1,0\(at\)
 100001f0:	98250003 	lwr	a1,3\(at\)
 100001f4:	3c010000 	lui	at,0x0
 100001f8:	003c0821 	addu	at,at,gp
-100001fc:	8c218018 	lw	at,-32744\(at\)
+100001fc:	8c218038 	lw	at,-32712\(at\)
 10000200:	24210022 	addiu	at,at,34
 10000204:	00250821 	addu	at,at,a1
 10000208:	88250000 	lwl	a1,0\(at\)
 1000020c:	98250003 	lwr	a1,3\(at\)
 10000210:	3c010000 	lui	at,0x0
 10000214:	003c0821 	addu	at,at,gp
-10000218:	8c218018 	lw	at,-32744\(at\)
+10000218:	8c218038 	lw	at,-32712\(at\)
 1000021c:	24210038 	addiu	at,at,56
 10000220:	00250821 	addu	at,at,a1
 10000224:	a8250000 	swl	a1,0\(at\)
 10000228:	b8250003 	swr	a1,3\(at\)
-1000022c:	8f85801c 	lw	a1,-32740\(gp\)
+1000022c:	8f858018 	lw	a1,-32744\(gp\)
 10000230:	24a506fc 	addiu	a1,a1,1788
-10000234:	8f85801c 	lw	a1,-32740\(gp\)
+10000234:	8f858018 	lw	a1,-32744\(gp\)
 10000238:	24a50708 	addiu	a1,a1,1800
-1000023c:	8f858020 	lw	a1,-32736\(gp\)
+1000023c:	8f85801c 	lw	a1,-32740\(gp\)
 10000240:	24a5e93c 	addiu	a1,a1,-5828
-10000244:	8f85801c 	lw	a1,-32740\(gp\)
+10000244:	8f858018 	lw	a1,-32744\(gp\)
 10000248:	24a506fc 	addiu	a1,a1,1788
 1000024c:	00b12821 	addu	a1,a1,s1
-10000250:	8f85801c 	lw	a1,-32740\(gp\)
+10000250:	8f858018 	lw	a1,-32744\(gp\)
 10000254:	24a50708 	addiu	a1,a1,1800
 10000258:	00b12821 	addu	a1,a1,s1
-1000025c:	8f858020 	lw	a1,-32736\(gp\)
+1000025c:	8f85801c 	lw	a1,-32740\(gp\)
 10000260:	24a5e93c 	addiu	a1,a1,-5828
 10000264:	00b12821 	addu	a1,a1,s1
-10000268:	8f85801c 	lw	a1,-32740\(gp\)
+10000268:	8f858018 	lw	a1,-32744\(gp\)
 1000026c:	8ca506fc 	lw	a1,1788\(a1\)
-10000270:	8f85801c 	lw	a1,-32740\(gp\)
+10000270:	8f858018 	lw	a1,-32744\(gp\)
 10000274:	8ca50708 	lw	a1,1800\(a1\)
-10000278:	8f85801c 	lw	a1,-32740\(gp\)
+10000278:	8f858018 	lw	a1,-32744\(gp\)
 1000027c:	00b12821 	addu	a1,a1,s1
 10000280:	8ca506fc 	lw	a1,1788\(a1\)
-10000284:	8f85801c 	lw	a1,-32740\(gp\)
+10000284:	8f858018 	lw	a1,-32744\(gp\)
 10000288:	00b12821 	addu	a1,a1,s1
 1000028c:	8ca50708 	lw	a1,1800\(a1\)
-10000290:	8f81801c 	lw	at,-32740\(gp\)
+10000290:	8f818018 	lw	at,-32744\(gp\)
 10000294:	00250821 	addu	at,at,a1
 10000298:	8c25071e 	lw	a1,1822\(at\)
-1000029c:	8f81801c 	lw	at,-32740\(gp\)
+1000029c:	8f818018 	lw	at,-32744\(gp\)
 100002a0:	00250821 	addu	at,at,a1
 100002a4:	ac250734 	sw	a1,1844\(at\)
-100002a8:	8f81801c 	lw	at,-32740\(gp\)
+100002a8:	8f818018 	lw	at,-32744\(gp\)
 100002ac:	242106fc 	addiu	at,at,1788
 100002b0:	88250000 	lwl	a1,0\(at\)
 100002b4:	98250003 	lwr	a1,3\(at\)
-100002b8:	8f81801c 	lw	at,-32740\(gp\)
+100002b8:	8f818018 	lw	at,-32744\(gp\)
 100002bc:	24210708 	addiu	at,at,1800
 100002c0:	88250000 	lwl	a1,0\(at\)
 100002c4:	98250003 	lwr	a1,3\(at\)
-100002c8:	8f81801c 	lw	at,-32740\(gp\)
+100002c8:	8f818018 	lw	at,-32744\(gp\)
 100002cc:	242106fc 	addiu	at,at,1788
 100002d0:	00310821 	addu	at,at,s1
 100002d4:	88250000 	lwl	a1,0\(at\)
 100002d8:	98250003 	lwr	a1,3\(at\)
-100002dc:	8f81801c 	lw	at,-32740\(gp\)
+100002dc:	8f818018 	lw	at,-32744\(gp\)
 100002e0:	24210708 	addiu	at,at,1800
 100002e4:	00310821 	addu	at,at,s1
 100002e8:	88250000 	lwl	a1,0\(at\)
 100002ec:	98250003 	lwr	a1,3\(at\)
-100002f0:	8f81801c 	lw	at,-32740\(gp\)
+100002f0:	8f818018 	lw	at,-32744\(gp\)
 100002f4:	2421071e 	addiu	at,at,1822
 100002f8:	00250821 	addu	at,at,a1
 100002fc:	88250000 	lwl	a1,0\(at\)
 10000300:	98250003 	lwr	a1,3\(at\)
-10000304:	8f81801c 	lw	at,-32740\(gp\)
+10000304:	8f818018 	lw	at,-32744\(gp\)
 10000308:	24210734 	addiu	at,at,1844
 1000030c:	00250821 	addu	at,at,a1
 10000310:	a8250000 	swl	a1,0\(at\)
 10000314:	b8250003 	swr	a1,3\(at\)
 10000318:	3c050000 	lui	a1,0x0
 1000031c:	00bc2821 	addu	a1,a1,gp
-10000320:	8ca58024 	lw	a1,-32732\(a1\)
-10000324:	8f858028 	lw	a1,-32728\(gp\)
+10000320:	8ca58034 	lw	a1,-32716\(a1\)
+10000324:	8f858020 	lw	a1,-32736\(gp\)
 10000328:	24a500b0 	addiu	a1,a1,176
 1000032c:	3c190000 	lui	t9,0x0
 10000330:	033cc821 	addu	t9,t9,gp
-10000334:	8f398024 	lw	t9,-32732\(t9\)
-10000338:	8f998028 	lw	t9,-32728\(gp\)
+10000334:	8f398034 	lw	t9,-32716\(t9\)
+10000338:	8f998020 	lw	t9,-32736\(gp\)
 1000033c:	273900b0 	addiu	t9,t9,176
 10000340:	3c190000 	lui	t9,0x0
 10000344:	033cc821 	addu	t9,t9,gp
-10000348:	8f398024 	lw	t9,-32732\(t9\)
+10000348:	8f398034 	lw	t9,-32716\(t9\)
 1000034c:	0411ff58 	bal	100000b0 <fn>
 10000350:	00000000 	nop
-10000354:	8f998028 	lw	t9,-32728\(gp\)
+10000354:	8f998020 	lw	t9,-32736\(gp\)
 10000358:	273900b0 	addiu	t9,t9,176
 1000035c:	0411ff54 	bal	100000b0 <fn>
 10000360:	00000000 	nop
 10000364:	3c050000 	lui	a1,0x0
 10000368:	00bc2821 	addu	a1,a1,gp
-1000036c:	8ca5802c 	lw	a1,-32724\(a1\)
+1000036c:	8ca58030 	lw	a1,-32720\(a1\)
 10000370:	3c050000 	lui	a1,0x0
 10000374:	00bc2821 	addu	a1,a1,gp
-10000378:	8ca5802c 	lw	a1,-32724\(a1\)
+10000378:	8ca58030 	lw	a1,-32720\(a1\)
 1000037c:	24a5000c 	addiu	a1,a1,12
 10000380:	3c050000 	lui	a1,0x0
 10000384:	00bc2821 	addu	a1,a1,gp
-10000388:	8ca5802c 	lw	a1,-32724\(a1\)
+10000388:	8ca58030 	lw	a1,-32720\(a1\)
 1000038c:	3c010001 	lui	at,0x1
 10000390:	3421e240 	ori	at,at,0xe240
 10000394:	00a12821 	addu	a1,a1,at
 10000398:	3c050000 	lui	a1,0x0
 1000039c:	00bc2821 	addu	a1,a1,gp
-100003a0:	8ca5802c 	lw	a1,-32724\(a1\)
+100003a0:	8ca58030 	lw	a1,-32720\(a1\)
 100003a4:	00b12821 	addu	a1,a1,s1
 100003a8:	3c050000 	lui	a1,0x0
 100003ac:	00bc2821 	addu	a1,a1,gp
-100003b0:	8ca5802c 	lw	a1,-32724\(a1\)
+100003b0:	8ca58030 	lw	a1,-32720\(a1\)
 100003b4:	24a5000c 	addiu	a1,a1,12
 100003b8:	00b12821 	addu	a1,a1,s1
 100003bc:	3c050000 	lui	a1,0x0
 100003c0:	00bc2821 	addu	a1,a1,gp
-100003c4:	8ca5802c 	lw	a1,-32724\(a1\)
+100003c4:	8ca58030 	lw	a1,-32720\(a1\)
 100003c8:	3c010001 	lui	at,0x1
 100003cc:	3421e240 	ori	at,at,0xe240
 100003d0:	00a12821 	addu	a1,a1,at
 100003d4:	00b12821 	addu	a1,a1,s1
 100003d8:	3c050000 	lui	a1,0x0
 100003dc:	00bc2821 	addu	a1,a1,gp
-100003e0:	8ca5802c 	lw	a1,-32724\(a1\)
+100003e0:	8ca58030 	lw	a1,-32720\(a1\)
 100003e4:	8ca50000 	lw	a1,0\(a1\)
 100003e8:	3c050000 	lui	a1,0x0
 100003ec:	00bc2821 	addu	a1,a1,gp
-100003f0:	8ca5802c 	lw	a1,-32724\(a1\)
+100003f0:	8ca58030 	lw	a1,-32720\(a1\)
 100003f4:	8ca5000c 	lw	a1,12\(a1\)
 100003f8:	3c050000 	lui	a1,0x0
 100003fc:	00bc2821 	addu	a1,a1,gp
-10000400:	8ca5802c 	lw	a1,-32724\(a1\)
+10000400:	8ca58030 	lw	a1,-32720\(a1\)
 10000404:	00b12821 	addu	a1,a1,s1
 10000408:	8ca50000 	lw	a1,0\(a1\)
 1000040c:	3c050000 	lui	a1,0x0
 10000410:	00bc2821 	addu	a1,a1,gp
-10000414:	8ca5802c 	lw	a1,-32724\(a1\)
+10000414:	8ca58030 	lw	a1,-32720\(a1\)
 10000418:	00b12821 	addu	a1,a1,s1
 1000041c:	8ca5000c 	lw	a1,12\(a1\)
 10000420:	3c010000 	lui	at,0x0
 10000424:	003c0821 	addu	at,at,gp
-10000428:	8c21802c 	lw	at,-32724\(at\)
+10000428:	8c218030 	lw	at,-32720\(at\)
 1000042c:	00250821 	addu	at,at,a1
 10000430:	8c250022 	lw	a1,34\(at\)
 10000434:	3c010000 	lui	at,0x0
 10000438:	003c0821 	addu	at,at,gp
-1000043c:	8c21802c 	lw	at,-32724\(at\)
+1000043c:	8c218030 	lw	at,-32720\(at\)
 10000440:	00250821 	addu	at,at,a1
 10000444:	ac250038 	sw	a1,56\(at\)
 10000448:	3c010000 	lui	at,0x0
 1000044c:	003c0821 	addu	at,at,gp
-10000450:	8c21802c 	lw	at,-32724\(at\)
+10000450:	8c218030 	lw	at,-32720\(at\)
 10000454:	88250000 	lwl	a1,0\(at\)
 10000458:	98250003 	lwr	a1,3\(at\)
 1000045c:	3c010000 	lui	at,0x0
 10000460:	003c0821 	addu	at,at,gp
-10000464:	8c21802c 	lw	at,-32724\(at\)
+10000464:	8c218030 	lw	at,-32720\(at\)
 10000468:	2421000c 	addiu	at,at,12
 1000046c:	88250000 	lwl	a1,0\(at\)
 10000470:	98250003 	lwr	a1,3\(at\)
 10000474:	3c010000 	lui	at,0x0
 10000478:	003c0821 	addu	at,at,gp
-1000047c:	8c21802c 	lw	at,-32724\(at\)
+1000047c:	8c218030 	lw	at,-32720\(at\)
 10000480:	00310821 	addu	at,at,s1
 10000484:	88250000 	lwl	a1,0\(at\)
 10000488:	98250003 	lwr	a1,3\(at\)
 1000048c:	3c010000 	lui	at,0x0
 10000490:	003c0821 	addu	at,at,gp
-10000494:	8c21802c 	lw	at,-32724\(at\)
+10000494:	8c218030 	lw	at,-32720\(at\)
 10000498:	2421000c 	addiu	at,at,12
 1000049c:	00310821 	addu	at,at,s1
 100004a0:	88250000 	lwl	a1,0\(at\)
 100004a4:	98250003 	lwr	a1,3\(at\)
 100004a8:	3c010000 	lui	at,0x0
 100004ac:	003c0821 	addu	at,at,gp
-100004b0:	8c21802c 	lw	at,-32724\(at\)
+100004b0:	8c218030 	lw	at,-32720\(at\)
 100004b4:	24210022 	addiu	at,at,34
 100004b8:	00250821 	addu	at,at,a1
 100004bc:	88250000 	lwl	a1,0\(at\)
 100004c0:	98250003 	lwr	a1,3\(at\)
 100004c4:	3c010000 	lui	at,0x0
 100004c8:	003c0821 	addu	at,at,gp
-100004cc:	8c21802c 	lw	at,-32724\(at\)
+100004cc:	8c218030 	lw	at,-32720\(at\)
 100004d0:	24210038 	addiu	at,at,56
 100004d4:	00250821 	addu	at,at,a1
 100004d8:	a8250000 	swl	a1,0\(at\)
 100004dc:	b8250003 	swr	a1,3\(at\)
-100004e0:	8f85801c 	lw	a1,-32740\(gp\)
+100004e0:	8f858018 	lw	a1,-32744\(gp\)
 100004e4:	24a50774 	addiu	a1,a1,1908
-100004e8:	8f85801c 	lw	a1,-32740\(gp\)
+100004e8:	8f858018 	lw	a1,-32744\(gp\)
 100004ec:	24a50780 	addiu	a1,a1,1920
-100004f0:	8f858020 	lw	a1,-32736\(gp\)
+100004f0:	8f85801c 	lw	a1,-32740\(gp\)
 100004f4:	24a5e9b4 	addiu	a1,a1,-5708
-100004f8:	8f85801c 	lw	a1,-32740\(gp\)
+100004f8:	8f858018 	lw	a1,-32744\(gp\)
 100004fc:	24a50774 	addiu	a1,a1,1908
 10000500:	00b12821 	addu	a1,a1,s1
-10000504:	8f85801c 	lw	a1,-32740\(gp\)
+10000504:	8f858018 	lw	a1,-32744\(gp\)
 10000508:	24a50780 	addiu	a1,a1,1920
 1000050c:	00b12821 	addu	a1,a1,s1
-10000510:	8f858020 	lw	a1,-32736\(gp\)
+10000510:	8f85801c 	lw	a1,-32740\(gp\)
 10000514:	24a5e9b4 	addiu	a1,a1,-5708
 10000518:	00b12821 	addu	a1,a1,s1
-1000051c:	8f85801c 	lw	a1,-32740\(gp\)
+1000051c:	8f858018 	lw	a1,-32744\(gp\)
 10000520:	8ca50774 	lw	a1,1908\(a1\)
-10000524:	8f85801c 	lw	a1,-32740\(gp\)
+10000524:	8f858018 	lw	a1,-32744\(gp\)
 10000528:	8ca50780 	lw	a1,1920\(a1\)
-1000052c:	8f85801c 	lw	a1,-32740\(gp\)
+1000052c:	8f858018 	lw	a1,-32744\(gp\)
 10000530:	00b12821 	addu	a1,a1,s1
 10000534:	8ca50774 	lw	a1,1908\(a1\)
-10000538:	8f85801c 	lw	a1,-32740\(gp\)
+10000538:	8f858018 	lw	a1,-32744\(gp\)
 1000053c:	00b12821 	addu	a1,a1,s1
 10000540:	8ca50780 	lw	a1,1920\(a1\)
-10000544:	8f81801c 	lw	at,-32740\(gp\)
+10000544:	8f818018 	lw	at,-32744\(gp\)
 10000548:	00250821 	addu	at,at,a1
 1000054c:	8c250796 	lw	a1,1942\(at\)
-10000550:	8f81801c 	lw	at,-32740\(gp\)
+10000550:	8f818018 	lw	at,-32744\(gp\)
 10000554:	00250821 	addu	at,at,a1
 10000558:	ac2507ac 	sw	a1,1964\(at\)
-1000055c:	8f81801c 	lw	at,-32740\(gp\)
+1000055c:	8f818018 	lw	at,-32744\(gp\)
 10000560:	24210774 	addiu	at,at,1908
 10000564:	88250000 	lwl	a1,0\(at\)
 10000568:	98250003 	lwr	a1,3\(at\)
-1000056c:	8f81801c 	lw	at,-32740\(gp\)
+1000056c:	8f818018 	lw	at,-32744\(gp\)
 10000570:	24210780 	addiu	at,at,1920
 10000574:	88250000 	lwl	a1,0\(at\)
 10000578:	98250003 	lwr	a1,3\(at\)
-1000057c:	8f81801c 	lw	at,-32740\(gp\)
+1000057c:	8f818018 	lw	at,-32744\(gp\)
 10000580:	24210774 	addiu	at,at,1908
 10000584:	00310821 	addu	at,at,s1
 10000588:	88250000 	lwl	a1,0\(at\)
 1000058c:	98250003 	lwr	a1,3\(at\)
-10000590:	8f81801c 	lw	at,-32740\(gp\)
+10000590:	8f818018 	lw	at,-32744\(gp\)
 10000594:	24210780 	addiu	at,at,1920
 10000598:	00310821 	addu	at,at,s1
 1000059c:	88250000 	lwl	a1,0\(at\)
 100005a0:	98250003 	lwr	a1,3\(at\)
-100005a4:	8f81801c 	lw	at,-32740\(gp\)
+100005a4:	8f818018 	lw	at,-32744\(gp\)
 100005a8:	24210796 	addiu	at,at,1942
 100005ac:	00250821 	addu	at,at,a1
 100005b0:	88250000 	lwl	a1,0\(at\)
 100005b4:	98250003 	lwr	a1,3\(at\)
-100005b8:	8f81801c 	lw	at,-32740\(gp\)
+100005b8:	8f818018 	lw	at,-32744\(gp\)
 100005bc:	242107ac 	addiu	at,at,1964
 100005c0:	00250821 	addu	at,at,a1
 100005c4:	a8250000 	swl	a1,0\(at\)
 100005c8:	b8250003 	swr	a1,3\(at\)
 100005cc:	3c050000 	lui	a1,0x0
 100005d0:	00bc2821 	addu	a1,a1,gp
-100005d4:	8ca58030 	lw	a1,-32720\(a1\)
-100005d8:	8f858028 	lw	a1,-32728\(gp\)
+100005d4:	8ca5802c 	lw	a1,-32724\(a1\)
+100005d8:	8f858020 	lw	a1,-32736\(gp\)
 100005dc:	24a506b0 	addiu	a1,a1,1712
 100005e0:	3c190000 	lui	t9,0x0
 100005e4:	033cc821 	addu	t9,t9,gp
-100005e8:	8f398030 	lw	t9,-32720\(t9\)
-100005ec:	8f998028 	lw	t9,-32728\(gp\)
+100005e8:	8f39802c 	lw	t9,-32724\(t9\)
+100005ec:	8f998020 	lw	t9,-32736\(gp\)
 100005f0:	273906b0 	addiu	t9,t9,1712
 100005f4:	3c190000 	lui	t9,0x0
 100005f8:	033cc821 	addu	t9,t9,gp
-100005fc:	8f398030 	lw	t9,-32720\(t9\)
+100005fc:	8f39802c 	lw	t9,-32724\(t9\)
 10000600:	0411002b 	bal	100006b0 <fn2>
 10000604:	00000000 	nop
-10000608:	8f998028 	lw	t9,-32728\(gp\)
+10000608:	8f998020 	lw	t9,-32736\(gp\)
 1000060c:	273906b0 	addiu	t9,t9,1712
 10000610:	04110027 	bal	100006b0 <fn2>
 10000614:	00000000 	nop
 10000618:	3c050000 	lui	a1,0x0
 1000061c:	00bc2821 	addu	a1,a1,gp
-10000620:	8ca58018 	lw	a1,-32744\(a1\)
+10000620:	8ca58038 	lw	a1,-32712\(a1\)
 10000624:	1000fea2 	b	100000b0 <fn>
 10000628:	00000000 	nop
 1000062c:	3c050000 	lui	a1,0x0
 10000630:	00bc2821 	addu	a1,a1,gp
-10000634:	8ca5802c 	lw	a1,-32724\(a1\)
+10000634:	8ca58030 	lw	a1,-32720\(a1\)
 10000638:	8ca50000 	lw	a1,0\(a1\)
 1000063c:	1000001c 	b	100006b0 <fn2>
 10000640:	00000000 	nop
-10000644:	8f85801c 	lw	a1,-32740\(gp\)
+10000644:	8f858018 	lw	a1,-32744\(gp\)
 10000648:	24a506fc 	addiu	a1,a1,1788
 1000064c:	1000fe98 	b	100000b0 <fn>
 10000650:	00000000 	nop
-10000654:	8f85801c 	lw	a1,-32740\(gp\)
+10000654:	8f858018 	lw	a1,-32744\(gp\)
 10000658:	24a50780 	addiu	a1,a1,1920
 1000065c:	10000014 	b	100006b0 <fn2>
 10000660:	00000000 	nop
-10000664:	8f858020 	lw	a1,-32736\(gp\)
+10000664:	8f85801c 	lw	a1,-32740\(gp\)
 10000668:	24a5e93c 	addiu	a1,a1,-5828
 1000066c:	1000fe90 	b	100000b0 <fn>
 10000670:	00000000 	nop
-10000674:	8f85801c 	lw	a1,-32740\(gp\)
+10000674:	8f858018 	lw	a1,-32744\(gp\)
 10000678:	8ca50774 	lw	a1,1908\(a1\)
 1000067c:	1000000c 	b	100006b0 <fn2>
 10000680:	00000000 	nop
-10000684:	8f85801c 	lw	a1,-32740\(gp\)
+10000684:	8f858018 	lw	a1,-32744\(gp\)
 10000688:	8ca50708 	lw	a1,1800\(a1\)
 1000068c:	1000fe88 	b	100000b0 <fn>
 10000690:	00000000 	nop
-10000694:	8f81801c 	lw	at,-32740\(gp\)
+10000694:	8f818018 	lw	at,-32744\(gp\)
 10000698:	00250821 	addu	at,at,a1
 1000069c:	8c250796 	lw	a1,1942\(at\)
 100006a0:	10000003 	b	100006b0 <fn2>
@@ -422,13 +422,13 @@ Disassembly of section \.got:
 100107b0 <_GLOBAL_OFFSET_TABLE_>:
 100107b0:	00000000 	.*
 100107b4:	80000000 	.*
-100107b8:	100106fc 	.*
-100107bc:	10010000 	.*
-100107c0:	10030000 	.*
-100107c4:	100000b0 	.*
-100107c8:	10000000 	.*
-100107cc:	10010774 	.*
-100107d0:	100006b0 	.*
-100107d4:	00000000 	.*
-100107d8:	00000000 	.*
+100107b8:	10010000 	.*
+100107bc:	10030000 	.*
+100107c0:	10000000 	.*
+100107c4:	00000000 	.*
+100107c8:	00000000 	.*
+100107cc:	100006b0 	.*
+100107d0:	10010774 	.*
+100107d4:	100000b0 	.*
+100107d8:	100106fc 	.*
 #pass
diff --git a/ld/testsuite/ld-mips-elf/elf-rel-xgot-n64-embed.d b/ld/testsuite/ld-mips-elf/elf-rel-xgot-n64-embed.d
index 6da691c..271257f 100644
--- a/ld/testsuite/ld-mips-elf/elf-rel-xgot-n64-embed.d
+++ b/ld/testsuite/ld-mips-elf/elf-rel-xgot-n64-embed.d
@@ -21,382 +21,382 @@ Disassembly of section \.text:
 00000001200000b0 <fn>:
    1200000b0:	3c050000 	lui	a1,0x0
    1200000b4:	00bc282d 	daddu	a1,a1,gp
-   1200000b8:	dca58020 	ld	a1,-32736\(a1\)
+   1200000b8:	dca58060 	ld	a1,-32672\(a1\)
    1200000bc:	3c050000 	lui	a1,0x0
    1200000c0:	00bc282d 	daddu	a1,a1,gp
-   1200000c4:	dca58020 	ld	a1,-32736\(a1\)
+   1200000c4:	dca58060 	ld	a1,-32672\(a1\)
    1200000c8:	64a5000c 	daddiu	a1,a1,12
    1200000cc:	3c050000 	lui	a1,0x0
    1200000d0:	00bc282d 	daddu	a1,a1,gp
-   1200000d4:	dca58020 	ld	a1,-32736\(a1\)
+   1200000d4:	dca58060 	ld	a1,-32672\(a1\)
    1200000d8:	3c010001 	lui	at,0x1
    1200000dc:	3421e240 	ori	at,at,0xe240
    1200000e0:	00a1282d 	daddu	a1,a1,at
    1200000e4:	3c050000 	lui	a1,0x0
    1200000e8:	00bc282d 	daddu	a1,a1,gp
-   1200000ec:	dca58020 	ld	a1,-32736\(a1\)
+   1200000ec:	dca58060 	ld	a1,-32672\(a1\)
    1200000f0:	00b1282d 	daddu	a1,a1,s1
    1200000f4:	3c050000 	lui	a1,0x0
    1200000f8:	00bc282d 	daddu	a1,a1,gp
-   1200000fc:	dca58020 	ld	a1,-32736\(a1\)
+   1200000fc:	dca58060 	ld	a1,-32672\(a1\)
    120000100:	64a5000c 	daddiu	a1,a1,12
    120000104:	00b1282d 	daddu	a1,a1,s1
    120000108:	3c050000 	lui	a1,0x0
    12000010c:	00bc282d 	daddu	a1,a1,gp
-   120000110:	dca58020 	ld	a1,-32736\(a1\)
+   120000110:	dca58060 	ld	a1,-32672\(a1\)
    120000114:	3c010001 	lui	at,0x1
    120000118:	3421e240 	ori	at,at,0xe240
    12000011c:	00a1282d 	daddu	a1,a1,at
    120000120:	00b1282d 	daddu	a1,a1,s1
    120000124:	3c050000 	lui	a1,0x0
    120000128:	00bc282d 	daddu	a1,a1,gp
-   12000012c:	dca58020 	ld	a1,-32736\(a1\)
+   12000012c:	dca58060 	ld	a1,-32672\(a1\)
    120000130:	dca50000 	ld	a1,0\(a1\)
    120000134:	3c050000 	lui	a1,0x0
    120000138:	00bc282d 	daddu	a1,a1,gp
-   12000013c:	dca58020 	ld	a1,-32736\(a1\)
+   12000013c:	dca58060 	ld	a1,-32672\(a1\)
    120000140:	dca5000c 	ld	a1,12\(a1\)
    120000144:	3c050000 	lui	a1,0x0
    120000148:	00bc282d 	daddu	a1,a1,gp
-   12000014c:	dca58020 	ld	a1,-32736\(a1\)
+   12000014c:	dca58060 	ld	a1,-32672\(a1\)
    120000150:	00b1282d 	daddu	a1,a1,s1
    120000154:	dca50000 	ld	a1,0\(a1\)
    120000158:	3c050000 	lui	a1,0x0
    12000015c:	00bc282d 	daddu	a1,a1,gp
-   120000160:	dca58020 	ld	a1,-32736\(a1\)
+   120000160:	dca58060 	ld	a1,-32672\(a1\)
    120000164:	00b1282d 	daddu	a1,a1,s1
    120000168:	dca5000c 	ld	a1,12\(a1\)
    12000016c:	3c010000 	lui	at,0x0
    120000170:	003c082d 	daddu	at,at,gp
-   120000174:	dc218020 	ld	at,-32736\(at\)
+   120000174:	dc218060 	ld	at,-32672\(at\)
    120000178:	0025082d 	daddu	at,at,a1
    12000017c:	dc250022 	ld	a1,34\(at\)
    120000180:	3c010000 	lui	at,0x0
    120000184:	003c082d 	daddu	at,at,gp
-   120000188:	dc218020 	ld	at,-32736\(at\)
+   120000188:	dc218060 	ld	at,-32672\(at\)
    12000018c:	0025082d 	daddu	at,at,a1
    120000190:	fc250038 	sd	a1,56\(at\)
    120000194:	3c010000 	lui	at,0x0
    120000198:	003c082d 	daddu	at,at,gp
-   12000019c:	dc218020 	ld	at,-32736\(at\)
+   12000019c:	dc218060 	ld	at,-32672\(at\)
    1200001a0:	88250000 	lwl	a1,0\(at\)
    1200001a4:	98250003 	lwr	a1,3\(at\)
    1200001a8:	3c010000 	lui	at,0x0
    1200001ac:	003c082d 	daddu	at,at,gp
-   1200001b0:	dc218020 	ld	at,-32736\(at\)
+   1200001b0:	dc218060 	ld	at,-32672\(at\)
    1200001b4:	6421000c 	daddiu	at,at,12
    1200001b8:	88250000 	lwl	a1,0\(at\)
    1200001bc:	98250003 	lwr	a1,3\(at\)
    1200001c0:	3c010000 	lui	at,0x0
    1200001c4:	003c082d 	daddu	at,at,gp
-   1200001c8:	dc218020 	ld	at,-32736\(at\)
+   1200001c8:	dc218060 	ld	at,-32672\(at\)
    1200001cc:	0031082d 	daddu	at,at,s1
    1200001d0:	88250000 	lwl	a1,0\(at\)
    1200001d4:	98250003 	lwr	a1,3\(at\)
    1200001d8:	3c010000 	lui	at,0x0
    1200001dc:	003c082d 	daddu	at,at,gp
-   1200001e0:	dc218020 	ld	at,-32736\(at\)
+   1200001e0:	dc218060 	ld	at,-32672\(at\)
    1200001e4:	6421000c 	daddiu	at,at,12
    1200001e8:	0031082d 	daddu	at,at,s1
    1200001ec:	88250000 	lwl	a1,0\(at\)
    1200001f0:	98250003 	lwr	a1,3\(at\)
    1200001f4:	3c010000 	lui	at,0x0
    1200001f8:	003c082d 	daddu	at,at,gp
-   1200001fc:	dc218020 	ld	at,-32736\(at\)
+   1200001fc:	dc218060 	ld	at,-32672\(at\)
    120000200:	64210022 	daddiu	at,at,34
    120000204:	0025082d 	daddu	at,at,a1
    120000208:	88250000 	lwl	a1,0\(at\)
    12000020c:	98250003 	lwr	a1,3\(at\)
    120000210:	3c010000 	lui	at,0x0
    120000214:	003c082d 	daddu	at,at,gp
-   120000218:	dc218020 	ld	at,-32736\(at\)
+   120000218:	dc218060 	ld	at,-32672\(at\)
    12000021c:	64210038 	daddiu	at,at,56
    120000220:	0025082d 	daddu	at,at,a1
    120000224:	a8250000 	swl	a1,0\(at\)
    120000228:	b8250003 	swr	a1,3\(at\)
-   12000022c:	df858028 	ld	a1,-32728\(gp\)
+   12000022c:	df858020 	ld	a1,-32736\(gp\)
    120000230:	64a506f4 	daddiu	a1,a1,1780
-   120000234:	df858028 	ld	a1,-32728\(gp\)
+   120000234:	df858020 	ld	a1,-32736\(gp\)
    120000238:	64a50700 	daddiu	a1,a1,1792
-   12000023c:	df858030 	ld	a1,-32720\(gp\)
+   12000023c:	df858028 	ld	a1,-32728\(gp\)
    120000240:	64a5e934 	daddiu	a1,a1,-5836
-   120000244:	df858028 	ld	a1,-32728\(gp\)
+   120000244:	df858020 	ld	a1,-32736\(gp\)
    120000248:	64a506f4 	daddiu	a1,a1,1780
    12000024c:	00b1282d 	daddu	a1,a1,s1
-   120000250:	df858028 	ld	a1,-32728\(gp\)
+   120000250:	df858020 	ld	a1,-32736\(gp\)
    120000254:	64a50700 	daddiu	a1,a1,1792
    120000258:	00b1282d 	daddu	a1,a1,s1
-   12000025c:	df858030 	ld	a1,-32720\(gp\)
+   12000025c:	df858028 	ld	a1,-32728\(gp\)
    120000260:	64a5e934 	daddiu	a1,a1,-5836
    120000264:	00b1282d 	daddu	a1,a1,s1
-   120000268:	df858028 	ld	a1,-32728\(gp\)
+   120000268:	df858020 	ld	a1,-32736\(gp\)
    12000026c:	dca506f4 	ld	a1,1780\(a1\)
-   120000270:	df858028 	ld	a1,-32728\(gp\)
+   120000270:	df858020 	ld	a1,-32736\(gp\)
    120000274:	dca50700 	ld	a1,1792\(a1\)
-   120000278:	df858028 	ld	a1,-32728\(gp\)
+   120000278:	df858020 	ld	a1,-32736\(gp\)
    12000027c:	00b1282d 	daddu	a1,a1,s1
    120000280:	dca506f4 	ld	a1,1780\(a1\)
-   120000284:	df858028 	ld	a1,-32728\(gp\)
+   120000284:	df858020 	ld	a1,-32736\(gp\)
    120000288:	00b1282d 	daddu	a1,a1,s1
    12000028c:	dca50700 	ld	a1,1792\(a1\)
-   120000290:	df818028 	ld	at,-32728\(gp\)
+   120000290:	df818020 	ld	at,-32736\(gp\)
    120000294:	0025082d 	daddu	at,at,a1
    120000298:	dc250716 	ld	a1,1814\(at\)
-   12000029c:	df818028 	ld	at,-32728\(gp\)
+   12000029c:	df818020 	ld	at,-32736\(gp\)
    1200002a0:	0025082d 	daddu	at,at,a1
    1200002a4:	fc25072c 	sd	a1,1836\(at\)
-   1200002a8:	df818028 	ld	at,-32728\(gp\)
+   1200002a8:	df818020 	ld	at,-32736\(gp\)
    1200002ac:	642106f4 	daddiu	at,at,1780
    1200002b0:	88250000 	lwl	a1,0\(at\)
    1200002b4:	98250003 	lwr	a1,3\(at\)
-   1200002b8:	df818028 	ld	at,-32728\(gp\)
+   1200002b8:	df818020 	ld	at,-32736\(gp\)
    1200002bc:	64210700 	daddiu	at,at,1792
    1200002c0:	88250000 	lwl	a1,0\(at\)
    1200002c4:	98250003 	lwr	a1,3\(at\)
-   1200002c8:	df818028 	ld	at,-32728\(gp\)
+   1200002c8:	df818020 	ld	at,-32736\(gp\)
    1200002cc:	642106f4 	daddiu	at,at,1780
    1200002d0:	0031082d 	daddu	at,at,s1
    1200002d4:	88250000 	lwl	a1,0\(at\)
    1200002d8:	98250003 	lwr	a1,3\(at\)
-   1200002dc:	df818028 	ld	at,-32728\(gp\)
+   1200002dc:	df818020 	ld	at,-32736\(gp\)
    1200002e0:	64210700 	daddiu	at,at,1792
    1200002e4:	0031082d 	daddu	at,at,s1
    1200002e8:	88250000 	lwl	a1,0\(at\)
    1200002ec:	98250003 	lwr	a1,3\(at\)
-   1200002f0:	df818028 	ld	at,-32728\(gp\)
+   1200002f0:	df818020 	ld	at,-32736\(gp\)
    1200002f4:	64210716 	daddiu	at,at,1814
    1200002f8:	0025082d 	daddu	at,at,a1
    1200002fc:	88250000 	lwl	a1,0\(at\)
    120000300:	98250003 	lwr	a1,3\(at\)
-   120000304:	df818028 	ld	at,-32728\(gp\)
+   120000304:	df818020 	ld	at,-32736\(gp\)
    120000308:	6421072c 	daddiu	at,at,1836
    12000030c:	0025082d 	daddu	at,at,a1
    120000310:	a8250000 	swl	a1,0\(at\)
    120000314:	b8250003 	swr	a1,3\(at\)
    120000318:	3c050000 	lui	a1,0x0
    12000031c:	00bc282d 	daddu	a1,a1,gp
-   120000320:	dca58038 	ld	a1,-32712\(a1\)
-   120000324:	df858040 	ld	a1,-32704\(gp\)
+   120000320:	dca58058 	ld	a1,-32680\(a1\)
+   120000324:	df858030 	ld	a1,-32720\(gp\)
    120000328:	64a500b0 	daddiu	a1,a1,176
    12000032c:	3c190000 	lui	t9,0x0
    120000330:	033cc82d 	daddu	t9,t9,gp
-   120000334:	df398038 	ld	t9,-32712\(t9\)
-   120000338:	df998040 	ld	t9,-32704\(gp\)
+   120000334:	df398058 	ld	t9,-32680\(t9\)
+   120000338:	df998030 	ld	t9,-32720\(gp\)
    12000033c:	673900b0 	daddiu	t9,t9,176
    120000340:	3c190000 	lui	t9,0x0
    120000344:	033cc82d 	daddu	t9,t9,gp
-   120000348:	df398038 	ld	t9,-32712\(t9\)
+   120000348:	df398058 	ld	t9,-32680\(t9\)
    12000034c:	0411ff58 	bal	1200000b0 <fn>
    120000350:	00000000 	nop
-   120000354:	df998040 	ld	t9,-32704\(gp\)
+   120000354:	df998030 	ld	t9,-32720\(gp\)
    120000358:	673900b0 	daddiu	t9,t9,176
    12000035c:	0411ff54 	bal	1200000b0 <fn>
    120000360:	00000000 	nop
    120000364:	3c050000 	lui	a1,0x0
    120000368:	00bc282d 	daddu	a1,a1,gp
-   12000036c:	dca58048 	ld	a1,-32696\(a1\)
+   12000036c:	dca58050 	ld	a1,-32688\(a1\)
    120000370:	3c050000 	lui	a1,0x0
    120000374:	00bc282d 	daddu	a1,a1,gp
-   120000378:	dca58048 	ld	a1,-32696\(a1\)
+   120000378:	dca58050 	ld	a1,-32688\(a1\)
    12000037c:	64a5000c 	daddiu	a1,a1,12
    120000380:	3c050000 	lui	a1,0x0
    120000384:	00bc282d 	daddu	a1,a1,gp
-   120000388:	dca58048 	ld	a1,-32696\(a1\)
+   120000388:	dca58050 	ld	a1,-32688\(a1\)
    12000038c:	3c010001 	lui	at,0x1
    120000390:	3421e240 	ori	at,at,0xe240
    120000394:	00a1282d 	daddu	a1,a1,at
    120000398:	3c050000 	lui	a1,0x0
    12000039c:	00bc282d 	daddu	a1,a1,gp
-   1200003a0:	dca58048 	ld	a1,-32696\(a1\)
+   1200003a0:	dca58050 	ld	a1,-32688\(a1\)
    1200003a4:	00b1282d 	daddu	a1,a1,s1
    1200003a8:	3c050000 	lui	a1,0x0
    1200003ac:	00bc282d 	daddu	a1,a1,gp
-   1200003b0:	dca58048 	ld	a1,-32696\(a1\)
+   1200003b0:	dca58050 	ld	a1,-32688\(a1\)
    1200003b4:	64a5000c 	daddiu	a1,a1,12
    1200003b8:	00b1282d 	daddu	a1,a1,s1
    1200003bc:	3c050000 	lui	a1,0x0
    1200003c0:	00bc282d 	daddu	a1,a1,gp
-   1200003c4:	dca58048 	ld	a1,-32696\(a1\)
+   1200003c4:	dca58050 	ld	a1,-32688\(a1\)
    1200003c8:	3c010001 	lui	at,0x1
    1200003cc:	3421e240 	ori	at,at,0xe240
    1200003d0:	00a1282d 	daddu	a1,a1,at
    1200003d4:	00b1282d 	daddu	a1,a1,s1
    1200003d8:	3c050000 	lui	a1,0x0
    1200003dc:	00bc282d 	daddu	a1,a1,gp
-   1200003e0:	dca58048 	ld	a1,-32696\(a1\)
+   1200003e0:	dca58050 	ld	a1,-32688\(a1\)
    1200003e4:	dca50000 	ld	a1,0\(a1\)
    1200003e8:	3c050000 	lui	a1,0x0
    1200003ec:	00bc282d 	daddu	a1,a1,gp
-   1200003f0:	dca58048 	ld	a1,-32696\(a1\)
+   1200003f0:	dca58050 	ld	a1,-32688\(a1\)
    1200003f4:	dca5000c 	ld	a1,12\(a1\)
    1200003f8:	3c050000 	lui	a1,0x0
    1200003fc:	00bc282d 	daddu	a1,a1,gp
-   120000400:	dca58048 	ld	a1,-32696\(a1\)
+   120000400:	dca58050 	ld	a1,-32688\(a1\)
    120000404:	00b1282d 	daddu	a1,a1,s1
    120000408:	dca50000 	ld	a1,0\(a1\)
    12000040c:	3c050000 	lui	a1,0x0
    120000410:	00bc282d 	daddu	a1,a1,gp
-   120000414:	dca58048 	ld	a1,-32696\(a1\)
+   120000414:	dca58050 	ld	a1,-32688\(a1\)
    120000418:	00b1282d 	daddu	a1,a1,s1
    12000041c:	dca5000c 	ld	a1,12\(a1\)
    120000420:	3c010000 	lui	at,0x0
    120000424:	003c082d 	daddu	at,at,gp
-   120000428:	dc218048 	ld	at,-32696\(at\)
+   120000428:	dc218050 	ld	at,-32688\(at\)
    12000042c:	0025082d 	daddu	at,at,a1
    120000430:	dc250022 	ld	a1,34\(at\)
    120000434:	3c010000 	lui	at,0x0
    120000438:	003c082d 	daddu	at,at,gp
-   12000043c:	dc218048 	ld	at,-32696\(at\)
+   12000043c:	dc218050 	ld	at,-32688\(at\)
    120000440:	0025082d 	daddu	at,at,a1
    120000444:	fc250038 	sd	a1,56\(at\)
    120000448:	3c010000 	lui	at,0x0
    12000044c:	003c082d 	daddu	at,at,gp
-   120000450:	dc218048 	ld	at,-32696\(at\)
+   120000450:	dc218050 	ld	at,-32688\(at\)
    120000454:	88250000 	lwl	a1,0\(at\)
    120000458:	98250003 	lwr	a1,3\(at\)
    12000045c:	3c010000 	lui	at,0x0
    120000460:	003c082d 	daddu	at,at,gp
-   120000464:	dc218048 	ld	at,-32696\(at\)
+   120000464:	dc218050 	ld	at,-32688\(at\)
    120000468:	6421000c 	daddiu	at,at,12
    12000046c:	88250000 	lwl	a1,0\(at\)
    120000470:	98250003 	lwr	a1,3\(at\)
    120000474:	3c010000 	lui	at,0x0
    120000478:	003c082d 	daddu	at,at,gp
-   12000047c:	dc218048 	ld	at,-32696\(at\)
+   12000047c:	dc218050 	ld	at,-32688\(at\)
    120000480:	0031082d 	daddu	at,at,s1
    120000484:	88250000 	lwl	a1,0\(at\)
    120000488:	98250003 	lwr	a1,3\(at\)
    12000048c:	3c010000 	lui	at,0x0
    120000490:	003c082d 	daddu	at,at,gp
-   120000494:	dc218048 	ld	at,-32696\(at\)
+   120000494:	dc218050 	ld	at,-32688\(at\)
    120000498:	6421000c 	daddiu	at,at,12
    12000049c:	0031082d 	daddu	at,at,s1
    1200004a0:	88250000 	lwl	a1,0\(at\)
    1200004a4:	98250003 	lwr	a1,3\(at\)
    1200004a8:	3c010000 	lui	at,0x0
    1200004ac:	003c082d 	daddu	at,at,gp
-   1200004b0:	dc218048 	ld	at,-32696\(at\)
+   1200004b0:	dc218050 	ld	at,-32688\(at\)
    1200004b4:	64210022 	daddiu	at,at,34
    1200004b8:	0025082d 	daddu	at,at,a1
    1200004bc:	88250000 	lwl	a1,0\(at\)
    1200004c0:	98250003 	lwr	a1,3\(at\)
    1200004c4:	3c010000 	lui	at,0x0
    1200004c8:	003c082d 	daddu	at,at,gp
-   1200004cc:	dc218048 	ld	at,-32696\(at\)
+   1200004cc:	dc218050 	ld	at,-32688\(at\)
    1200004d0:	64210038 	daddiu	at,at,56
    1200004d4:	0025082d 	daddu	at,at,a1
    1200004d8:	a8250000 	swl	a1,0\(at\)
    1200004dc:	b8250003 	swr	a1,3\(at\)
-   1200004e0:	df858028 	ld	a1,-32728\(gp\)
+   1200004e0:	df858020 	ld	a1,-32736\(gp\)
    1200004e4:	64a5076c 	daddiu	a1,a1,1900
-   1200004e8:	df858028 	ld	a1,-32728\(gp\)
+   1200004e8:	df858020 	ld	a1,-32736\(gp\)
    1200004ec:	64a50778 	daddiu	a1,a1,1912
-   1200004f0:	df858030 	ld	a1,-32720\(gp\)
+   1200004f0:	df858028 	ld	a1,-32728\(gp\)
    1200004f4:	64a5e9ac 	daddiu	a1,a1,-5716
-   1200004f8:	df858028 	ld	a1,-32728\(gp\)
+   1200004f8:	df858020 	ld	a1,-32736\(gp\)
    1200004fc:	64a5076c 	daddiu	a1,a1,1900
    120000500:	00b1282d 	daddu	a1,a1,s1
-   120000504:	df858028 	ld	a1,-32728\(gp\)
+   120000504:	df858020 	ld	a1,-32736\(gp\)
    120000508:	64a50778 	daddiu	a1,a1,1912
    12000050c:	00b1282d 	daddu	a1,a1,s1
-   120000510:	df858030 	ld	a1,-32720\(gp\)
+   120000510:	df858028 	ld	a1,-32728\(gp\)
    120000514:	64a5e9ac 	daddiu	a1,a1,-5716
    120000518:	00b1282d 	daddu	a1,a1,s1
-   12000051c:	df858028 	ld	a1,-32728\(gp\)
+   12000051c:	df858020 	ld	a1,-32736\(gp\)
    120000520:	dca5076c 	ld	a1,1900\(a1\)
-   120000524:	df858028 	ld	a1,-32728\(gp\)
+   120000524:	df858020 	ld	a1,-32736\(gp\)
    120000528:	dca50778 	ld	a1,1912\(a1\)
-   12000052c:	df858028 	ld	a1,-32728\(gp\)
+   12000052c:	df858020 	ld	a1,-32736\(gp\)
    120000530:	00b1282d 	daddu	a1,a1,s1
    120000534:	dca5076c 	ld	a1,1900\(a1\)
-   120000538:	df858028 	ld	a1,-32728\(gp\)
+   120000538:	df858020 	ld	a1,-32736\(gp\)
    12000053c:	00b1282d 	daddu	a1,a1,s1
    120000540:	dca50778 	ld	a1,1912\(a1\)
-   120000544:	df818028 	ld	at,-32728\(gp\)
+   120000544:	df818020 	ld	at,-32736\(gp\)
    120000548:	0025082d 	daddu	at,at,a1
    12000054c:	dc25078e 	ld	a1,1934\(at\)
-   120000550:	df818028 	ld	at,-32728\(gp\)
+   120000550:	df818020 	ld	at,-32736\(gp\)
    120000554:	0025082d 	daddu	at,at,a1
    120000558:	fc2507a4 	sd	a1,1956\(at\)
-   12000055c:	df818028 	ld	at,-32728\(gp\)
+   12000055c:	df818020 	ld	at,-32736\(gp\)
    120000560:	6421076c 	daddiu	at,at,1900
    120000564:	88250000 	lwl	a1,0\(at\)
    120000568:	98250003 	lwr	a1,3\(at\)
-   12000056c:	df818028 	ld	at,-32728\(gp\)
+   12000056c:	df818020 	ld	at,-32736\(gp\)
    120000570:	64210778 	daddiu	at,at,1912
    120000574:	88250000 	lwl	a1,0\(at\)
    120000578:	98250003 	lwr	a1,3\(at\)
-   12000057c:	df818028 	ld	at,-32728\(gp\)
+   12000057c:	df818020 	ld	at,-32736\(gp\)
    120000580:	6421076c 	daddiu	at,at,1900
    120000584:	0031082d 	daddu	at,at,s1
    120000588:	88250000 	lwl	a1,0\(at\)
    12000058c:	98250003 	lwr	a1,3\(at\)
-   120000590:	df818028 	ld	at,-32728\(gp\)
+   120000590:	df818020 	ld	at,-32736\(gp\)
    120000594:	64210778 	daddiu	at,at,1912
    120000598:	0031082d 	daddu	at,at,s1
    12000059c:	88250000 	lwl	a1,0\(at\)
    1200005a0:	98250003 	lwr	a1,3\(at\)
-   1200005a4:	df818028 	ld	at,-32728\(gp\)
+   1200005a4:	df818020 	ld	at,-32736\(gp\)
    1200005a8:	6421078e 	daddiu	at,at,1934
    1200005ac:	0025082d 	daddu	at,at,a1
    1200005b0:	88250000 	lwl	a1,0\(at\)
    1200005b4:	98250003 	lwr	a1,3\(at\)
-   1200005b8:	df818028 	ld	at,-32728\(gp\)
+   1200005b8:	df818020 	ld	at,-32736\(gp\)
    1200005bc:	642107a4 	daddiu	at,at,1956
    1200005c0:	0025082d 	daddu	at,at,a1
    1200005c4:	a8250000 	swl	a1,0\(at\)
    1200005c8:	b8250003 	swr	a1,3\(at\)
    1200005cc:	3c050000 	lui	a1,0x0
    1200005d0:	00bc282d 	daddu	a1,a1,gp
-   1200005d4:	dca58050 	ld	a1,-32688\(a1\)
-   1200005d8:	df858040 	ld	a1,-32704\(gp\)
+   1200005d4:	dca58048 	ld	a1,-32696\(a1\)
+   1200005d8:	df858030 	ld	a1,-32720\(gp\)
    1200005dc:	64a506b0 	daddiu	a1,a1,1712
    1200005e0:	3c190000 	lui	t9,0x0
    1200005e4:	033cc82d 	daddu	t9,t9,gp
-   1200005e8:	df398050 	ld	t9,-32688\(t9\)
-   1200005ec:	df998040 	ld	t9,-32704\(gp\)
+   1200005e8:	df398048 	ld	t9,-32696\(t9\)
+   1200005ec:	df998030 	ld	t9,-32720\(gp\)
    1200005f0:	673906b0 	daddiu	t9,t9,1712
    1200005f4:	3c190000 	lui	t9,0x0
    1200005f8:	033cc82d 	daddu	t9,t9,gp
-   1200005fc:	df398050 	ld	t9,-32688\(t9\)
+   1200005fc:	df398048 	ld	t9,-32696\(t9\)
    120000600:	0411002b 	bal	1200006b0 <fn2>
    120000604:	00000000 	nop
-   120000608:	df998040 	ld	t9,-32704\(gp\)
+   120000608:	df998030 	ld	t9,-32720\(gp\)
    12000060c:	673906b0 	daddiu	t9,t9,1712
    120000610:	04110027 	bal	1200006b0 <fn2>
    120000614:	00000000 	nop
    120000618:	3c050000 	lui	a1,0x0
    12000061c:	00bc282d 	daddu	a1,a1,gp
-   120000620:	dca58020 	ld	a1,-32736\(a1\)
+   120000620:	dca58060 	ld	a1,-32672\(a1\)
    120000624:	1000fea2 	b	1200000b0 <fn>
    120000628:	00000000 	nop
    12000062c:	3c050000 	lui	a1,0x0
    120000630:	00bc282d 	daddu	a1,a1,gp
-   120000634:	dca58048 	ld	a1,-32696\(a1\)
+   120000634:	dca58050 	ld	a1,-32688\(a1\)
    120000638:	dca50000 	ld	a1,0\(a1\)
    12000063c:	1000001c 	b	1200006b0 <fn2>
    120000640:	00000000 	nop
-   120000644:	df858028 	ld	a1,-32728\(gp\)
+   120000644:	df858020 	ld	a1,-32736\(gp\)
    120000648:	64a506f4 	daddiu	a1,a1,1780
    12000064c:	1000fe98 	b	1200000b0 <fn>
    120000650:	00000000 	nop
-   120000654:	df858028 	ld	a1,-32728\(gp\)
+   120000654:	df858020 	ld	a1,-32736\(gp\)
    120000658:	64a50778 	daddiu	a1,a1,1912
    12000065c:	10000014 	b	1200006b0 <fn2>
    120000660:	00000000 	nop
-   120000664:	df858030 	ld	a1,-32720\(gp\)
+   120000664:	df858028 	ld	a1,-32728\(gp\)
    120000668:	64a5e934 	daddiu	a1,a1,-5836
    12000066c:	1000fe90 	b	1200000b0 <fn>
    120000670:	00000000 	nop
-   120000674:	df858028 	ld	a1,-32728\(gp\)
+   120000674:	df858020 	ld	a1,-32736\(gp\)
    120000678:	dca5076c 	ld	a1,1900\(a1\)
    12000067c:	1000000c 	b	1200006b0 <fn2>
    120000680:	00000000 	nop
-   120000684:	df858028 	ld	a1,-32728\(gp\)
+   120000684:	df858020 	ld	a1,-32736\(gp\)
    120000688:	dca50700 	ld	a1,1792\(a1\)
    12000068c:	1000fe88 	b	1200000b0 <fn>
    120000690:	00000000 	nop
-   120000694:	df818028 	ld	at,-32728\(gp\)
+   120000694:	df818020 	ld	at,-32736\(gp\)
    120000698:	0025082d 	daddu	at,at,a1
    12000069c:	dc25078e 	ld	a1,1934\(at\)
    1200006a0:	10000003 	b	1200006b0 <fn2>
@@ -427,18 +427,18 @@ Disassembly of section \.got:
    1200107b8:	80000000 	.*
    1200107bc:	00000000 	.*
    1200107c0:	00000001 	.*
-   1200107c4:	200106f4 	.*
+   1200107c4:	20010000 	.*
    1200107c8:	00000001 	.*
-   1200107cc:	20010000 	.*
+   1200107cc:	20030000 	.*
    1200107d0:	00000001 	.*
-   1200107d4:	20030000 	.*
-   1200107d8:	00000001 	.*
-   1200107dc:	200000b0 	.*
-   1200107e0:	00000001 	.*
-   1200107e4:	20000000 	.*
+   1200107d4:	20000000 	.*
+	\.\.\.
    1200107e8:	00000001 	.*
-   1200107ec:	2001076c 	.*
+   1200107ec:	200006b0 	.*
    1200107f0:	00000001 	.*
-   1200107f4:	200006b0 	.*
-	\.\.\.
+   1200107f4:	2001076c 	.*
+   1200107f8:	00000001 	.*
+   1200107fc:	200000b0 	.*
+   120010800:	00000001 	.*
+   120010804:	200106f4 	.*
 #pass
diff --git a/ld/testsuite/ld-mips-elf/elf-rel-xgot-n64-linux.d b/ld/testsuite/ld-mips-elf/elf-rel-xgot-n64-linux.d
index be446f0..4579700 100644
--- a/ld/testsuite/ld-mips-elf/elf-rel-xgot-n64-linux.d
+++ b/ld/testsuite/ld-mips-elf/elf-rel-xgot-n64-linux.d
@@ -21,382 +21,382 @@ Disassembly of section \.text:
 00000001200000e0 <fn>:
    1200000e0:	3c050000 	lui	a1,0x0
    1200000e4:	00bc282d 	daddu	a1,a1,gp
-   1200000e8:	dca58020 	ld	a1,-32736\(a1\)
+   1200000e8:	dca58060 	ld	a1,-32672\(a1\)
    1200000ec:	3c050000 	lui	a1,0x0
    1200000f0:	00bc282d 	daddu	a1,a1,gp
-   1200000f4:	dca58020 	ld	a1,-32736\(a1\)
+   1200000f4:	dca58060 	ld	a1,-32672\(a1\)
    1200000f8:	64a5000c 	daddiu	a1,a1,12
    1200000fc:	3c050000 	lui	a1,0x0
    120000100:	00bc282d 	daddu	a1,a1,gp
-   120000104:	dca58020 	ld	a1,-32736\(a1\)
+   120000104:	dca58060 	ld	a1,-32672\(a1\)
    120000108:	3c010001 	lui	at,0x1
    12000010c:	3421e240 	ori	at,at,0xe240
    120000110:	00a1282d 	daddu	a1,a1,at
    120000114:	3c050000 	lui	a1,0x0
    120000118:	00bc282d 	daddu	a1,a1,gp
-   12000011c:	dca58020 	ld	a1,-32736\(a1\)
+   12000011c:	dca58060 	ld	a1,-32672\(a1\)
    120000120:	00b1282d 	daddu	a1,a1,s1
    120000124:	3c050000 	lui	a1,0x0
    120000128:	00bc282d 	daddu	a1,a1,gp
-   12000012c:	dca58020 	ld	a1,-32736\(a1\)
+   12000012c:	dca58060 	ld	a1,-32672\(a1\)
    120000130:	64a5000c 	daddiu	a1,a1,12
    120000134:	00b1282d 	daddu	a1,a1,s1
    120000138:	3c050000 	lui	a1,0x0
    12000013c:	00bc282d 	daddu	a1,a1,gp
-   120000140:	dca58020 	ld	a1,-32736\(a1\)
+   120000140:	dca58060 	ld	a1,-32672\(a1\)
    120000144:	3c010001 	lui	at,0x1
    120000148:	3421e240 	ori	at,at,0xe240
    12000014c:	00a1282d 	daddu	a1,a1,at
    120000150:	00b1282d 	daddu	a1,a1,s1
    120000154:	3c050000 	lui	a1,0x0
    120000158:	00bc282d 	daddu	a1,a1,gp
-   12000015c:	dca58020 	ld	a1,-32736\(a1\)
+   12000015c:	dca58060 	ld	a1,-32672\(a1\)
    120000160:	dca50000 	ld	a1,0\(a1\)
    120000164:	3c050000 	lui	a1,0x0
    120000168:	00bc282d 	daddu	a1,a1,gp
-   12000016c:	dca58020 	ld	a1,-32736\(a1\)
+   12000016c:	dca58060 	ld	a1,-32672\(a1\)
    120000170:	dca5000c 	ld	a1,12\(a1\)
    120000174:	3c050000 	lui	a1,0x0
    120000178:	00bc282d 	daddu	a1,a1,gp
-   12000017c:	dca58020 	ld	a1,-32736\(a1\)
+   12000017c:	dca58060 	ld	a1,-32672\(a1\)
    120000180:	00b1282d 	daddu	a1,a1,s1
    120000184:	dca50000 	ld	a1,0\(a1\)
    120000188:	3c050000 	lui	a1,0x0
    12000018c:	00bc282d 	daddu	a1,a1,gp
-   120000190:	dca58020 	ld	a1,-32736\(a1\)
+   120000190:	dca58060 	ld	a1,-32672\(a1\)
    120000194:	00b1282d 	daddu	a1,a1,s1
    120000198:	dca5000c 	ld	a1,12\(a1\)
    12000019c:	3c010000 	lui	at,0x0
    1200001a0:	003c082d 	daddu	at,at,gp
-   1200001a4:	dc218020 	ld	at,-32736\(at\)
+   1200001a4:	dc218060 	ld	at,-32672\(at\)
    1200001a8:	0025082d 	daddu	at,at,a1
    1200001ac:	dc250022 	ld	a1,34\(at\)
    1200001b0:	3c010000 	lui	at,0x0
    1200001b4:	003c082d 	daddu	at,at,gp
-   1200001b8:	dc218020 	ld	at,-32736\(at\)
+   1200001b8:	dc218060 	ld	at,-32672\(at\)
    1200001bc:	0025082d 	daddu	at,at,a1
    1200001c0:	fc250038 	sd	a1,56\(at\)
    1200001c4:	3c010000 	lui	at,0x0
    1200001c8:	003c082d 	daddu	at,at,gp
-   1200001cc:	dc218020 	ld	at,-32736\(at\)
+   1200001cc:	dc218060 	ld	at,-32672\(at\)
    1200001d0:	88250000 	lwl	a1,0\(at\)
    1200001d4:	98250003 	lwr	a1,3\(at\)
    1200001d8:	3c010000 	lui	at,0x0
    1200001dc:	003c082d 	daddu	at,at,gp
-   1200001e0:	dc218020 	ld	at,-32736\(at\)
+   1200001e0:	dc218060 	ld	at,-32672\(at\)
    1200001e4:	6421000c 	daddiu	at,at,12
    1200001e8:	88250000 	lwl	a1,0\(at\)
    1200001ec:	98250003 	lwr	a1,3\(at\)
    1200001f0:	3c010000 	lui	at,0x0
    1200001f4:	003c082d 	daddu	at,at,gp
-   1200001f8:	dc218020 	ld	at,-32736\(at\)
+   1200001f8:	dc218060 	ld	at,-32672\(at\)
    1200001fc:	0031082d 	daddu	at,at,s1
    120000200:	88250000 	lwl	a1,0\(at\)
    120000204:	98250003 	lwr	a1,3\(at\)
    120000208:	3c010000 	lui	at,0x0
    12000020c:	003c082d 	daddu	at,at,gp
-   120000210:	dc218020 	ld	at,-32736\(at\)
+   120000210:	dc218060 	ld	at,-32672\(at\)
    120000214:	6421000c 	daddiu	at,at,12
    120000218:	0031082d 	daddu	at,at,s1
    12000021c:	88250000 	lwl	a1,0\(at\)
    120000220:	98250003 	lwr	a1,3\(at\)
    120000224:	3c010000 	lui	at,0x0
    120000228:	003c082d 	daddu	at,at,gp
-   12000022c:	dc218020 	ld	at,-32736\(at\)
+   12000022c:	dc218060 	ld	at,-32672\(at\)
    120000230:	64210022 	daddiu	at,at,34
    120000234:	0025082d 	daddu	at,at,a1
    120000238:	88250000 	lwl	a1,0\(at\)
    12000023c:	98250003 	lwr	a1,3\(at\)
    120000240:	3c010000 	lui	at,0x0
    120000244:	003c082d 	daddu	at,at,gp
-   120000248:	dc218020 	ld	at,-32736\(at\)
+   120000248:	dc218060 	ld	at,-32672\(at\)
    12000024c:	64210038 	daddiu	at,at,56
    120000250:	0025082d 	daddu	at,at,a1
    120000254:	a8250000 	swl	a1,0\(at\)
    120000258:	b8250003 	swr	a1,3\(at\)
-   12000025c:	df858028 	ld	a1,-32728\(gp\)
+   12000025c:	df858020 	ld	a1,-32736\(gp\)
    120000260:	64a5072c 	daddiu	a1,a1,1836
-   120000264:	df858028 	ld	a1,-32728\(gp\)
+   120000264:	df858020 	ld	a1,-32736\(gp\)
    120000268:	64a50738 	daddiu	a1,a1,1848
-   12000026c:	df858030 	ld	a1,-32720\(gp\)
+   12000026c:	df858028 	ld	a1,-32728\(gp\)
    120000270:	64a5e96c 	daddiu	a1,a1,-5780
-   120000274:	df858028 	ld	a1,-32728\(gp\)
+   120000274:	df858020 	ld	a1,-32736\(gp\)
    120000278:	64a5072c 	daddiu	a1,a1,1836
    12000027c:	00b1282d 	daddu	a1,a1,s1
-   120000280:	df858028 	ld	a1,-32728\(gp\)
+   120000280:	df858020 	ld	a1,-32736\(gp\)
    120000284:	64a50738 	daddiu	a1,a1,1848
    120000288:	00b1282d 	daddu	a1,a1,s1
-   12000028c:	df858030 	ld	a1,-32720\(gp\)
+   12000028c:	df858028 	ld	a1,-32728\(gp\)
    120000290:	64a5e96c 	daddiu	a1,a1,-5780
    120000294:	00b1282d 	daddu	a1,a1,s1
-   120000298:	df858028 	ld	a1,-32728\(gp\)
+   120000298:	df858020 	ld	a1,-32736\(gp\)
    12000029c:	dca5072c 	ld	a1,1836\(a1\)
-   1200002a0:	df858028 	ld	a1,-32728\(gp\)
+   1200002a0:	df858020 	ld	a1,-32736\(gp\)
    1200002a4:	dca50738 	ld	a1,1848\(a1\)
-   1200002a8:	df858028 	ld	a1,-32728\(gp\)
+   1200002a8:	df858020 	ld	a1,-32736\(gp\)
    1200002ac:	00b1282d 	daddu	a1,a1,s1
    1200002b0:	dca5072c 	ld	a1,1836\(a1\)
-   1200002b4:	df858028 	ld	a1,-32728\(gp\)
+   1200002b4:	df858020 	ld	a1,-32736\(gp\)
    1200002b8:	00b1282d 	daddu	a1,a1,s1
    1200002bc:	dca50738 	ld	a1,1848\(a1\)
-   1200002c0:	df818028 	ld	at,-32728\(gp\)
+   1200002c0:	df818020 	ld	at,-32736\(gp\)
    1200002c4:	0025082d 	daddu	at,at,a1
    1200002c8:	dc25074e 	ld	a1,1870\(at\)
-   1200002cc:	df818028 	ld	at,-32728\(gp\)
+   1200002cc:	df818020 	ld	at,-32736\(gp\)
    1200002d0:	0025082d 	daddu	at,at,a1
    1200002d4:	fc250764 	sd	a1,1892\(at\)
-   1200002d8:	df818028 	ld	at,-32728\(gp\)
+   1200002d8:	df818020 	ld	at,-32736\(gp\)
    1200002dc:	6421072c 	daddiu	at,at,1836
    1200002e0:	88250000 	lwl	a1,0\(at\)
    1200002e4:	98250003 	lwr	a1,3\(at\)
-   1200002e8:	df818028 	ld	at,-32728\(gp\)
+   1200002e8:	df818020 	ld	at,-32736\(gp\)
    1200002ec:	64210738 	daddiu	at,at,1848
    1200002f0:	88250000 	lwl	a1,0\(at\)
    1200002f4:	98250003 	lwr	a1,3\(at\)
-   1200002f8:	df818028 	ld	at,-32728\(gp\)
+   1200002f8:	df818020 	ld	at,-32736\(gp\)
    1200002fc:	6421072c 	daddiu	at,at,1836
    120000300:	0031082d 	daddu	at,at,s1
    120000304:	88250000 	lwl	a1,0\(at\)
    120000308:	98250003 	lwr	a1,3\(at\)
-   12000030c:	df818028 	ld	at,-32728\(gp\)
+   12000030c:	df818020 	ld	at,-32736\(gp\)
    120000310:	64210738 	daddiu	at,at,1848
    120000314:	0031082d 	daddu	at,at,s1
    120000318:	88250000 	lwl	a1,0\(at\)
    12000031c:	98250003 	lwr	a1,3\(at\)
-   120000320:	df818028 	ld	at,-32728\(gp\)
+   120000320:	df818020 	ld	at,-32736\(gp\)
    120000324:	6421074e 	daddiu	at,at,1870
    120000328:	0025082d 	daddu	at,at,a1
    12000032c:	88250000 	lwl	a1,0\(at\)
    120000330:	98250003 	lwr	a1,3\(at\)
-   120000334:	df818028 	ld	at,-32728\(gp\)
+   120000334:	df818020 	ld	at,-32736\(gp\)
    120000338:	64210764 	daddiu	at,at,1892
    12000033c:	0025082d 	daddu	at,at,a1
    120000340:	a8250000 	swl	a1,0\(at\)
    120000344:	b8250003 	swr	a1,3\(at\)
    120000348:	3c050000 	lui	a1,0x0
    12000034c:	00bc282d 	daddu	a1,a1,gp
-   120000350:	dca58038 	ld	a1,-32712\(a1\)
-   120000354:	df858040 	ld	a1,-32704\(gp\)
+   120000350:	dca58058 	ld	a1,-32680\(a1\)
+   120000354:	df858030 	ld	a1,-32720\(gp\)
    120000358:	64a500e0 	daddiu	a1,a1,224
    12000035c:	3c190000 	lui	t9,0x0
    120000360:	033cc82d 	daddu	t9,t9,gp
-   120000364:	df398038 	ld	t9,-32712\(t9\)
-   120000368:	df998040 	ld	t9,-32704\(gp\)
+   120000364:	df398058 	ld	t9,-32680\(t9\)
+   120000368:	df998030 	ld	t9,-32720\(gp\)
    12000036c:	673900e0 	daddiu	t9,t9,224
    120000370:	3c190000 	lui	t9,0x0
    120000374:	033cc82d 	daddu	t9,t9,gp
-   120000378:	df398038 	ld	t9,-32712\(t9\)
+   120000378:	df398058 	ld	t9,-32680\(t9\)
    12000037c:	0411ff58 	bal	1200000e0 <fn>
    120000380:	00000000 	nop
-   120000384:	df998040 	ld	t9,-32704\(gp\)
+   120000384:	df998030 	ld	t9,-32720\(gp\)
    120000388:	673900e0 	daddiu	t9,t9,224
    12000038c:	0411ff54 	bal	1200000e0 <fn>
    120000390:	00000000 	nop
    120000394:	3c050000 	lui	a1,0x0
    120000398:	00bc282d 	daddu	a1,a1,gp
-   12000039c:	dca58048 	ld	a1,-32696\(a1\)
+   12000039c:	dca58050 	ld	a1,-32688\(a1\)
    1200003a0:	3c050000 	lui	a1,0x0
    1200003a4:	00bc282d 	daddu	a1,a1,gp
-   1200003a8:	dca58048 	ld	a1,-32696\(a1\)
+   1200003a8:	dca58050 	ld	a1,-32688\(a1\)
    1200003ac:	64a5000c 	daddiu	a1,a1,12
    1200003b0:	3c050000 	lui	a1,0x0
    1200003b4:	00bc282d 	daddu	a1,a1,gp
-   1200003b8:	dca58048 	ld	a1,-32696\(a1\)
+   1200003b8:	dca58050 	ld	a1,-32688\(a1\)
    1200003bc:	3c010001 	lui	at,0x1
    1200003c0:	3421e240 	ori	at,at,0xe240
    1200003c4:	00a1282d 	daddu	a1,a1,at
    1200003c8:	3c050000 	lui	a1,0x0
    1200003cc:	00bc282d 	daddu	a1,a1,gp
-   1200003d0:	dca58048 	ld	a1,-32696\(a1\)
+   1200003d0:	dca58050 	ld	a1,-32688\(a1\)
    1200003d4:	00b1282d 	daddu	a1,a1,s1
    1200003d8:	3c050000 	lui	a1,0x0
    1200003dc:	00bc282d 	daddu	a1,a1,gp
-   1200003e0:	dca58048 	ld	a1,-32696\(a1\)
+   1200003e0:	dca58050 	ld	a1,-32688\(a1\)
    1200003e4:	64a5000c 	daddiu	a1,a1,12
    1200003e8:	00b1282d 	daddu	a1,a1,s1
    1200003ec:	3c050000 	lui	a1,0x0
    1200003f0:	00bc282d 	daddu	a1,a1,gp
-   1200003f4:	dca58048 	ld	a1,-32696\(a1\)
+   1200003f4:	dca58050 	ld	a1,-32688\(a1\)
    1200003f8:	3c010001 	lui	at,0x1
    1200003fc:	3421e240 	ori	at,at,0xe240
    120000400:	00a1282d 	daddu	a1,a1,at
    120000404:	00b1282d 	daddu	a1,a1,s1
    120000408:	3c050000 	lui	a1,0x0
    12000040c:	00bc282d 	daddu	a1,a1,gp
-   120000410:	dca58048 	ld	a1,-32696\(a1\)
+   120000410:	dca58050 	ld	a1,-32688\(a1\)
    120000414:	dca50000 	ld	a1,0\(a1\)
    120000418:	3c050000 	lui	a1,0x0
    12000041c:	00bc282d 	daddu	a1,a1,gp
-   120000420:	dca58048 	ld	a1,-32696\(a1\)
+   120000420:	dca58050 	ld	a1,-32688\(a1\)
    120000424:	dca5000c 	ld	a1,12\(a1\)
    120000428:	3c050000 	lui	a1,0x0
    12000042c:	00bc282d 	daddu	a1,a1,gp
-   120000430:	dca58048 	ld	a1,-32696\(a1\)
+   120000430:	dca58050 	ld	a1,-32688\(a1\)
    120000434:	00b1282d 	daddu	a1,a1,s1
    120000438:	dca50000 	ld	a1,0\(a1\)
    12000043c:	3c050000 	lui	a1,0x0
    120000440:	00bc282d 	daddu	a1,a1,gp
-   120000444:	dca58048 	ld	a1,-32696\(a1\)
+   120000444:	dca58050 	ld	a1,-32688\(a1\)
    120000448:	00b1282d 	daddu	a1,a1,s1
    12000044c:	dca5000c 	ld	a1,12\(a1\)
    120000450:	3c010000 	lui	at,0x0
    120000454:	003c082d 	daddu	at,at,gp
-   120000458:	dc218048 	ld	at,-32696\(at\)
+   120000458:	dc218050 	ld	at,-32688\(at\)
    12000045c:	0025082d 	daddu	at,at,a1
    120000460:	dc250022 	ld	a1,34\(at\)
    120000464:	3c010000 	lui	at,0x0
    120000468:	003c082d 	daddu	at,at,gp
-   12000046c:	dc218048 	ld	at,-32696\(at\)
+   12000046c:	dc218050 	ld	at,-32688\(at\)
    120000470:	0025082d 	daddu	at,at,a1
    120000474:	fc250038 	sd	a1,56\(at\)
    120000478:	3c010000 	lui	at,0x0
    12000047c:	003c082d 	daddu	at,at,gp
-   120000480:	dc218048 	ld	at,-32696\(at\)
+   120000480:	dc218050 	ld	at,-32688\(at\)
    120000484:	88250000 	lwl	a1,0\(at\)
    120000488:	98250003 	lwr	a1,3\(at\)
    12000048c:	3c010000 	lui	at,0x0
    120000490:	003c082d 	daddu	at,at,gp
-   120000494:	dc218048 	ld	at,-32696\(at\)
+   120000494:	dc218050 	ld	at,-32688\(at\)
    120000498:	6421000c 	daddiu	at,at,12
    12000049c:	88250000 	lwl	a1,0\(at\)
    1200004a0:	98250003 	lwr	a1,3\(at\)
    1200004a4:	3c010000 	lui	at,0x0
    1200004a8:	003c082d 	daddu	at,at,gp
-   1200004ac:	dc218048 	ld	at,-32696\(at\)
+   1200004ac:	dc218050 	ld	at,-32688\(at\)
    1200004b0:	0031082d 	daddu	at,at,s1
    1200004b4:	88250000 	lwl	a1,0\(at\)
    1200004b8:	98250003 	lwr	a1,3\(at\)
    1200004bc:	3c010000 	lui	at,0x0
    1200004c0:	003c082d 	daddu	at,at,gp
-   1200004c4:	dc218048 	ld	at,-32696\(at\)
+   1200004c4:	dc218050 	ld	at,-32688\(at\)
    1200004c8:	6421000c 	daddiu	at,at,12
    1200004cc:	0031082d 	daddu	at,at,s1
    1200004d0:	88250000 	lwl	a1,0\(at\)
    1200004d4:	98250003 	lwr	a1,3\(at\)
    1200004d8:	3c010000 	lui	at,0x0
    1200004dc:	003c082d 	daddu	at,at,gp
-   1200004e0:	dc218048 	ld	at,-32696\(at\)
+   1200004e0:	dc218050 	ld	at,-32688\(at\)
    1200004e4:	64210022 	daddiu	at,at,34
    1200004e8:	0025082d 	daddu	at,at,a1
    1200004ec:	88250000 	lwl	a1,0\(at\)
    1200004f0:	98250003 	lwr	a1,3\(at\)
    1200004f4:	3c010000 	lui	at,0x0
    1200004f8:	003c082d 	daddu	at,at,gp
-   1200004fc:	dc218048 	ld	at,-32696\(at\)
+   1200004fc:	dc218050 	ld	at,-32688\(at\)
    120000500:	64210038 	daddiu	at,at,56
    120000504:	0025082d 	daddu	at,at,a1
    120000508:	a8250000 	swl	a1,0\(at\)
    12000050c:	b8250003 	swr	a1,3\(at\)
-   120000510:	df858028 	ld	a1,-32728\(gp\)
+   120000510:	df858020 	ld	a1,-32736\(gp\)
    120000514:	64a507a4 	daddiu	a1,a1,1956
-   120000518:	df858028 	ld	a1,-32728\(gp\)
+   120000518:	df858020 	ld	a1,-32736\(gp\)
    12000051c:	64a507b0 	daddiu	a1,a1,1968
-   120000520:	df858030 	ld	a1,-32720\(gp\)
+   120000520:	df858028 	ld	a1,-32728\(gp\)
    120000524:	64a5e9e4 	daddiu	a1,a1,-5660
-   120000528:	df858028 	ld	a1,-32728\(gp\)
+   120000528:	df858020 	ld	a1,-32736\(gp\)
    12000052c:	64a507a4 	daddiu	a1,a1,1956
    120000530:	00b1282d 	daddu	a1,a1,s1
-   120000534:	df858028 	ld	a1,-32728\(gp\)
+   120000534:	df858020 	ld	a1,-32736\(gp\)
    120000538:	64a507b0 	daddiu	a1,a1,1968
    12000053c:	00b1282d 	daddu	a1,a1,s1
-   120000540:	df858030 	ld	a1,-32720\(gp\)
+   120000540:	df858028 	ld	a1,-32728\(gp\)
    120000544:	64a5e9e4 	daddiu	a1,a1,-5660
    120000548:	00b1282d 	daddu	a1,a1,s1
-   12000054c:	df858028 	ld	a1,-32728\(gp\)
+   12000054c:	df858020 	ld	a1,-32736\(gp\)
    120000550:	dca507a4 	ld	a1,1956\(a1\)
-   120000554:	df858028 	ld	a1,-32728\(gp\)
+   120000554:	df858020 	ld	a1,-32736\(gp\)
    120000558:	dca507b0 	ld	a1,1968\(a1\)
-   12000055c:	df858028 	ld	a1,-32728\(gp\)
+   12000055c:	df858020 	ld	a1,-32736\(gp\)
    120000560:	00b1282d 	daddu	a1,a1,s1
    120000564:	dca507a4 	ld	a1,1956\(a1\)
-   120000568:	df858028 	ld	a1,-32728\(gp\)
+   120000568:	df858020 	ld	a1,-32736\(gp\)
    12000056c:	00b1282d 	daddu	a1,a1,s1
    120000570:	dca507b0 	ld	a1,1968\(a1\)
-   120000574:	df818028 	ld	at,-32728\(gp\)
+   120000574:	df818020 	ld	at,-32736\(gp\)
    120000578:	0025082d 	daddu	at,at,a1
    12000057c:	dc2507c6 	ld	a1,1990\(at\)
-   120000580:	df818028 	ld	at,-32728\(gp\)
+   120000580:	df818020 	ld	at,-32736\(gp\)
    120000584:	0025082d 	daddu	at,at,a1
    120000588:	fc2507dc 	sd	a1,2012\(at\)
-   12000058c:	df818028 	ld	at,-32728\(gp\)
+   12000058c:	df818020 	ld	at,-32736\(gp\)
    120000590:	642107a4 	daddiu	at,at,1956
    120000594:	88250000 	lwl	a1,0\(at\)
    120000598:	98250003 	lwr	a1,3\(at\)
-   12000059c:	df818028 	ld	at,-32728\(gp\)
+   12000059c:	df818020 	ld	at,-32736\(gp\)
    1200005a0:	642107b0 	daddiu	at,at,1968
    1200005a4:	88250000 	lwl	a1,0\(at\)
    1200005a8:	98250003 	lwr	a1,3\(at\)
-   1200005ac:	df818028 	ld	at,-32728\(gp\)
+   1200005ac:	df818020 	ld	at,-32736\(gp\)
    1200005b0:	642107a4 	daddiu	at,at,1956
    1200005b4:	0031082d 	daddu	at,at,s1
    1200005b8:	88250000 	lwl	a1,0\(at\)
    1200005bc:	98250003 	lwr	a1,3\(at\)
-   1200005c0:	df818028 	ld	at,-32728\(gp\)
+   1200005c0:	df818020 	ld	at,-32736\(gp\)
    1200005c4:	642107b0 	daddiu	at,at,1968
    1200005c8:	0031082d 	daddu	at,at,s1
    1200005cc:	88250000 	lwl	a1,0\(at\)
    1200005d0:	98250003 	lwr	a1,3\(at\)
-   1200005d4:	df818028 	ld	at,-32728\(gp\)
+   1200005d4:	df818020 	ld	at,-32736\(gp\)
    1200005d8:	642107c6 	daddiu	at,at,1990
    1200005dc:	0025082d 	daddu	at,at,a1
    1200005e0:	88250000 	lwl	a1,0\(at\)
    1200005e4:	98250003 	lwr	a1,3\(at\)
-   1200005e8:	df818028 	ld	at,-32728\(gp\)
+   1200005e8:	df818020 	ld	at,-32736\(gp\)
    1200005ec:	642107dc 	daddiu	at,at,2012
    1200005f0:	0025082d 	daddu	at,at,a1
    1200005f4:	a8250000 	swl	a1,0\(at\)
    1200005f8:	b8250003 	swr	a1,3\(at\)
    1200005fc:	3c050000 	lui	a1,0x0
    120000600:	00bc282d 	daddu	a1,a1,gp
-   120000604:	dca58050 	ld	a1,-32688\(a1\)
-   120000608:	df858040 	ld	a1,-32704\(gp\)
+   120000604:	dca58048 	ld	a1,-32696\(a1\)
+   120000608:	df858030 	ld	a1,-32720\(gp\)
    12000060c:	64a506e0 	daddiu	a1,a1,1760
    120000610:	3c190000 	lui	t9,0x0
    120000614:	033cc82d 	daddu	t9,t9,gp
-   120000618:	df398050 	ld	t9,-32688\(t9\)
-   12000061c:	df998040 	ld	t9,-32704\(gp\)
+   120000618:	df398048 	ld	t9,-32696\(t9\)
+   12000061c:	df998030 	ld	t9,-32720\(gp\)
    120000620:	673906e0 	daddiu	t9,t9,1760
    120000624:	3c190000 	lui	t9,0x0
    120000628:	033cc82d 	daddu	t9,t9,gp
-   12000062c:	df398050 	ld	t9,-32688\(t9\)
+   12000062c:	df398048 	ld	t9,-32696\(t9\)
    120000630:	0411002b 	bal	1200006e0 <fn2>
    120000634:	00000000 	nop
-   120000638:	df998040 	ld	t9,-32704\(gp\)
+   120000638:	df998030 	ld	t9,-32720\(gp\)
    12000063c:	673906e0 	daddiu	t9,t9,1760
    120000640:	04110027 	bal	1200006e0 <fn2>
    120000644:	00000000 	nop
    120000648:	3c050000 	lui	a1,0x0
    12000064c:	00bc282d 	daddu	a1,a1,gp
-   120000650:	dca58020 	ld	a1,-32736\(a1\)
+   120000650:	dca58060 	ld	a1,-32672\(a1\)
    120000654:	1000fea2 	b	1200000e0 <fn>
    120000658:	00000000 	nop
    12000065c:	3c050000 	lui	a1,0x0
    120000660:	00bc282d 	daddu	a1,a1,gp
-   120000664:	dca58048 	ld	a1,-32696\(a1\)
+   120000664:	dca58050 	ld	a1,-32688\(a1\)
    120000668:	dca50000 	ld	a1,0\(a1\)
    12000066c:	1000001c 	b	1200006e0 <fn2>
    120000670:	00000000 	nop
-   120000674:	df858028 	ld	a1,-32728\(gp\)
+   120000674:	df858020 	ld	a1,-32736\(gp\)
    120000678:	64a5072c 	daddiu	a1,a1,1836
    12000067c:	1000fe98 	b	1200000e0 <fn>
    120000680:	00000000 	nop
-   120000684:	df858028 	ld	a1,-32728\(gp\)
+   120000684:	df858020 	ld	a1,-32736\(gp\)
    120000688:	64a507b0 	daddiu	a1,a1,1968
    12000068c:	10000014 	b	1200006e0 <fn2>
    120000690:	00000000 	nop
-   120000694:	df858030 	ld	a1,-32720\(gp\)
+   120000694:	df858028 	ld	a1,-32728\(gp\)
    120000698:	64a5e96c 	daddiu	a1,a1,-5780
    12000069c:	1000fe90 	b	1200000e0 <fn>
    1200006a0:	00000000 	nop
-   1200006a4:	df858028 	ld	a1,-32728\(gp\)
+   1200006a4:	df858020 	ld	a1,-32736\(gp\)
    1200006a8:	dca507a4 	ld	a1,1956\(a1\)
    1200006ac:	1000000c 	b	1200006e0 <fn2>
    1200006b0:	00000000 	nop
-   1200006b4:	df858028 	ld	a1,-32728\(gp\)
+   1200006b4:	df858020 	ld	a1,-32736\(gp\)
    1200006b8:	dca50738 	ld	a1,1848\(a1\)
    1200006bc:	1000fe88 	b	1200000e0 <fn>
    1200006c0:	00000000 	nop
-   1200006c4:	df818028 	ld	at,-32728\(gp\)
+   1200006c4:	df818020 	ld	at,-32736\(gp\)
    1200006c8:	0025082d 	daddu	at,at,a1
    1200006cc:	dc2507c6 	ld	a1,1990\(at\)
    1200006d0:	10000003 	b	1200006e0 <fn2>
@@ -427,18 +427,18 @@ Disassembly of section \.got:
    1200107e8:	80000000 	.*
    1200107ec:	00000000 	.*
    1200107f0:	00000001 	.*
-   1200107f4:	2001072c 	.*
+   1200107f4:	20010000 	.*
    1200107f8:	00000001 	.*
-   1200107fc:	20010000 	.*
+   1200107fc:	20030000 	.*
    120010800:	00000001 	.*
-   120010804:	20030000 	.*
-   120010808:	00000001 	.*
-   12001080c:	200000e0 	.*
-   120010810:	00000001 	.*
-   120010814:	20000000 	.*
+   120010804:	20000000 	.*
+	\.\.\.
    120010818:	00000001 	.*
-   12001081c:	200107a4 	.*
+   12001081c:	200006e0 	.*
    120010820:	00000001 	.*
-   120010824:	200006e0 	.*
-	\.\.\.
+   120010824:	200107a4 	.*
+   120010828:	00000001 	.*
+   12001082c:	200000e0 	.*
+   120010830:	00000001 	.*
+   120010834:	2001072c 	.*
 #pass
diff --git a/ld/testsuite/ld-mips-elf/elf-rel-xgot-n64.d b/ld/testsuite/ld-mips-elf/elf-rel-xgot-n64.d
index 6a9ea40..72ac666 100644
--- a/ld/testsuite/ld-mips-elf/elf-rel-xgot-n64.d
+++ b/ld/testsuite/ld-mips-elf/elf-rel-xgot-n64.d
@@ -19,382 +19,382 @@ Disassembly of section \.text:
 0000000010000110 <fn>:
     10000110:	3c050000 	lui	a1,0x0
     10000114:	00bc282d 	daddu	a1,a1,gp
-    10000118:	dca58020 	ld	a1,-32736\(a1\)
+    10000118:	dca58060 	ld	a1,-32672\(a1\)
     1000011c:	3c050000 	lui	a1,0x0
     10000120:	00bc282d 	daddu	a1,a1,gp
-    10000124:	dca58020 	ld	a1,-32736\(a1\)
+    10000124:	dca58060 	ld	a1,-32672\(a1\)
     10000128:	64a5000c 	daddiu	a1,a1,12
     1000012c:	3c050000 	lui	a1,0x0
     10000130:	00bc282d 	daddu	a1,a1,gp
-    10000134:	dca58020 	ld	a1,-32736\(a1\)
+    10000134:	dca58060 	ld	a1,-32672\(a1\)
     10000138:	3c010001 	lui	at,0x1
     1000013c:	3421e240 	ori	at,at,0xe240
     10000140:	00a1282d 	daddu	a1,a1,at
     10000144:	3c050000 	lui	a1,0x0
     10000148:	00bc282d 	daddu	a1,a1,gp
-    1000014c:	dca58020 	ld	a1,-32736\(a1\)
+    1000014c:	dca58060 	ld	a1,-32672\(a1\)
     10000150:	00b1282d 	daddu	a1,a1,s1
     10000154:	3c050000 	lui	a1,0x0
     10000158:	00bc282d 	daddu	a1,a1,gp
-    1000015c:	dca58020 	ld	a1,-32736\(a1\)
+    1000015c:	dca58060 	ld	a1,-32672\(a1\)
     10000160:	64a5000c 	daddiu	a1,a1,12
     10000164:	00b1282d 	daddu	a1,a1,s1
     10000168:	3c050000 	lui	a1,0x0
     1000016c:	00bc282d 	daddu	a1,a1,gp
-    10000170:	dca58020 	ld	a1,-32736\(a1\)
+    10000170:	dca58060 	ld	a1,-32672\(a1\)
     10000174:	3c010001 	lui	at,0x1
     10000178:	3421e240 	ori	at,at,0xe240
     1000017c:	00a1282d 	daddu	a1,a1,at
     10000180:	00b1282d 	daddu	a1,a1,s1
     10000184:	3c050000 	lui	a1,0x0
     10000188:	00bc282d 	daddu	a1,a1,gp
-    1000018c:	dca58020 	ld	a1,-32736\(a1\)
+    1000018c:	dca58060 	ld	a1,-32672\(a1\)
     10000190:	dca50000 	ld	a1,0\(a1\)
     10000194:	3c050000 	lui	a1,0x0
     10000198:	00bc282d 	daddu	a1,a1,gp
-    1000019c:	dca58020 	ld	a1,-32736\(a1\)
+    1000019c:	dca58060 	ld	a1,-32672\(a1\)
     100001a0:	dca5000c 	ld	a1,12\(a1\)
     100001a4:	3c050000 	lui	a1,0x0
     100001a8:	00bc282d 	daddu	a1,a1,gp
-    100001ac:	dca58020 	ld	a1,-32736\(a1\)
+    100001ac:	dca58060 	ld	a1,-32672\(a1\)
     100001b0:	00b1282d 	daddu	a1,a1,s1
     100001b4:	dca50000 	ld	a1,0\(a1\)
     100001b8:	3c050000 	lui	a1,0x0
     100001bc:	00bc282d 	daddu	a1,a1,gp
-    100001c0:	dca58020 	ld	a1,-32736\(a1\)
+    100001c0:	dca58060 	ld	a1,-32672\(a1\)
     100001c4:	00b1282d 	daddu	a1,a1,s1
     100001c8:	dca5000c 	ld	a1,12\(a1\)
     100001cc:	3c010000 	lui	at,0x0
     100001d0:	003c082d 	daddu	at,at,gp
-    100001d4:	dc218020 	ld	at,-32736\(at\)
+    100001d4:	dc218060 	ld	at,-32672\(at\)
     100001d8:	0025082d 	daddu	at,at,a1
     100001dc:	dc250022 	ld	a1,34\(at\)
     100001e0:	3c010000 	lui	at,0x0
     100001e4:	003c082d 	daddu	at,at,gp
-    100001e8:	dc218020 	ld	at,-32736\(at\)
+    100001e8:	dc218060 	ld	at,-32672\(at\)
     100001ec:	0025082d 	daddu	at,at,a1
     100001f0:	fc250038 	sd	a1,56\(at\)
     100001f4:	3c010000 	lui	at,0x0
     100001f8:	003c082d 	daddu	at,at,gp
-    100001fc:	dc218020 	ld	at,-32736\(at\)
+    100001fc:	dc218060 	ld	at,-32672\(at\)
     10000200:	88250000 	lwl	a1,0\(at\)
     10000204:	98250003 	lwr	a1,3\(at\)
     10000208:	3c010000 	lui	at,0x0
     1000020c:	003c082d 	daddu	at,at,gp
-    10000210:	dc218020 	ld	at,-32736\(at\)
+    10000210:	dc218060 	ld	at,-32672\(at\)
     10000214:	6421000c 	daddiu	at,at,12
     10000218:	88250000 	lwl	a1,0\(at\)
     1000021c:	98250003 	lwr	a1,3\(at\)
     10000220:	3c010000 	lui	at,0x0
     10000224:	003c082d 	daddu	at,at,gp
-    10000228:	dc218020 	ld	at,-32736\(at\)
+    10000228:	dc218060 	ld	at,-32672\(at\)
     1000022c:	0031082d 	daddu	at,at,s1
     10000230:	88250000 	lwl	a1,0\(at\)
     10000234:	98250003 	lwr	a1,3\(at\)
     10000238:	3c010000 	lui	at,0x0
     1000023c:	003c082d 	daddu	at,at,gp
-    10000240:	dc218020 	ld	at,-32736\(at\)
+    10000240:	dc218060 	ld	at,-32672\(at\)
     10000244:	6421000c 	daddiu	at,at,12
     10000248:	0031082d 	daddu	at,at,s1
     1000024c:	88250000 	lwl	a1,0\(at\)
     10000250:	98250003 	lwr	a1,3\(at\)
     10000254:	3c010000 	lui	at,0x0
     10000258:	003c082d 	daddu	at,at,gp
-    1000025c:	dc218020 	ld	at,-32736\(at\)
+    1000025c:	dc218060 	ld	at,-32672\(at\)
     10000260:	64210022 	daddiu	at,at,34
     10000264:	0025082d 	daddu	at,at,a1
     10000268:	88250000 	lwl	a1,0\(at\)
     1000026c:	98250003 	lwr	a1,3\(at\)
     10000270:	3c010000 	lui	at,0x0
     10000274:	003c082d 	daddu	at,at,gp
-    10000278:	dc218020 	ld	at,-32736\(at\)
+    10000278:	dc218060 	ld	at,-32672\(at\)
     1000027c:	64210038 	daddiu	at,at,56
     10000280:	0025082d 	daddu	at,at,a1
     10000284:	a8250000 	swl	a1,0\(at\)
     10000288:	b8250003 	swr	a1,3\(at\)
-    1000028c:	df858028 	ld	a1,-32728\(gp\)
+    1000028c:	df858020 	ld	a1,-32736\(gp\)
     10000290:	64a5075c 	daddiu	a1,a1,1884
-    10000294:	df858028 	ld	a1,-32728\(gp\)
+    10000294:	df858020 	ld	a1,-32736\(gp\)
     10000298:	64a50768 	daddiu	a1,a1,1896
-    1000029c:	df858030 	ld	a1,-32720\(gp\)
+    1000029c:	df858028 	ld	a1,-32728\(gp\)
     100002a0:	64a5e99c 	daddiu	a1,a1,-5732
-    100002a4:	df858028 	ld	a1,-32728\(gp\)
+    100002a4:	df858020 	ld	a1,-32736\(gp\)
     100002a8:	64a5075c 	daddiu	a1,a1,1884
     100002ac:	00b1282d 	daddu	a1,a1,s1
-    100002b0:	df858028 	ld	a1,-32728\(gp\)
+    100002b0:	df858020 	ld	a1,-32736\(gp\)
     100002b4:	64a50768 	daddiu	a1,a1,1896
     100002b8:	00b1282d 	daddu	a1,a1,s1
-    100002bc:	df858030 	ld	a1,-32720\(gp\)
+    100002bc:	df858028 	ld	a1,-32728\(gp\)
     100002c0:	64a5e99c 	daddiu	a1,a1,-5732
     100002c4:	00b1282d 	daddu	a1,a1,s1
-    100002c8:	df858028 	ld	a1,-32728\(gp\)
+    100002c8:	df858020 	ld	a1,-32736\(gp\)
     100002cc:	dca5075c 	ld	a1,1884\(a1\)
-    100002d0:	df858028 	ld	a1,-32728\(gp\)
+    100002d0:	df858020 	ld	a1,-32736\(gp\)
     100002d4:	dca50768 	ld	a1,1896\(a1\)
-    100002d8:	df858028 	ld	a1,-32728\(gp\)
+    100002d8:	df858020 	ld	a1,-32736\(gp\)
     100002dc:	00b1282d 	daddu	a1,a1,s1
     100002e0:	dca5075c 	ld	a1,1884\(a1\)
-    100002e4:	df858028 	ld	a1,-32728\(gp\)
+    100002e4:	df858020 	ld	a1,-32736\(gp\)
     100002e8:	00b1282d 	daddu	a1,a1,s1
     100002ec:	dca50768 	ld	a1,1896\(a1\)
-    100002f0:	df818028 	ld	at,-32728\(gp\)
+    100002f0:	df818020 	ld	at,-32736\(gp\)
     100002f4:	0025082d 	daddu	at,at,a1
     100002f8:	dc25077e 	ld	a1,1918\(at\)
-    100002fc:	df818028 	ld	at,-32728\(gp\)
+    100002fc:	df818020 	ld	at,-32736\(gp\)
     10000300:	0025082d 	daddu	at,at,a1
     10000304:	fc250794 	sd	a1,1940\(at\)
-    10000308:	df818028 	ld	at,-32728\(gp\)
+    10000308:	df818020 	ld	at,-32736\(gp\)
     1000030c:	6421075c 	daddiu	at,at,1884
     10000310:	88250000 	lwl	a1,0\(at\)
     10000314:	98250003 	lwr	a1,3\(at\)
-    10000318:	df818028 	ld	at,-32728\(gp\)
+    10000318:	df818020 	ld	at,-32736\(gp\)
     1000031c:	64210768 	daddiu	at,at,1896
     10000320:	88250000 	lwl	a1,0\(at\)
     10000324:	98250003 	lwr	a1,3\(at\)
-    10000328:	df818028 	ld	at,-32728\(gp\)
+    10000328:	df818020 	ld	at,-32736\(gp\)
     1000032c:	6421075c 	daddiu	at,at,1884
     10000330:	0031082d 	daddu	at,at,s1
     10000334:	88250000 	lwl	a1,0\(at\)
     10000338:	98250003 	lwr	a1,3\(at\)
-    1000033c:	df818028 	ld	at,-32728\(gp\)
+    1000033c:	df818020 	ld	at,-32736\(gp\)
     10000340:	64210768 	daddiu	at,at,1896
     10000344:	0031082d 	daddu	at,at,s1
     10000348:	88250000 	lwl	a1,0\(at\)
     1000034c:	98250003 	lwr	a1,3\(at\)
-    10000350:	df818028 	ld	at,-32728\(gp\)
+    10000350:	df818020 	ld	at,-32736\(gp\)
     10000354:	6421077e 	daddiu	at,at,1918
     10000358:	0025082d 	daddu	at,at,a1
     1000035c:	88250000 	lwl	a1,0\(at\)
     10000360:	98250003 	lwr	a1,3\(at\)
-    10000364:	df818028 	ld	at,-32728\(gp\)
+    10000364:	df818020 	ld	at,-32736\(gp\)
     10000368:	64210794 	daddiu	at,at,1940
     1000036c:	0025082d 	daddu	at,at,a1
     10000370:	a8250000 	swl	a1,0\(at\)
     10000374:	b8250003 	swr	a1,3\(at\)
     10000378:	3c050000 	lui	a1,0x0
     1000037c:	00bc282d 	daddu	a1,a1,gp
-    10000380:	dca58038 	ld	a1,-32712\(a1\)
-    10000384:	df858040 	ld	a1,-32704\(gp\)
+    10000380:	dca58058 	ld	a1,-32680\(a1\)
+    10000384:	df858030 	ld	a1,-32720\(gp\)
     10000388:	64a50110 	daddiu	a1,a1,272
     1000038c:	3c190000 	lui	t9,0x0
     10000390:	033cc82d 	daddu	t9,t9,gp
-    10000394:	df398038 	ld	t9,-32712\(t9\)
-    10000398:	df998040 	ld	t9,-32704\(gp\)
+    10000394:	df398058 	ld	t9,-32680\(t9\)
+    10000398:	df998030 	ld	t9,-32720\(gp\)
     1000039c:	67390110 	daddiu	t9,t9,272
     100003a0:	3c190000 	lui	t9,0x0
     100003a4:	033cc82d 	daddu	t9,t9,gp
-    100003a8:	df398038 	ld	t9,-32712\(t9\)
+    100003a8:	df398058 	ld	t9,-32680\(t9\)
     100003ac:	0411ff58 	bal	10000110 <fn>
     100003b0:	00000000 	nop
-    100003b4:	df998040 	ld	t9,-32704\(gp\)
+    100003b4:	df998030 	ld	t9,-32720\(gp\)
     100003b8:	67390110 	daddiu	t9,t9,272
     100003bc:	0411ff54 	bal	10000110 <fn>
     100003c0:	00000000 	nop
     100003c4:	3c050000 	lui	a1,0x0
     100003c8:	00bc282d 	daddu	a1,a1,gp
-    100003cc:	dca58048 	ld	a1,-32696\(a1\)
+    100003cc:	dca58050 	ld	a1,-32688\(a1\)
     100003d0:	3c050000 	lui	a1,0x0
     100003d4:	00bc282d 	daddu	a1,a1,gp
-    100003d8:	dca58048 	ld	a1,-32696\(a1\)
+    100003d8:	dca58050 	ld	a1,-32688\(a1\)
     100003dc:	64a5000c 	daddiu	a1,a1,12
     100003e0:	3c050000 	lui	a1,0x0
     100003e4:	00bc282d 	daddu	a1,a1,gp
-    100003e8:	dca58048 	ld	a1,-32696\(a1\)
+    100003e8:	dca58050 	ld	a1,-32688\(a1\)
     100003ec:	3c010001 	lui	at,0x1
     100003f0:	3421e240 	ori	at,at,0xe240
     100003f4:	00a1282d 	daddu	a1,a1,at
     100003f8:	3c050000 	lui	a1,0x0
     100003fc:	00bc282d 	daddu	a1,a1,gp
-    10000400:	dca58048 	ld	a1,-32696\(a1\)
+    10000400:	dca58050 	ld	a1,-32688\(a1\)
     10000404:	00b1282d 	daddu	a1,a1,s1
     10000408:	3c050000 	lui	a1,0x0
     1000040c:	00bc282d 	daddu	a1,a1,gp
-    10000410:	dca58048 	ld	a1,-32696\(a1\)
+    10000410:	dca58050 	ld	a1,-32688\(a1\)
     10000414:	64a5000c 	daddiu	a1,a1,12
     10000418:	00b1282d 	daddu	a1,a1,s1
     1000041c:	3c050000 	lui	a1,0x0
     10000420:	00bc282d 	daddu	a1,a1,gp
-    10000424:	dca58048 	ld	a1,-32696\(a1\)
+    10000424:	dca58050 	ld	a1,-32688\(a1\)
     10000428:	3c010001 	lui	at,0x1
     1000042c:	3421e240 	ori	at,at,0xe240
     10000430:	00a1282d 	daddu	a1,a1,at
     10000434:	00b1282d 	daddu	a1,a1,s1
     10000438:	3c050000 	lui	a1,0x0
     1000043c:	00bc282d 	daddu	a1,a1,gp
-    10000440:	dca58048 	ld	a1,-32696\(a1\)
+    10000440:	dca58050 	ld	a1,-32688\(a1\)
     10000444:	dca50000 	ld	a1,0\(a1\)
     10000448:	3c050000 	lui	a1,0x0
     1000044c:	00bc282d 	daddu	a1,a1,gp
-    10000450:	dca58048 	ld	a1,-32696\(a1\)
+    10000450:	dca58050 	ld	a1,-32688\(a1\)
     10000454:	dca5000c 	ld	a1,12\(a1\)
     10000458:	3c050000 	lui	a1,0x0
     1000045c:	00bc282d 	daddu	a1,a1,gp
-    10000460:	dca58048 	ld	a1,-32696\(a1\)
+    10000460:	dca58050 	ld	a1,-32688\(a1\)
     10000464:	00b1282d 	daddu	a1,a1,s1
     10000468:	dca50000 	ld	a1,0\(a1\)
     1000046c:	3c050000 	lui	a1,0x0
     10000470:	00bc282d 	daddu	a1,a1,gp
-    10000474:	dca58048 	ld	a1,-32696\(a1\)
+    10000474:	dca58050 	ld	a1,-32688\(a1\)
     10000478:	00b1282d 	daddu	a1,a1,s1
     1000047c:	dca5000c 	ld	a1,12\(a1\)
     10000480:	3c010000 	lui	at,0x0
     10000484:	003c082d 	daddu	at,at,gp
-    10000488:	dc218048 	ld	at,-32696\(at\)
+    10000488:	dc218050 	ld	at,-32688\(at\)
     1000048c:	0025082d 	daddu	at,at,a1
     10000490:	dc250022 	ld	a1,34\(at\)
     10000494:	3c010000 	lui	at,0x0
     10000498:	003c082d 	daddu	at,at,gp
-    1000049c:	dc218048 	ld	at,-32696\(at\)
+    1000049c:	dc218050 	ld	at,-32688\(at\)
     100004a0:	0025082d 	daddu	at,at,a1
     100004a4:	fc250038 	sd	a1,56\(at\)
     100004a8:	3c010000 	lui	at,0x0
     100004ac:	003c082d 	daddu	at,at,gp
-    100004b0:	dc218048 	ld	at,-32696\(at\)
+    100004b0:	dc218050 	ld	at,-32688\(at\)
     100004b4:	88250000 	lwl	a1,0\(at\)
     100004b8:	98250003 	lwr	a1,3\(at\)
     100004bc:	3c010000 	lui	at,0x0
     100004c0:	003c082d 	daddu	at,at,gp
-    100004c4:	dc218048 	ld	at,-32696\(at\)
+    100004c4:	dc218050 	ld	at,-32688\(at\)
     100004c8:	6421000c 	daddiu	at,at,12
     100004cc:	88250000 	lwl	a1,0\(at\)
     100004d0:	98250003 	lwr	a1,3\(at\)
     100004d4:	3c010000 	lui	at,0x0
     100004d8:	003c082d 	daddu	at,at,gp
-    100004dc:	dc218048 	ld	at,-32696\(at\)
+    100004dc:	dc218050 	ld	at,-32688\(at\)
     100004e0:	0031082d 	daddu	at,at,s1
     100004e4:	88250000 	lwl	a1,0\(at\)
     100004e8:	98250003 	lwr	a1,3\(at\)
     100004ec:	3c010000 	lui	at,0x0
     100004f0:	003c082d 	daddu	at,at,gp
-    100004f4:	dc218048 	ld	at,-32696\(at\)
+    100004f4:	dc218050 	ld	at,-32688\(at\)
     100004f8:	6421000c 	daddiu	at,at,12
     100004fc:	0031082d 	daddu	at,at,s1
     10000500:	88250000 	lwl	a1,0\(at\)
     10000504:	98250003 	lwr	a1,3\(at\)
     10000508:	3c010000 	lui	at,0x0
     1000050c:	003c082d 	daddu	at,at,gp
-    10000510:	dc218048 	ld	at,-32696\(at\)
+    10000510:	dc218050 	ld	at,-32688\(at\)
     10000514:	64210022 	daddiu	at,at,34
     10000518:	0025082d 	daddu	at,at,a1
     1000051c:	88250000 	lwl	a1,0\(at\)
     10000520:	98250003 	lwr	a1,3\(at\)
     10000524:	3c010000 	lui	at,0x0
     10000528:	003c082d 	daddu	at,at,gp
-    1000052c:	dc218048 	ld	at,-32696\(at\)
+    1000052c:	dc218050 	ld	at,-32688\(at\)
     10000530:	64210038 	daddiu	at,at,56
     10000534:	0025082d 	daddu	at,at,a1
     10000538:	a8250000 	swl	a1,0\(at\)
     1000053c:	b8250003 	swr	a1,3\(at\)
-    10000540:	df858028 	ld	a1,-32728\(gp\)
+    10000540:	df858020 	ld	a1,-32736\(gp\)
     10000544:	64a507d4 	daddiu	a1,a1,2004
-    10000548:	df858028 	ld	a1,-32728\(gp\)
+    10000548:	df858020 	ld	a1,-32736\(gp\)
     1000054c:	64a507e0 	daddiu	a1,a1,2016
-    10000550:	df858030 	ld	a1,-32720\(gp\)
+    10000550:	df858028 	ld	a1,-32728\(gp\)
     10000554:	64a5ea14 	daddiu	a1,a1,-5612
-    10000558:	df858028 	ld	a1,-32728\(gp\)
+    10000558:	df858020 	ld	a1,-32736\(gp\)
     1000055c:	64a507d4 	daddiu	a1,a1,2004
     10000560:	00b1282d 	daddu	a1,a1,s1
-    10000564:	df858028 	ld	a1,-32728\(gp\)
+    10000564:	df858020 	ld	a1,-32736\(gp\)
     10000568:	64a507e0 	daddiu	a1,a1,2016
     1000056c:	00b1282d 	daddu	a1,a1,s1
-    10000570:	df858030 	ld	a1,-32720\(gp\)
+    10000570:	df858028 	ld	a1,-32728\(gp\)
     10000574:	64a5ea14 	daddiu	a1,a1,-5612
     10000578:	00b1282d 	daddu	a1,a1,s1
-    1000057c:	df858028 	ld	a1,-32728\(gp\)
+    1000057c:	df858020 	ld	a1,-32736\(gp\)
     10000580:	dca507d4 	ld	a1,2004\(a1\)
-    10000584:	df858028 	ld	a1,-32728\(gp\)
+    10000584:	df858020 	ld	a1,-32736\(gp\)
     10000588:	dca507e0 	ld	a1,2016\(a1\)
-    1000058c:	df858028 	ld	a1,-32728\(gp\)
+    1000058c:	df858020 	ld	a1,-32736\(gp\)
     10000590:	00b1282d 	daddu	a1,a1,s1
     10000594:	dca507d4 	ld	a1,2004\(a1\)
-    10000598:	df858028 	ld	a1,-32728\(gp\)
+    10000598:	df858020 	ld	a1,-32736\(gp\)
     1000059c:	00b1282d 	daddu	a1,a1,s1
     100005a0:	dca507e0 	ld	a1,2016\(a1\)
-    100005a4:	df818028 	ld	at,-32728\(gp\)
+    100005a4:	df818020 	ld	at,-32736\(gp\)
     100005a8:	0025082d 	daddu	at,at,a1
     100005ac:	dc2507f6 	ld	a1,2038\(at\)
-    100005b0:	df818028 	ld	at,-32728\(gp\)
+    100005b0:	df818020 	ld	at,-32736\(gp\)
     100005b4:	0025082d 	daddu	at,at,a1
     100005b8:	fc25080c 	sd	a1,2060\(at\)
-    100005bc:	df818028 	ld	at,-32728\(gp\)
+    100005bc:	df818020 	ld	at,-32736\(gp\)
     100005c0:	642107d4 	daddiu	at,at,2004
     100005c4:	88250000 	lwl	a1,0\(at\)
     100005c8:	98250003 	lwr	a1,3\(at\)
-    100005cc:	df818028 	ld	at,-32728\(gp\)
+    100005cc:	df818020 	ld	at,-32736\(gp\)
     100005d0:	642107e0 	daddiu	at,at,2016
     100005d4:	88250000 	lwl	a1,0\(at\)
     100005d8:	98250003 	lwr	a1,3\(at\)
-    100005dc:	df818028 	ld	at,-32728\(gp\)
+    100005dc:	df818020 	ld	at,-32736\(gp\)
     100005e0:	642107d4 	daddiu	at,at,2004
     100005e4:	0031082d 	daddu	at,at,s1
     100005e8:	88250000 	lwl	a1,0\(at\)
     100005ec:	98250003 	lwr	a1,3\(at\)
-    100005f0:	df818028 	ld	at,-32728\(gp\)
+    100005f0:	df818020 	ld	at,-32736\(gp\)
     100005f4:	642107e0 	daddiu	at,at,2016
     100005f8:	0031082d 	daddu	at,at,s1
     100005fc:	88250000 	lwl	a1,0\(at\)
     10000600:	98250003 	lwr	a1,3\(at\)
-    10000604:	df818028 	ld	at,-32728\(gp\)
+    10000604:	df818020 	ld	at,-32736\(gp\)
     10000608:	642107f6 	daddiu	at,at,2038
     1000060c:	0025082d 	daddu	at,at,a1
     10000610:	88250000 	lwl	a1,0\(at\)
     10000614:	98250003 	lwr	a1,3\(at\)
-    10000618:	df818028 	ld	at,-32728\(gp\)
+    10000618:	df818020 	ld	at,-32736\(gp\)
     1000061c:	6421080c 	daddiu	at,at,2060
     10000620:	0025082d 	daddu	at,at,a1
     10000624:	a8250000 	swl	a1,0\(at\)
     10000628:	b8250003 	swr	a1,3\(at\)
     1000062c:	3c050000 	lui	a1,0x0
     10000630:	00bc282d 	daddu	a1,a1,gp
-    10000634:	dca58050 	ld	a1,-32688\(a1\)
-    10000638:	df858040 	ld	a1,-32704\(gp\)
+    10000634:	dca58048 	ld	a1,-32696\(a1\)
+    10000638:	df858030 	ld	a1,-32720\(gp\)
     1000063c:	64a50710 	daddiu	a1,a1,1808
     10000640:	3c190000 	lui	t9,0x0
     10000644:	033cc82d 	daddu	t9,t9,gp
-    10000648:	df398050 	ld	t9,-32688\(t9\)
-    1000064c:	df998040 	ld	t9,-32704\(gp\)
+    10000648:	df398048 	ld	t9,-32696\(t9\)
+    1000064c:	df998030 	ld	t9,-32720\(gp\)
     10000650:	67390710 	daddiu	t9,t9,1808
     10000654:	3c190000 	lui	t9,0x0
     10000658:	033cc82d 	daddu	t9,t9,gp
-    1000065c:	df398050 	ld	t9,-32688\(t9\)
+    1000065c:	df398048 	ld	t9,-32696\(t9\)
     10000660:	0411002b 	bal	10000710 <fn2>
     10000664:	00000000 	nop
-    10000668:	df998040 	ld	t9,-32704\(gp\)
+    10000668:	df998030 	ld	t9,-32720\(gp\)
     1000066c:	67390710 	daddiu	t9,t9,1808
     10000670:	04110027 	bal	10000710 <fn2>
     10000674:	00000000 	nop
     10000678:	3c050000 	lui	a1,0x0
     1000067c:	00bc282d 	daddu	a1,a1,gp
-    10000680:	dca58020 	ld	a1,-32736\(a1\)
+    10000680:	dca58060 	ld	a1,-32672\(a1\)
     10000684:	1000fea2 	b	10000110 <fn>
     10000688:	00000000 	nop
     1000068c:	3c050000 	lui	a1,0x0
     10000690:	00bc282d 	daddu	a1,a1,gp
-    10000694:	dca58048 	ld	a1,-32696\(a1\)
+    10000694:	dca58050 	ld	a1,-32688\(a1\)
     10000698:	dca50000 	ld	a1,0\(a1\)
     1000069c:	1000001c 	b	10000710 <fn2>
     100006a0:	00000000 	nop
-    100006a4:	df858028 	ld	a1,-32728\(gp\)
+    100006a4:	df858020 	ld	a1,-32736\(gp\)
     100006a8:	64a5075c 	daddiu	a1,a1,1884
     100006ac:	1000fe98 	b	10000110 <fn>
     100006b0:	00000000 	nop
-    100006b4:	df858028 	ld	a1,-32728\(gp\)
+    100006b4:	df858020 	ld	a1,-32736\(gp\)
     100006b8:	64a507e0 	daddiu	a1,a1,2016
     100006bc:	10000014 	b	10000710 <fn2>
     100006c0:	00000000 	nop
-    100006c4:	df858030 	ld	a1,-32720\(gp\)
+    100006c4:	df858028 	ld	a1,-32728\(gp\)
     100006c8:	64a5e99c 	daddiu	a1,a1,-5732
     100006cc:	1000fe90 	b	10000110 <fn>
     100006d0:	00000000 	nop
-    100006d4:	df858028 	ld	a1,-32728\(gp\)
+    100006d4:	df858020 	ld	a1,-32736\(gp\)
     100006d8:	dca507d4 	ld	a1,2004\(a1\)
     100006dc:	1000000c 	b	10000710 <fn2>
     100006e0:	00000000 	nop
-    100006e4:	df858028 	ld	a1,-32728\(gp\)
+    100006e4:	df858020 	ld	a1,-32736\(gp\)
     100006e8:	dca50768 	ld	a1,1896\(a1\)
     100006ec:	1000fe88 	b	10000110 <fn>
     100006f0:	00000000 	nop
-    100006f4:	df818028 	ld	at,-32728\(gp\)
+    100006f4:	df818020 	ld	at,-32736\(gp\)
     100006f8:	0025082d 	daddu	at,at,a1
     100006fc:	dc2507f6 	ld	a1,2038\(at\)
     10000700:	10000003 	b	10000710 <fn2>
@@ -422,18 +422,17 @@ Disassembly of section \.got:
 	\.\.\.
     10010818:	80000000 	.*
 	\.\.\.
-    10010824:	1001075c 	.*
+    10010824:	10010000 	.*
     10010828:	00000000 	.*
-    1001082c:	10010000 	.*
+    1001082c:	10030000 	.*
     10010830:	00000000 	.*
-    10010834:	10030000 	.*
+    10010834:	10000000 	.*
     10010838:	00000000 	.*
-    1001083c:	10000110 	.*
-    10010840:	00000000 	.*
-    10010844:	10000000 	.*
-    10010848:	00000000 	.*
-    1001084c:	100107d4 	.*
+	\.\.\.
+    1001084c:	10000710 	.*
     10010850:	00000000 	.*
-    10010854:	10000710 	.*
+    10010854:	100107d4 	.*
     10010858:	00000000 	.*
-	\.\.\.
+    1001085c:	10000110 	.*
+    10010860:	00000000 	.*
+    10010864:	1001075c 	.*

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] [MIPS] Ensure that local GOT entries accessed via a 16-bit index come first
  2014-04-16 13:25 [PATCH] [MIPS] Ensure that local GOT entries accessed via a 16-bit index come first Kwok Cheung Yeung
@ 2014-04-16 19:29 ` Richard Sandiford
  2014-04-16 21:43   ` Maciej W. Rozycki
  0 siblings, 1 reply; 5+ messages in thread
From: Richard Sandiford @ 2014-04-16 19:29 UTC (permalink / raw)
  To: Kwok Cheung Yeung; +Cc: binutils, jack.carter, hjl.tools, Maciej W. Rozycki

Kwok Cheung Yeung <kcy@codesourcery.com> writes:
>> We have a "canadian_cross" build of LLVM and have been getting off and
>> on link time errors from one of the input object files
>> RecursiveASTVisitorTest.o. :
>>
>> (.text._ZN4llvm25SmallVectorTemplateCommonIN5clang19RecursiveASTVisitorINS1_11AttrVisitorEE10EnqueueJobEvE4backEv[_ZN4llvm25SmallVectorTemplateCommonIN5clang19RecursiveASTVisitorINS1_11AttrVisitorEE10EnqueueJobEvE4backEv]+0x64):
>> relocation truncated to fit: R_MIPS_GOT16 against `no symbol'
>>
>> Basically building LLVM with a MIPS GCC. I noticed that the section
>> count was way above 16 bits and seized on that as being the culprit.
>>
> From the information you and H.J. have pointed me to, I need to dig
>> further. Why I never knew about this trap door for section overflow is
>> beyond me :-| Probably since I never hit the limit myself.
>
> I have been investigating this issue with the LLVM Canadian Cross build 
> on MIPS. The problem arises mainly because of the way GCC constructs 
> calls to member functions of C++ classes in PIC code - each member 
> function of each class is placed in a different section (which, coupled 
> with the use of class templates, explains the huge number of sections in 
> the problematic object file). A call to a member function generates this 
> type of code (with -mxgot):
>
>        2c:       3c020000        lui     v0,0x0
>                          2c: R_MIPS_GOT_HI16 
> _ZN5clang33ParmVarDeclVisitorForImplicitCodeC1Ev
>        30:       005c1021        addu    v0,v0,gp
>        34:       8c420000        lw      v0,0(v0)
>                          34: R_MIPS_GOT_LO16 
> _ZN5clang33ParmVarDeclVisitorForImplicitCodeC1Ev
>        38:       0040c821        move    t9,v0
>        3c:       0320f809        jalr    t9
>                          3c: R_MIPS_JALR 
> _ZN5clang33ParmVarDeclVisitorForImplicitCodeC1Ev
>        40:       00000000        nop
>
> meaning that each call to a member function may result in a new entry 
> being placed in the local section of the GOT (if the symbol is local or 
> mips_use_local_got_p() evaluates to true).
>
> The other main type of local GOT entry is created by page+offset 
> references - e.g.:
>
>        50:       8f820000        lw      v0,0(gp)
>                          50: R_MIPS_GOT16        .rodata
>        54:       24450488        addiu   a1,v0,1160
>                          54: R_MIPS_LO16 .rodata
>        58:       3c020000        lui     v0,0x0
>
> The GOT entry for the page is always accessed using a 16-bit lookup even 
> with -mxgot - I believe the reasoning for this was because with each 
> page covering 64KB, the addressable 16K GOT page entries would be enough 
> to cover ~1GB of address space?

Yeah, I believe so.

> Unfortunately, since local GOT entries are allocated on-the-fly as they 
> are encountered in the code, this means that the initial 16K entries are 
> filled with a mixture of entries for member functions and pages (in this 
> case, mainly the former). This means that there is the possibility that 
> a page entry will be allocated outside of the addressable first 16K 
> entries, resulting in a reloc overflow. However, with -mxgot, there is 
> no problem calling member functions with entries after the first 16K 
> entries (without -mxgot, these would also eventually result in overflows).
>
> I have created this patch to ensure that GOT page entries come before 
> the member function entries. The idea is to fill the local GOT space 
> from both ends at once, with entries accessed via 16-bit indexing being 
> added on the lower end, and those with 32-bit indexing on the upper end. 
> If the size of the local GOT is overestimated, this results in a gap in 
> the middle of the local GOT area that must be accounted for when 
> iterating over the local part of the GOT.
>
> This patch has only been lightly tested. I can confirm that the reloc 
> overflow on building LLVM/Clang no longer occurs, and have tried running 
> some of the generated LLVM and Clang binaries on QEMU and a real MIPS 
> board. The ld testsuite has a couple of new failures due to the change 
> in the GOT layout, so the expected outputs need to be updated (included 
> in the patch).

This looks really good, thanks.  Just for the record, in case anyone else
was thinking the same thing: I was a bit worried at first about using
unsigned int for assigned_high_gotno, since it's an "end - 1" value.
But of course it can never be negative because we always have at least
one reserved entry before the local area.

Please go ahead and install.  If you don't have access yet, please
follow the instructions here:

    https://sourceware.org/cgi-bin/pdw/ps_form.cgi

listing me as sponsor.

Thanks,
Richard

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] [MIPS] Ensure that local GOT entries accessed via a 16-bit index come first
  2014-04-16 19:29 ` Richard Sandiford
@ 2014-04-16 21:43   ` Maciej W. Rozycki
  2014-04-17  6:19     ` Richard Sandiford
  0 siblings, 1 reply; 5+ messages in thread
From: Maciej W. Rozycki @ 2014-04-16 21:43 UTC (permalink / raw)
  To: Richard Sandiford; +Cc: Kwok Cheung Yeung, binutils, jack.carter, hjl.tools

On Wed, 16 Apr 2014, Richard Sandiford wrote:

> This looks really good, thanks.  Just for the record, in case anyone else
> was thinking the same thing: I was a bit worried at first about using
> unsigned int for assigned_high_gotno, since it's an "end - 1" value.
> But of course it can never be negative because we always have at least
> one reserved entry before the local area.

 I've been wondering if we need to do anything special about compound 
relocs, e.g. GOT_PAGE/HI16, GOT_PAGE/LO16, etc. (aka %hi(%got_page(foo)), 
etc.) in the new ABIs, that obviously can go towards the end of the local 
GOT area.  I don't know offhand if GCC produces them for e.g. `-mabi=64 
-xgot', especially perhaps GOT_DISP/HI16 and GOT_DISP/LO16 as we shouldn't 
normally exhaust the 16-bit space for GOT_PAGE, but the ABI supports them 
in principle.

  Maciej

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] [MIPS] Ensure that local GOT entries accessed via a 16-bit index come first
  2014-04-16 21:43   ` Maciej W. Rozycki
@ 2014-04-17  6:19     ` Richard Sandiford
  2014-04-17 12:01       ` Maciej W. Rozycki
  0 siblings, 1 reply; 5+ messages in thread
From: Richard Sandiford @ 2014-04-17  6:19 UTC (permalink / raw)
  To: Maciej W. Rozycki; +Cc: Kwok Cheung Yeung, binutils, jack.carter, hjl.tools

"Maciej W. Rozycki" <macro@codesourcery.com> writes:
> On Wed, 16 Apr 2014, Richard Sandiford wrote:
>> This looks really good, thanks.  Just for the record, in case anyone else
>> was thinking the same thing: I was a bit worried at first about using
>> unsigned int for assigned_high_gotno, since it's an "end - 1" value.
>> But of course it can never be negative because we always have at least
>> one reserved entry before the local area.
>
>  I've been wondering if we need to do anything special about compound 
> relocs, e.g. GOT_PAGE/HI16, GOT_PAGE/LO16, etc. (aka %hi(%got_page(foo)), 
> etc.) in the new ABIs, that obviously can go towards the end of the local 
> GOT area.  I don't know offhand if GCC produces them for e.g. `-mabi=64 
> -xgot', especially perhaps GOT_DISP/HI16 and GOT_DISP/LO16 as we shouldn't 
> normally exhaust the 16-bit space for GOT_PAGE, but the ABI supports them 
> in principle.

GCC doesn't produce them.  I agree using GOT_PAGE/HI16 seems unlikely,
especially since the sequence to load an address would then require 3
instructions.  I imagine in practice everyone just uses GOT_{HI,LO}16
for all ABIs.

I don't think this was your point, but just in case: even if something
did use those in future, the patch is still a strict improvement over
the current situation, in that it handles {GOT,CALL}_{HI,LO}16 better
without changing the allocation scheme for the others.  I don't think
we should add extra code for compound GOT relocs without a patch to make
GCC use them (which I'm not convinced is a good idea).

Thanks,
Richard

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] [MIPS] Ensure that local GOT entries accessed via a 16-bit index come first
  2014-04-17  6:19     ` Richard Sandiford
@ 2014-04-17 12:01       ` Maciej W. Rozycki
  0 siblings, 0 replies; 5+ messages in thread
From: Maciej W. Rozycki @ 2014-04-17 12:01 UTC (permalink / raw)
  To: Richard Sandiford; +Cc: Kwok Cheung Yeung, binutils, jack.carter, hjl.tools

On Thu, 17 Apr 2014, Richard Sandiford wrote:

> GCC doesn't produce them.  I agree using GOT_PAGE/HI16 seems unlikely,
> especially since the sequence to load an address would then require 3
> instructions.  I imagine in practice everyone just uses GOT_{HI,LO}16
> for all ABIs.

 Yeah, as observed here and the cause of the issue we support 
GOT_HI16/GOT_LO16 pairs (and also actually GOT16 with no LO16 counterpart) 
for local symbols as well, making GOT_DISP redundant.  And for GOT_PAGE we 
have almost 16k pages worth 1GB of program space available before 
GOT_PAGE/HI16 would load non-zero.

> I don't think this was your point, but just in case: even if something
> did use those in future, the patch is still a strict improvement over
> the current situation, in that it handles {GOT,CALL}_{HI,LO}16 better
> without changing the allocation scheme for the others.  I don't think
> we should add extra code for compound GOT relocs without a patch to make
> GCC use them (which I'm not convinced is a good idea).

 Of course it was not, the change is excellent work -- thanks, Kwok.

  Maciej

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-04-17 12:01 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-16 13:25 [PATCH] [MIPS] Ensure that local GOT entries accessed via a 16-bit index come first Kwok Cheung Yeung
2014-04-16 19:29 ` Richard Sandiford
2014-04-16 21:43   ` Maciej W. Rozycki
2014-04-17  6:19     ` Richard Sandiford
2014-04-17 12:01       ` Maciej W. Rozycki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).