Index: lld/trunk/ELF/SyntheticSections.h
===================================================================
--- lld/trunk/ELF/SyntheticSections.h
+++ lld/trunk/ELF/SyntheticSections.h
@@ -124,7 +124,7 @@
 
   uint32_t getTlsIndexOff() const { return TlsIndexOff; }
 
-  unsigned getGp() const;
+  uintX_t getGp() const;
 
 private:
   // MIPS GOT consists of three parts: local, global and tls. Each part
Index: lld/trunk/ELF/SyntheticSections.cpp
===================================================================
--- lld/trunk/ELF/SyntheticSections.cpp
+++ lld/trunk/ELF/SyntheticSections.cpp
@@ -610,7 +610,8 @@
   return Config->Relocatable;
 }
 
-template <class ELFT> unsigned MipsGotSection<ELFT>::getGp() const {
+template <class ELFT>
+typename MipsGotSection<ELFT>::uintX_t MipsGotSection<ELFT>::getGp() const {
   return ElfSym<ELFT>::MipsGp->template getVA<ELFT>(0);
 }
 
Index: lld/trunk/test/ELF/mips-options.s
===================================================================
--- lld/trunk/test/ELF/mips-options.s
+++ lld/trunk/test/ELF/mips-options.s
@@ -3,7 +3,10 @@
 # RUN: llvm-mc -filetype=obj -triple=mips64-unknown-linux %s -o %t1.o
 # RUN: llvm-mc -filetype=obj -triple=mips64-unknown-linux \
 # RUN:         %S/Inputs/mips-dynamic.s -o %t2.o
-# RUN: ld.lld %t1.o %t2.o -shared -o %t.so
+# RUN: echo "SECTIONS { \
+# RUN:          . = 0x100000000; \
+# RUN:          .got  : { *(.got) } }" > %t.rel.script
+# RUN: ld.lld %t1.o %t2.o --script %t.rel.script -shared -o %t.so
 # RUN: llvm-readobj -symbols -mips-options %t.so | FileCheck %s
 
 # REQUIRES: mips
@@ -11,15 +14,15 @@
   .text
   .globl  __start
 __start:
-    lw   $t0,%call16(g1)($gp)
+    lui  $gp, %hi(%neg(%gp_rel(g1)))
 
 # CHECK:      Name: _gp
-# CHECK-NEXT: Value: 0x[[GP:[0-9A-F]+]]
+# CHECK-NEXT: Value: 0x100008250
 
 # CHECK:      MIPS Options {
 # CHECK-NEXT:   ODK_REGINFO {
-# CHECK-NEXT:     GP: 0x[[GP]]
-# CHECK-NEXT:     General Mask: 0x10001001
+# CHECK-NEXT:     GP: 0x100008250
+# CHECK-NEXT:     General Mask: 0x10000001
 # CHECK-NEXT:     Co-Proc Mask0: 0x0
 # CHECK-NEXT:     Co-Proc Mask1: 0x0
 # CHECK-NEXT:     Co-Proc Mask2: 0x0