[lld] r289025 - [ELF][MIPS] Make _gp, _gp_disp, __gnu_local_gp global symbols

Simon Atanasyan via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 7 22:19:47 PST 2016


Author: atanasyan
Date: Thu Dec  8 00:19:47 2016
New Revision: 289025

URL: http://llvm.org/viewvc/llvm-project?rev=289025&view=rev
Log:
[ELF][MIPS] Make _gp, _gp_disp, __gnu_local_gp global symbols

These MIPS specific symbols should be global because in general they can
have an arbitrary value. By default this value is a fixed offset from .got
section.

This patch adds more checks to the mips-gp-local.s test case but marks
it as XFAIL because LLD does not allow redefinition of absolute symbols
value by a linker script. This should be fixed by D27276.

Differential revision: https://reviews.llvm.org/D27524

Modified:
    lld/trunk/ELF/Relocations.cpp
    lld/trunk/ELF/SymbolTable.cpp
    lld/trunk/ELF/SymbolTable.h
    lld/trunk/ELF/Symbols.h
    lld/trunk/ELF/Target.cpp
    lld/trunk/ELF/Writer.cpp
    lld/trunk/test/ELF/basic-mips.s
    lld/trunk/test/ELF/mips-64-disp.s
    lld/trunk/test/ELF/mips-64-got.s
    lld/trunk/test/ELF/mips-64-gprel-so.s
    lld/trunk/test/ELF/mips-64-rels.s
    lld/trunk/test/ELF/mips-got-relocs.s
    lld/trunk/test/ELF/mips-gp-disp.s
    lld/trunk/test/ELF/mips-gp-ext.s
    lld/trunk/test/ELF/mips-gp-local.s
    lld/trunk/test/ELF/mips-gprel32-relocs-gp0.s
    lld/trunk/test/ELF/mips-gprel32-relocs.s
    lld/trunk/test/ELF/mips-hilo-gp-disp.s
    lld/trunk/test/ELF/mips-n32-rels.s

Modified: lld/trunk/ELF/Relocations.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Relocations.cpp?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/ELF/Relocations.cpp (original)
+++ lld/trunk/ELF/Relocations.cpp Thu Dec  8 00:19:47 2016
@@ -348,9 +348,14 @@ static bool isStaticLinkTimeConstant(Rel
   // resolve to the image base. This is a little strange, but it allows us to
   // link function calls to such symbols. Normally such a call will be guarded
   // with a comparison, which will load a zero from the GOT.
+  // Another special case is MIPS _gp_disp symbol which represents offset
+  // between start of a function and '_gp' value and defined as absolute just
+  // to simplify the code.
   if (AbsVal && RelE) {
     if (Body.isUndefined() && !Body.isLocal() && Body.symbol()->isWeak())
       return true;
+    if (&Body == ElfSym<ELFT>::MipsGpDisp)
+      return true;
     error(S.getLocation(RelOff) + ": relocation " + toString(Type) +
           " cannot refer to absolute symbol '" + toString(Body) +
           "' defined in " + toString(Body.File));

Modified: lld/trunk/ELF/SymbolTable.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SymbolTable.cpp?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/ELF/SymbolTable.cpp (original)
+++ lld/trunk/ELF/SymbolTable.cpp Thu Dec  8 00:19:47 2016
@@ -127,9 +127,10 @@ template <class ELFT> void SymbolTable<E
 
 template <class ELFT>
 DefinedRegular<ELFT> *SymbolTable<ELFT>::addAbsolute(StringRef Name,
-                                                     uint8_t Visibility) {
-  Symbol *Sym = addRegular(Name, Visibility, STT_NOTYPE, 0, 0, STB_GLOBAL,
-                           nullptr, nullptr);
+                                                     uint8_t Visibility,
+                                                     uint8_t Type) {
+  Symbol *Sym =
+      addRegular(Name, Visibility, STT_NOTYPE, 0, 0, Type, nullptr, nullptr);
   return cast<DefinedRegular<ELFT>>(Sym->body());
 }
 

Modified: lld/trunk/ELF/SymbolTable.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SymbolTable.h?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/ELF/SymbolTable.h (original)
+++ lld/trunk/ELF/SymbolTable.h Thu Dec  8 00:19:47 2016
@@ -50,7 +50,8 @@ public:
   ArrayRef<SharedFile<ELFT> *> getSharedFiles() const { return SharedFiles; }
 
   DefinedRegular<ELFT> *addAbsolute(StringRef Name,
-                                    uint8_t Visibility = llvm::ELF::STV_HIDDEN);
+                                    uint8_t Visibility = llvm::ELF::STV_HIDDEN,
+                                    uint8_t Type = llvm::ELF::STB_GLOBAL);
   DefinedRegular<ELFT> *addIgnored(StringRef Name,
                                    uint8_t Visibility = llvm::ELF::STV_HIDDEN);
 

Modified: lld/trunk/ELF/Symbols.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.h?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/ELF/Symbols.h (original)
+++ lld/trunk/ELF/Symbols.h Thu Dec  8 00:19:47 2016
@@ -351,7 +351,7 @@ template <class ELFT> struct ElfSym {
   // The content for _gp_disp/__gnu_local_gp symbols for MIPS target.
   static DefinedRegular<ELFT> *MipsGpDisp;
   static DefinedRegular<ELFT> *MipsLocalGp;
-  static SymbolBody *MipsGp;
+  static DefinedRegular<ELFT> *MipsGp;
 };
 
 template <class ELFT> DefinedRegular<ELFT> *ElfSym<ELFT>::EhdrStart;
@@ -363,7 +363,7 @@ template <class ELFT> DefinedRegular<ELF
 template <class ELFT> DefinedRegular<ELFT> *ElfSym<ELFT>::End2;
 template <class ELFT> DefinedRegular<ELFT> *ElfSym<ELFT>::MipsGpDisp;
 template <class ELFT> DefinedRegular<ELFT> *ElfSym<ELFT>::MipsLocalGp;
-template <class ELFT> SymbolBody *ElfSym<ELFT>::MipsGp;
+template <class ELFT> DefinedRegular<ELFT> *ElfSym<ELFT>::MipsGp;
 
 // A real symbol object, SymbolBody, is usually stored within a Symbol. There's
 // always one Symbol for each symbol name. The resolver updates the SymbolBody

Modified: lld/trunk/ELF/Target.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Target.cpp?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/ELF/Target.cpp (original)
+++ lld/trunk/ELF/Target.cpp Thu Dec  8 00:19:47 2016
@@ -1972,10 +1972,10 @@ RelExpr MipsTargetInfo<ELFT>::getRelExpr
   case R_MIPS_HI16:
   case R_MIPS_LO16:
   case R_MIPS_GOT_OFST:
-    // MIPS _gp_disp designates offset between start of function and 'gp'
-    // pointer into GOT. __gnu_local_gp is equal to the current value of
-    // the 'gp'. Therefore any relocations against them do not require
-    // dynamic relocation.
+    // R_MIPS_HI16/R_MIPS_LO16 relocations against _gp_disp calculate
+    // offset between start of function and 'gp' value which by default
+    // equal to the start of .got section. In that case we consider these
+    // relocations as relative.
     if (&S == ElfSym<ELFT>::MipsGpDisp)
       return R_PC;
     return R_ABS;

Modified: lld/trunk/ELF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/ELF/Writer.cpp (original)
+++ lld/trunk/ELF/Writer.cpp Thu Dec  8 00:19:47 2016
@@ -662,23 +662,28 @@ template <class ELFT> void Writer<ELFT>:
 template <class ELFT> void Writer<ELFT>::addReservedSymbols() {
   if (Config->EMachine == EM_MIPS) {
     // Define _gp for MIPS. st_value of _gp symbol will be updated by Writer
-    // so that it points to an absolute address which is relative to GOT.
-    // Default offset is 0x7ff0.
+    // so that it points to an absolute address which by default is relative
+    // to GOT. Default offset is 0x7ff0.
     // See "Global Data Symbols" in Chapter 6 in the following document:
     // ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf
-    ElfSym<ELFT>::MipsGp = addRegular("_gp", In<ELFT>::MipsGot, 0x7ff0)->body();
+    ElfSym<ELFT>::MipsGp =
+        Symtab<ELFT>::X->addAbsolute("_gp", STV_HIDDEN, STB_LOCAL);
 
     // On MIPS O32 ABI, _gp_disp is a magic symbol designates offset between
-    // start of function and 'gp' pointer into GOT.
-    if (Symbol *S = addOptionalRegular("_gp_disp", In<ELFT>::MipsGot, 0))
-      ElfSym<ELFT>::MipsGpDisp = cast<DefinedRegular<ELFT>>(S->body());
+    // start of function and 'gp' pointer into GOT. To simplify relocation
+    // calculation we assign _gp value to it and calculate corresponding
+    // relocations as relative to this value.
+    if (Symtab<ELFT>::X->find("_gp_disp"))
+      ElfSym<ELFT>::MipsGpDisp =
+          Symtab<ELFT>::X->addAbsolute("_gp_disp", STV_HIDDEN, STB_LOCAL);
 
     // The __gnu_local_gp is a magic symbol equal to the current value of 'gp'
     // pointer. This symbol is used in the code generated by .cpload pseudo-op
     // in case of using -mno-shared option.
     // https://sourceware.org/ml/binutils/2004-12/msg00094.html
-    if (Symbol *S = addOptionalRegular("__gnu_local_gp", In<ELFT>::MipsGot, 0))
-      ElfSym<ELFT>::MipsLocalGp = cast<DefinedRegular<ELFT>>(S->body());
+    if (Symtab<ELFT>::X->find("__gnu_local_gp"))
+      ElfSym<ELFT>::MipsLocalGp =
+          Symtab<ELFT>::X->addAbsolute("__gnu_local_gp", STV_HIDDEN, STB_LOCAL);
   }
 
   // In the assembly for 32 bit x86 the _GLOBAL_OFFSET_TABLE_ symbol
@@ -1473,11 +1478,12 @@ template <class ELFT> void Writer<ELFT>:
   // Setup MIPS _gp_disp/__gnu_local_gp symbols which should
   // be equal to the _gp symbol's value.
   if (Config->EMachine == EM_MIPS) {
-    uintX_t GpDisp = In<ELFT>::MipsGot->getGp() - In<ELFT>::MipsGot->getVA();
+    if (!ElfSym<ELFT>::MipsGp->Value)
+      ElfSym<ELFT>::MipsGp->Value = In<ELFT>::MipsGot->getVA() + 0x7ff0;
     if (ElfSym<ELFT>::MipsGpDisp)
-      ElfSym<ELFT>::MipsGpDisp->Value = GpDisp;
+      ElfSym<ELFT>::MipsGpDisp->Value = ElfSym<ELFT>::MipsGp->Value;
     if (ElfSym<ELFT>::MipsLocalGp)
-      ElfSym<ELFT>::MipsLocalGp->Value = GpDisp;
+      ElfSym<ELFT>::MipsLocalGp->Value = ElfSym<ELFT>::MipsGp->Value;
   }
 }
 

Modified: lld/trunk/test/ELF/basic-mips.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/basic-mips.s?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/test/ELF/basic-mips.s (original)
+++ lld/trunk/test/ELF/basic-mips.s Thu Dec  8 00:19:47 2016
@@ -228,7 +228,7 @@ __start:
 # CHECK-NEXT:     Other [ (0x2)
 # CHECK-NEXT:       STV_HIDDEN (0x2)
 # CHECK-NEXT:     ]
-# CHECK-NEXT:     Section: .got
+# CHECK-NEXT:     Section: Absolute
 # CHECK-NEXT:   }
 # CHECK-NEXT:   Symbol {
 # CHECK-NEXT:     Name: __start

Modified: lld/trunk/test/ELF/mips-64-disp.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-64-disp.s?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-64-disp.s (original)
+++ lld/trunk/test/ELF/mips-64-disp.s Thu Dec  8 00:19:47 2016
@@ -18,7 +18,7 @@
 # CHECK-NEXT:    20010:   24 42 80 38   addiu   $2, $2, -32712
 
 # CHECK: 0000000000020014     .text   00000000 foo
-# CHECK: 0000000000037ff0     .got    00000000 .hidden _gp
+# CHECK: 0000000000037ff0     *ABS*   00000000 .hidden _gp
 # CHECK: 0000000000020000     .text   00000000 __start
 # CHECK: 0000000000000000 g F *UND*   00000000 foo1a
 

Modified: lld/trunk/test/ELF/mips-64-got.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-64-got.s?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-64-got.s (original)
+++ lld/trunk/test/ELF/mips-64-got.s Thu Dec  8 00:19:47 2016
@@ -19,7 +19,7 @@
 # CHECK-NEXT:    20010:   24 42 80 38   addiu   $2,  $2, -32712
 
 # CHECK: 0000000000020018   .text   00000000 foo
-# CHECK: 0000000000037ff0   .got    00000000 .hidden _gp
+# CHECK: 0000000000037ff0   *ABS*   00000000 .hidden _gp
 # CHECK: 0000000000020000   .text   00000000 __start
 # CHECK: 0000000000020014   .text   00000000 bar
 

Modified: lld/trunk/test/ELF/mips-64-gprel-so.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-64-gprel-so.s?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-64-gprel-so.s (original)
+++ lld/trunk/test/ELF/mips-64-gprel-so.s Thu Dec  8 00:19:47 2016
@@ -12,7 +12,7 @@
 # CHECK-NEXT:    10004:    03 99 e0 2d    daddu   $gp, $gp, $25
 # CHECK-NEXT:    10008:    67 9c 7f f0    daddiu  $gp, $gp, 32752
 
-# CHECK: 0000000000027ff0   .got    00000000 .hidden _gp
+# CHECK: 0000000000027ff0   *ABS*   00000000 .hidden _gp
 # CHECK: 0000000000010000   .text   00000000 foo
 
   .text

Modified: lld/trunk/test/ELF/mips-64-rels.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-64-rels.s?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-64-rels.s (original)
+++ lld/trunk/test/ELF/mips-64-rels.s Thu Dec  8 00:19:47 2016
@@ -24,7 +24,7 @@
 #                    ^-- 0x20004 - 0x37ff0 = 0xfffffffffffe8014
 
 # CHECK: 0000000000020004   .text   00000000 loc
-# CHECK: 0000000000037ff0   .got    00000000 .hidden _gp
+# CHECK: 0000000000037ff0   *ABS*   00000000 .hidden _gp
 # CHECK: 0000000000020000   .text   00000000 __start
 
 # REL:      Relocations [

Modified: lld/trunk/test/ELF/mips-got-relocs.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-got-relocs.s?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-got-relocs.s (original)
+++ lld/trunk/test/ELF/mips-got-relocs.s Thu Dec  8 00:19:47 2016
@@ -47,7 +47,7 @@ v1:
 # EXE_SYM: Sections:
 # EXE_SYM: .got 0000000c 0000000000030000 DATA
 # EXE_SYM: SYMBOL TABLE:
-# EXE_SYM: 00037ff0         .got		 00000000 .hidden _gp
+# EXE_SYM: 00037ff0         *ABS*    00000000 .hidden _gp
 #          ^-- .got + GP offset (0x7ff0)
 # EXE_SYM: 00040000 g       .data		 00000004 v1
 
@@ -71,7 +71,7 @@ v1:
 # DSO_SYM: Sections:
 # DSO_SYM: .got 0000000c 0000000000020000 DATA
 # DSO_SYM: SYMBOL TABLE:
-# DSO_SYM: 00027ff0         .got		 00000000 .hidden _gp
+# DSO_SYM: 00027ff0         *ABS*    00000000 .hidden _gp
 #          ^-- .got + GP offset (0x7ff0)
 # DSO_SYM: 00030000 g       .data		 00000004 v1
 

Modified: lld/trunk/test/ELF/mips-gp-disp.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-gp-disp.s?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-gp-disp.s (original)
+++ lld/trunk/test/ELF/mips-gp-disp.s Thu Dec  8 00:19:47 2016
@@ -24,7 +24,7 @@
 # DIS-NEXT:    10000:  3c 08 00 01  lui   $8, 1
 # DIS-NEXT:    10004:  21 08 7f f0  addi  $8, $8, 32752
 #                                                 ^-- 0x37ff0 & 0xffff
-# DIS: 00027ff0  .got  00000000 .hidden _gp
+# DIS: 00027ff0  *ABS*  00000000 .hidden _gp
 
 # REL:      Relocations [
 # REL-NEXT: ]

Modified: lld/trunk/test/ELF/mips-gp-ext.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-gp-ext.s?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-gp-ext.s (original)
+++ lld/trunk/test/ELF/mips-gp-ext.s Thu Dec  8 00:19:47 2016
@@ -1,35 +1,67 @@
 # Check that the linker use a value of _gp symbol defined
 # in a linker script to calculate GOT relocations.
 
+# FIXME: This test is xfailed because it depends on D27276 patch
+# that enables absolute symbols redefinition by a linker's script.
+# XFAIL: *
+
 # RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o %t.o
+
 # RUN: echo "SECTIONS { \
 # RUN:          .text : { *(.text) } \
 # RUN:          _gp = . + 0x100; \
-# RUN:          .got  : { *(.got) } }" > %t.script
-# RUN: ld.lld -shared -o %t.so --script %t.script %t.o
-# RUN: llvm-objdump -s -t %t.so | FileCheck %s
+# RUN:          .got  : { *(.got) } }" > %t.rel.script
+# RUN: ld.lld -shared -o %t.rel.so --script %t.rel.script %t.o
+# RUN: llvm-objdump -s -t %t.rel.so | FileCheck --check-prefix=REL %s
+
+# RUN: echo "SECTIONS { \
+# RUN:          .text : { *(.text) } \
+# RUN:          _gp = 0x200; \
+# RUN:          .got  : { *(.got) } }" > %t.abs.script
+# RUN: ld.lld -shared -o %t.abs.so --script %t.abs.script %t.o
+# RUN: llvm-objdump -s -t %t.abs.so | FileCheck --check-prefix=ABS %s
 
 # REQUIRES: mips
 
-# CHECK:      Contents of section .text:
-# CHECK-NEXT:  0000 3c080000 2108010c 8f82ffe4
-#                   ^-- %hi(_gp_disp)
-#                            ^-- %lo(_gp_disp)
-#                                     ^-- 8 - (0x10c - 0xe8)
-#                                         G - (GP - .got)
-
-# CHECK:      Contents of section .reginfo:
-# CHECK-NEXT:  0028 10000104 00000000 00000000 00000000
-# CHECK-NEXT:  0038 00000000 0000010c
-#                            ^-- _gp
-
-# CHECK:      Contents of section .data:
-# CHECK-NEXT:  0100 fffffef4
-#                   ^-- 0-0x10c
-
-# CHECK: 00000000         .text           00000000 foo
-# CHECK: 0000010c         .got            00000000 .hidden _gp_disp
-# CHECK: 0000010c         .text           00000000 .hidden _gp
+# REL:      Contents of section .text:
+# REL-NEXT:  0000 3c080000 2108010c 8f82ffe4
+#                 ^-- %hi(_gp_disp)
+#                          ^-- %lo(_gp_disp)
+#                                   ^-- 8 - (0x10c - 0xe8)
+#                                       G - (GP - .got)
+
+# REL:      Contents of section .reginfo:
+# REL-NEXT:  0028 10000104 00000000 00000000 00000000
+# REL-NEXT:  0038 00000000 0000010c
+#                          ^-- _gp
+
+# REL:      Contents of section .data:
+# REL-NEXT:  0100 fffffef4
+#                 ^-- 0-0x10c
+
+# REL: 00000000         .text           00000000 foo
+# REL: 0000010c         *ABS*           00000000 .hidden _gp_disp
+# REL: 0000010c         *ABS*           00000000 .hidden _gp
+
+# ABS:      Contents of section .text:
+# ABS-NEXT:  0000 3c080000 21080200 8f82fef0
+#                 ^-- %hi(_gp_disp)
+#                          ^-- %lo(_gp_disp)
+#                                   ^-- 8 - (0x200 - 0xe8)
+#                                       G - (GP - .got)
+
+# ABS:      Contents of section .reginfo:
+# ABS-NEXT:  0028 10000104 00000000 00000000 00000000
+# ABS-NEXT:  0038 00000000 00000200
+#                          ^-- _gp
+
+# ABS:      Contents of section .data:
+# ABS-NEXT:  0100 fffffe00
+#                 ^-- 0-0x200
+
+# ABS: 00000000         .text           00000000 foo
+# ABS: 00000200         *ABS*           00000000 .hidden _gp_disp
+# ABS: 00000200         *ABS*           00000000 .hidden _gp
 
   .text
 foo:

Modified: lld/trunk/test/ELF/mips-gp-local.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-gp-local.s?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-gp-local.s (original)
+++ lld/trunk/test/ELF/mips-gp-local.s Thu Dec  8 00:19:47 2016
@@ -11,7 +11,7 @@
 # CHECK-NEXT:    20000:  3c 08 00 03  lui   $8, 3
 # CHECK-NEXT:    20004:  21 08 7f f0  addi  $8, $8, 32752
 
-# CHECK: 00037ff0  .got  00000000 .hidden _gp
+# CHECK: 00037ff0  *ABS*  00000000 .hidden _gp
 
   .text
   .globl  __start

Modified: lld/trunk/test/ELF/mips-gprel32-relocs-gp0.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-gprel32-relocs-gp0.s?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-gprel32-relocs-gp0.s (original)
+++ lld/trunk/test/ELF/mips-gprel32-relocs-gp0.s Thu Dec  8 00:19:47 2016
@@ -29,7 +29,7 @@
 # DUMP: SYMBOL TABLE:
 # DUMP: 00010008         .text          00000000 bar
 # DUMP: 00010004         .text          00000000 foo
-# DUMP: 00027ff0         .got           00000000 .hidden _gp
+# DUMP: 00027ff0         *ABS*          00000000 .hidden _gp
 
 # ERR: error: {{.*}}mips-gp0-non-zero.o: unsupported non-zero ri_gp_value
 

Modified: lld/trunk/test/ELF/mips-gprel32-relocs.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-gprel32-relocs.s?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-gprel32-relocs.s (original)
+++ lld/trunk/test/ELF/mips-gprel32-relocs.s Thu Dec  8 00:19:47 2016
@@ -28,4 +28,4 @@ v1:
 # CHECK: SYMBOL TABLE:
 # CHECK: 00010008         .text           00000000 bar
 # CHECK: 00010004         .text           00000000 foo
-# CHECK: 00027ff0         .got           00000000 .hidden _gp
+# CHECK: 00027ff0         *ABS*           00000000 .hidden _gp

Modified: lld/trunk/test/ELF/mips-hilo-gp-disp.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-hilo-gp-disp.s?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-hilo-gp-disp.s (original)
+++ lld/trunk/test/ELF/mips-hilo-gp-disp.s Thu Dec  8 00:19:47 2016
@@ -34,7 +34,7 @@ bar:
 
 # EXE: SYMBOL TABLE:
 # EXE: 0002000c     .text   00000000 bar
-# EXE: 00037ff0     .got    00000000 .hidden _gp
+# EXE: 00037ff0     *ABS*   00000000 .hidden _gp
 # EXE: 00020000     .text   00000000 __start
 
 # SO:      Disassembly of section .text:
@@ -51,5 +51,5 @@ bar:
 
 # SO: SYMBOL TABLE:
 # SO: 0001000c     .text   00000000 bar
-# SO: 00027ff0     .got    00000000 .hidden _gp
+# SO: 00027ff0     *ABS*   00000000 .hidden _gp
 # SO: 00010000     .text   00000000 __start

Modified: lld/trunk/test/ELF/mips-n32-rels.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-n32-rels.s?rev=289025&r1=289024&r2=289025&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-n32-rels.s (original)
+++ lld/trunk/test/ELF/mips-n32-rels.s Thu Dec  8 00:19:47 2016
@@ -42,7 +42,7 @@
 #                    ^-- loc
 
 # CHECK: 00020004      .text   00000000 loc
-# CHECK: 00037ff0      .got    00000000 .hidden _gp
+# CHECK: 00037ff0      *ABS*   00000000 .hidden _gp
 # CHECK: 00020000 g  F .text   00000000 __start
 
 # ELF:      Format: ELF32-mips




More information about the llvm-commits mailing list