<p dir="ltr">Yes, the main think is not returning true by default.</p>
<p dir="ltr">Thanks,<br>
Rafael</p>
<div class="gmail_quote">On May 9, 2016 12:33 PM, "Daniel Sanders" <<a href="mailto:Daniel.Sanders@imgtec.com">Daniel.Sanders@imgtec.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-GB" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">Hi,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">I think it should at least be changed. We're no longer extremely conservative since all the cases that occur during compiler recursion on MIPS32 have been checked. There's
 still some ABI-specific or ISA revision-specific relocations to do though.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">I can make the default unreachable and explicitly list the others with a rewritten fixme if that helps.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Rafael Espíndola [mailto:<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>]
<br>
<b>Sent:</b> 09 May 2016 16:58<br>
<b>To:</b> Daniel Sanders<br>
<b>Cc:</b> llvm-commits<br>
<b>Subject:</b> Re: [llvm] r268900 - [mips][ias] R_MIPS_(GOT|HI|LO|PC)16 and R_MIPS_GPREL32 do not need symbols.<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<p>The default return is still true, so I think the fixme is still appropriate.<u></u><u></u></p>
<p>Cheers,<br>
Rafael<u></u><u></u></p>
<div>
<p class="MsoNormal">On May 9, 2016 6:27 AM, "Daniel Sanders via llvm-commits" <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<u></u><u></u></p>
<p class="MsoNormal">Author: dsanders<br>
Date: Mon May  9 05:21:14 2016<br>
New Revision: 268900<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=268900&view=rev" target="_blank">
http://llvm.org/viewvc/llvm-project?rev=268900&view=rev</a><br>
Log:<br>
[mips][ias] R_MIPS_(GOT|HI|LO|PC)16 and R_MIPS_GPREL32 do not need symbols.<br>
<br>
Summary:<br>
In theory, care must be taken to ensure that pairs of R_MIPS_(GOT|HI|LO)16<br>
make the same decision on both relocs in the reloc pair but in practice<br>
this isn't as hard as it sounds and only limits the complexity of the<br>
predicate used. We handle all three with the same code to ensure their<br>
decisions always agree with each other.<br>
<br>
Reviewers: sdardis<br>
<br>
Subscribers: rafael, dsanders, sdardis, llvm-commits<br>
<br>
Differential Revision: <a href="http://reviews.llvm.org/D19016" target="_blank">http://reviews.llvm.org/D19016</a><br>
<br>
Modified:<br>
    llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp<br>
    llvm/trunk/test/MC/Mips/got-rel-expr.s<br>
    llvm/trunk/test/MC/Mips/relocation.s<br>
    llvm/trunk/test/MC/Mips/sort-relocation-table.s<br>
<br>
Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp?rev=268900&r1=268899&r2=268900&view=diff" target="_blank">
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp?rev=268900&r1=268899&r2=268900&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp (original)<br>
+++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp Mon May  9 05:21:14 2016<br>
@@ -476,30 +476,27 @@ void MipsELFObjectWriter::sortRelocs(con<br>
<br>
 bool MipsELFObjectWriter::needsRelocateWithSymbol(const MCSymbol &Sym,<br>
                                                   unsigned Type) const {<br>
-  // FIXME: This is extremely conservative. This really needs to use a<br>
-  // whitelist with a clear explanation for why each realocation needs to<br>
-  // point to the symbol, not to the section.<br>
   switch (Type) {<br>
   default:<br>
     return true;<br>
<br>
+  // On REL ABI's (e.g. O32), these relocations form pairs. The pairing is done<br>
+  // by the static linker by matching the symbol and offset.<br>
+  // We only see one relocation at a time but it's still safe to relocate with<br>
+  // the section so long as both relocations make the same decision.<br>
+  //<br>
+  // Some older linkers may require the symbol for particular cases. Such cases<br>
+  // are not supported yet but can be added as required.<br>
   case ELF::R_MIPS_GOT16:<br>
   case ELF::R_MIPS16_GOT16:<br>
   case ELF::R_MICROMIPS_GOT16:<br>
-    return true;<br>
-<br>
-  // These relocations might be paired with another relocation. The pairing is<br>
-  // done by the static linker by matching the symbol. Since we only see one<br>
-  // relocation at a time, we have to force them to relocate with a symbol to<br>
-  // avoid ending up with a pair where one points to a section and another<br>
-  // points to a symbol.<br>
   case ELF::R_MIPS_HI16:<br>
   case ELF::R_MIPS16_HI16:<br>
   case ELF::R_MICROMIPS_HI16:<br>
   case ELF::R_MIPS_LO16:<br>
   case ELF::R_MIPS16_LO16:<br>
   case ELF::R_MICROMIPS_LO16:<br>
-    return true;<br>
+    return false;<br>
<br>
   case ELF::R_MIPS_16:<br>
   case ELF::R_MIPS_32:<br>
@@ -509,6 +506,8 @@ bool MipsELFObjectWriter::needsRelocateW<br>
   case ELF::R_MIPS_26:<br>
   case ELF::R_MIPS_64:<br>
   case ELF::R_MIPS_GPREL16:<br>
+  case ELF::R_MIPS_GPREL32:<br>
+  case ELF::R_MIPS_PC16:<br>
     return false;<br>
   }<br>
 }<br>
<br>
Modified: llvm/trunk/test/MC/Mips/got-rel-expr.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/got-rel-expr.s?rev=268900&r1=268899&r2=268900&view=diff" target="_blank">
http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/got-rel-expr.s?rev=268900&r1=268899&r2=268900&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/MC/Mips/got-rel-expr.s (original)<br>
+++ llvm/trunk/test/MC/Mips/got-rel-expr.s Mon May  9 05:21:14 2016<br>
@@ -8,10 +8,10 @@<br>
 foo:<br>
   lw      $t0,%got($loc+0x10004)($gp)<br>
 # CHECK: 0:       8f 88 00 01     lw      $8, 1($gp)<br>
-# CHECK:                  00000000:  R_MIPS_GOT16 $loc<br>
+# CHECK:                  00000000:  R_MIPS_GOT16 .data<br>
   addi    $t0,$t0,%lo($loc+0x10004)<br>
 # CHECK: 4:       21 08 00 04     addi    $8, $8, 4<br>
-# CHECK:                  00000004:  R_MIPS_LO16  $loc<br>
+# CHECK:                  00000004:  R_MIPS_LO16  .data<br>
<br>
   .data<br>
 $loc:<br>
<br>
Modified: llvm/trunk/test/MC/Mips/relocation.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/relocation.s?rev=268900&r1=268899&r2=268900&view=diff" target="_blank">
http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/relocation.s?rev=268900&r1=268899&r2=268900&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/MC/Mips/relocation.s (original)<br>
+++ llvm/trunk/test/MC/Mips/relocation.s Mon May  9 05:21:14 2016<br>
@@ -4,6 +4,9 @@<br>
 // RUN:     | FileCheck -check-prefix=ENCLE -check-prefix=FIXUP %s<br>
 // RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux < %s \<br>
 // RUN:     | llvm-readobj -r | FileCheck -check-prefix=RELOC %s<br>
+// RUN: llvm-mc -filetype=obj -triple mips-unknown-linux < %s \<br>
+// RUN:     | llvm-readobj -sections -section-data \<br>
+// RUN:     | FileCheck -check-prefix=DATA %s<br>
<br>
 // Test that we produce the correct relocation.<br>
 // FIXME: move more relocation only tests here.<br>
@@ -17,9 +20,17 @@<br>
 //         unknown.<br>
 // FIXME - Placeholder. Generation method is known but doesn't work.<br>
<br>
+// DATA-LABEL: Name: .text<br>
+// DATA:       SectionData (<br>
+<br>
+// DATA-NEXT:  0000: 00000004 00000000 00000004 0C000000<br>
         .short foo                         // RELOC: R_MIPS_16 foo<br>
<br>
-        .long foo                          // RELOC: R_MIPS_32 foo<br>
+        .short bar                         // RELOC: R_MIPS_16 .data<br>
+<br>
+baz:    .long foo                          // RELOC: R_MIPS_32 foo<br>
+<br>
+        .long bar                          // RELOC: R_MIPS_32 .data<br>
<br>
                                            // ?????: R_MIPS_REL32 foo<br>
<br>
@@ -28,36 +39,74 @@<br>
                                            // ENCLE: jal foo # encoding: [A,A,A,0b000011AA]<br>
                                            // FIXUP: # fixup A - offset: 0, value: foo, kind: fixup_Mips_26<br>
<br>
+// The nop from the jal is at 0x0010<br>
+// DATA-NEXT:  0010: 00000000 0C000001 00000000 24620000<br>
+        jal baz                            // RELOC: R_MIPS_26 .text<br>
+                                           // ENCBE: jal baz # encoding: [0b000011AA,A,A,A]<br>
+                                           // ENCLE: jal baz # encoding: [A,A,A,0b000011AA]<br>
+                                           // FIXUP: # fixup A - offset: 0, value: baz, kind: fixup_Mips_26<br>
+<br>
         addiu $2, $3, %hi(foo)             // RELOC: R_MIPS_HI16 foo<br>
                                            // ENCBE: addiu $2, $3, %hi(foo) # encoding: [0x24,0x62,A,A]<br>
                                            // ENCLE: addiu $2, $3, %hi(foo) # encoding: [A,A,0x62,0x24]<br>
                                            // FIXUP: # fixup A - offset: 0, value: %hi(foo), kind: fixup_Mips_HI16<br>
<br>
+// DATA-NEXT:  0020: 24620000 24620000 24620004 24620000<br>
         addiu $2, $3, %lo(foo)             // RELOC: R_MIPS_LO16 foo<br>
                                            // ENCBE: addiu $2, $3, %lo(foo) # encoding: [0x24,0x62,A,A]<br>
                                            // ENCLE: addiu $2, $3, %lo(foo) # encoding: [A,A,0x62,0x24]<br>
                                            // FIXUP: # fixup A - offset: 0, value: %lo(foo), kind: fixup_Mips_LO16<br>
<br>
+        addiu $2, $3, %hi(bar)             // RELOC: R_MIPS_HI16 .data<br>
+                                           // ENCBE: addiu $2, $3, %hi(bar) # encoding: [0x24,0x62,A,A]<br>
+                                           // ENCLE: addiu $2, $3, %hi(bar) # encoding: [A,A,0x62,0x24]<br>
+                                           // FIXUP: # fixup A - offset: 0, value: %hi(bar), kind: fixup_Mips_HI16<br>
+<br>
+        addiu $2, $3, %lo(bar)             // RELOC: R_MIPS_LO16 .data<br>
+                                           // ENCBE: addiu $2, $3, %lo(bar) # encoding: [0x24,0x62,A,A]<br>
+                                           // ENCLE: addiu $2, $3, %lo(bar) # encoding: [A,A,0x62,0x24]<br>
+                                           // FIXUP: # fixup A - offset: 0, value: %lo(bar), kind: fixup_Mips_LO16<br>
+<br>
         addiu $2, $3, %gp_rel(foo)         // RELOC: R_MIPS_GPREL16 foo<br>
                                            // ENCBE: addiu $2, $3, %gp_rel(foo) # encoding: [0x24,0x62,A,A]<br>
                                            // ENCLE: addiu $2, $3, %gp_rel(foo) # encoding: [A,A,0x62,0x24]<br>
                                            // FIXUP: # fixup A - offset: 0, value: %gp_rel(foo), kind: fixup_Mips_GPREL<br>
<br>
+// DATA-NEXT:  0030: 24620004 24620000 24420000 24620000<br>
+        addiu $2, $3, %gp_rel(bar)         // RELOC: R_MIPS_GPREL16 .data<br>
+                                           // ENCBE: addiu $2, $3, %gp_rel(bar) # encoding: [0x24,0x62,A,A]<br>
+                                           // ENCLE: addiu $2, $3, %gp_rel(bar) # encoding: [A,A,0x62,0x24]<br>
+                                           // FIXUP: # fixup A - offset: 0, value: %gp_rel(bar), kind: fixup_Mips_GPREL<br>
+<br>
                                            // ?????: R_MIPS_LITERAL foo<br>
<br>
         addiu $2, $3, %got(foo)            // RELOC: R_MIPS_GOT16 foo<br>
                                            // ENCBE: addiu $2, $3, %got(foo) # encoding: [0x24,0x62,A,A]<br>
                                            // ENCLE: addiu $2, $3, %got(foo) # encoding: [A,A,0x62,0x24]<br>
                                            // FIXUP: # fixup A - offset: 0, value: %got(foo), kind: fixup_Mips_GOT<br>
+        // %got requires a %lo pair<br>
+        addiu $2, $2, %lo(foo)<br>
+<br>
+        addiu $2, $3, %got(bar)            // RELOC: R_MIPS_GOT16 .data<br>
+                                           // ENCBE: addiu $2, $3, %got(bar) # encoding: [0x24,0x62,A,A]<br>
+                                           // ENCLE: addiu $2, $3, %got(bar) # encoding: [A,A,0x62,0x24]<br>
+                                           // FIXUP: # fixup A - offset: 0, value: %got(bar), kind: fixup_Mips_GOT<br>
+// DATA-NEXT:  0040: 24420004 0000FFBE 24620000<br>
+        // %got requires a %lo pair<br>
+        addiu $2, $2, %lo(bar)<br>
<br>
         .short foo-.                       // RELOC: R_MIPS_PC16 foo<br>
+        .short baz-.                       // RELOC-NOT: R_MIPS_PC16<br>
<br>
         addiu $2, $3, %call16(foo)         // RELOC: R_MIPS_CALL16 foo<br>
                                            // ENCBE: addiu $2, $3, %call16(foo) # encoding: [0x24,0x62,A,A]<br>
                                            // ENCLE: addiu $2, $3, %call16(foo) # encoding: [A,A,0x62,0x24]<br>
                                            // FIXUP: # fixup A - offset: 0, value: %call16(foo), kind: fixup_Mips_CALL16<br>
<br>
+       .p2align 4<br>
+// DATA-NEXT:  0050: 00000000 00000000 00000000 00000004<br>
         .quad foo                          // RELOC: R_MIPS_64 foo<br>
+        .quad bar                          // RELOC: R_MIPS_64 .data<br>
<br>
                                            // ?????: R_MIPS_GPREL32 foo<br>
                                            // ?????: R_MIPS_UNUSED1 foo<br>
@@ -66,6 +115,7 @@<br>
                                            // ?????: R_MIPS_SHIFT5 foo<br>
                                            // ?????: R_MIPS_SHIFT6 foo<br>
<br>
+// DATA-NEXT:  0060: 24620000 24620000 24620000 24620000<br>
         addiu $2, $3, %got_disp(foo)       // RELOC: R_MIPS_GOT_DISP foo<br>
                                            // ENCBE: addiu $2, $3, %got_disp(foo) # encoding: [0x24,0x62,A,A]<br>
                                            // ENCLE: addiu $2, $3, %got_disp(foo) # encoding: [A,A,0x62,0x24]<br>
@@ -86,6 +136,7 @@<br>
                                            // ENCLE: addiu $2, $3, %got_hi(foo) # encoding: [A,A,0x62,0x24]<br>
                                            // FIXUP: # fixup A - offset: 0, value: %got_hi(foo), kind: fixup_Mips_GOT_HI16<br>
<br>
+// DATA-NEXT:  0070: 24620000 64620000 64620000 24620000<br>
         addiu $2, $3, %got_lo(foo)         // RELOC: R_MIPS_GOT_LO16 foo<br>
                                            // ENCBE: addiu $2, $3, %got_lo(foo) # encoding: [0x24,0x62,A,A]<br>
                                            // ENCLE: addiu $2, $3, %got_lo(foo) # encoding: [A,A,0x62,0x24]<br>
@@ -113,6 +164,7 @@<br>
                                            // ENCLE: addiu $2, $3, %call_hi(foo) # encoding: [A,A,0x62,0x24]<br>
                                            // FIXUP: # fixup A - offset: 0, value: %call_hi(foo), kind: fixup_Mips_CALL_HI16<br>
<br>
+// DATA-NEXT:  0080: 24620000 24620000 24620000 24620000<br>
         addiu $2, $3, %call_lo(foo)        // RELOC: R_MIPS_CALL_LO16 foo<br>
                                            // ENCBE: addiu $2, $3, %call_lo(foo) # encoding: [0x24,0x62,A,A]<br>
                                            // ENCLE: addiu $2, $3, %call_lo(foo) # encoding: [A,A,0x62,0x24]<br>
@@ -207,3 +259,9 @@<br>
                                            // FIXME: R_MICROMIPS_*<br>
         .long foo-.                        // RELOC: R_MIPS_PC32 foo<br>
 //      .ehword foo                        // FIXME: R_MIPS_EH foo<br>
+<br>
+       .data<br>
+       .word 0<br>
+bar:<br>
+       .word 1<br>
+// DATA-LABEL: Section {<br>
<br>
Modified: llvm/trunk/test/MC/Mips/sort-relocation-table.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/sort-relocation-table.s?rev=268900&r1=268899&r2=268900&view=diff" target="_blank">
http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/sort-relocation-table.s?rev=268900&r1=268899&r2=268900&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/MC/Mips/sort-relocation-table.s (original)<br>
+++ llvm/trunk/test/MC/Mips/sort-relocation-table.s Mon May  9 05:21:14 2016<br>
@@ -206,8 +206,8 @@<br>
        addiu $2, $2, %lo(local1)<br>
<br>
 # CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_1 {<br>
-# CHECK-NEXT:    0x0 R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0x4 R_MIPS_LO16 local1<br>
+# CHECK-NEXT:    0x0 R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x4 R_MIPS_LO16 .text<br>
 # CHECK-NEXT:  }<br>
<br>
 # GOTLO 2: R_MIPS_GOT16 must be followed by a matching R_MIPS_LO16.<br>
@@ -216,8 +216,8 @@<br>
        lui $2, %got(local1)<br>
<br>
 # CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_2 {<br>
-# CHECK-NEXT:    0x4 R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0x0 R_MIPS_LO16 local1<br>
+# CHECK-NEXT:    0x4 R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x0 R_MIPS_LO16 .text<br>
 # CHECK-NEXT:  }<br>
<br>
 # GOTLO 3: R_MIPS_GOT16 must be followed by a matching R_MIPS_LO16.<br>
@@ -229,10 +229,10 @@<br>
        lui $2, %got(local1)<br>
<br>
 # CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_3 {<br>
-# CHECK-NEXT:    0xC R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0x0 R_MIPS_LO16 local1<br>
-# CHECK-NEXT:    0x4 R_MIPS_GOT16 local2<br>
-# CHECK-NEXT:    0x8 R_MIPS_LO16 local2<br>
+# CHECK-NEXT:    0xC R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x0 R_MIPS_LO16 .text<br>
+# CHECK-NEXT:    0x4 R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x8 R_MIPS_LO16 .text<br>
 # CHECK-NEXT:  }<br>
<br>
 # GOTLO 3b: Same as 3 but a different starting order.<br>
@@ -243,10 +243,10 @@<br>
        lui $2, %got(local2)<br>
<br>
 # CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_3b {<br>
-# CHECK-NEXT:    0x4 R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0x0 R_MIPS_LO16 local1<br>
-# CHECK-NEXT:    0xC R_MIPS_GOT16 local2<br>
-# CHECK-NEXT:    0x8 R_MIPS_LO16 local2<br>
+# CHECK-NEXT:    0x4 R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x0 R_MIPS_LO16 .text<br>
+# CHECK-NEXT:    0xC R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x8 R_MIPS_LO16 .text<br>
 # CHECK-NEXT:  }<br>
<br>
 # GOTLO 4: R_MIPS_GOT16 must be followed by a matching R_MIPS_LO16.<br>
@@ -259,10 +259,10 @@<br>
        lui $2, %got(local1)<br>
<br>
 # CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_4 {<br>
-# CHECK-NEXT:    0xC R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0x0 R_MIPS_LO16 local1<br>
-# CHECK-NEXT:    0x8 R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0x4 R_MIPS_LO16 local1<br>
+# CHECK-NEXT:    0xC R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x0 R_MIPS_LO16 .text<br>
+# CHECK-NEXT:    0x8 R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x4 R_MIPS_LO16 .text<br>
 # CHECK-NEXT:  }<br>
<br>
 # GOTLO 5: R_MIPS_GOT16 must be followed by a matching R_MIPS_LO16.<br>
@@ -276,10 +276,10 @@<br>
        addiu $2, $2, %lo(local1)<br>
<br>
 # CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_5 {<br>
-# CHECK-NEXT:    0x8 R_MIPS_LO16 local1<br>
-# CHECK-NEXT:    0x0 R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0x4 R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0xC R_MIPS_LO16 local1<br>
+# CHECK-NEXT:    0x8 R_MIPS_LO16 .text<br>
+# CHECK-NEXT:    0x0 R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x4 R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0xC R_MIPS_LO16 .text<br>
 # CHECK-NEXT:  }<br>
<br>
 # GOTLO 6: R_MIPS_GOT16 must be followed by a matching R_MIPS_LO16.<br>
@@ -293,10 +293,10 @@<br>
        addiu $2, $2, %lo(local1+1)<br>
<br>
 # CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_6 {<br>
-# CHECK-NEXT:    0x8 R_MIPS_LO16 local1<br>
-# CHECK-NEXT:    0x0 R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0x4 R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0xC R_MIPS_LO16 local1<br>
+# CHECK-NEXT:    0x8 R_MIPS_LO16 .text<br>
+# CHECK-NEXT:    0x0 R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x4 R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0xC R_MIPS_LO16 .text<br>
 # CHECK-NEXT:  }<br>
<br>
 # GOTLO 7: R_MIPS_GOT16 must be followed by a matching R_MIPS_LO16.<br>
@@ -310,10 +310,10 @@<br>
        lui $2, %got(local1)<br>
<br>
 # CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_7 {<br>
-# CHECK-NEXT:    0xC R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0x0 R_MIPS_LO16 local1<br>
-# CHECK-NEXT:    0x8 R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0x4 R_MIPS_LO16 local1<br>
+# CHECK-NEXT:    0xC R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x0 R_MIPS_LO16 .text<br>
+# CHECK-NEXT:    0x8 R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x4 R_MIPS_LO16 .text<br>
 # CHECK-NEXT:  }<br>
<br>
 # GOTLO 8: R_MIPS_LO16's may be orphaned.<br>
@@ -321,7 +321,7 @@<br>
        lw $2, %lo(local1)<br>
<br>
 # CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_8 {<br>
-# CHECK-NEXT:    0x0 R_MIPS_LO16 local1<br>
+# CHECK-NEXT:    0x0 R_MIPS_LO16 .text<br>
 # CHECK-NEXT:  }<br>
<br>
 # GOTLO 8b: Another example of 8. The R_MIPS_LO16 at 0x4 is orphaned.<br>
@@ -331,9 +331,9 @@<br>
        lui $2, %got(local1)<br>
<br>
 # CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_8b {<br>
-# CHECK-NEXT:    0x8 R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0x0 R_MIPS_LO16 local1<br>
-# CHECK-NEXT:    0x4 R_MIPS_LO16 local1<br>
+# CHECK-NEXT:    0x8 R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x0 R_MIPS_LO16 .text<br>
+# CHECK-NEXT:    0x4 R_MIPS_LO16 .text<br>
 # CHECK-NEXT:  }<br>
<br>
 # GOTLO 9: R_MIPS_GOT16's don't need a matching R_MIPS_LO16 to immediately<br>
@@ -347,9 +347,9 @@<br>
        lui $2, %got(local1)<br>
<br>
 # CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_9 {<br>
-# CHECK-NEXT:    0x4 R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0x8 R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0x0 R_MIPS_LO16 local1<br>
+# CHECK-NEXT:    0x4 R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x8 R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x0 R_MIPS_LO16 .text<br>
 # CHECK-NEXT:  }<br>
<br>
 # GOTLO 10: R_MIPS_GOT16's must have a matching R_MIPS_LO16 somewhere though.<br>
@@ -370,11 +370,11 @@<br>
        lw $2, %lo(local3)<br>
<br>
 # CHECK-LABEL: Section ({{[0-9]+}}) .rel.mips_gotlo_10 {<br>
-# CHECK-NEXT:    0x0 R_MIPS_GOT16 local1<br>
-# CHECK-NEXT:    0x4 R_MIPS_LO16 local1<br>
-# CHECK-NEXT:    0xC R_MIPS_GOT16 local3<br>
-# CHECK-NEXT:    0x10 R_MIPS_LO16 local3<br>
-# CHECK-NEXT:    0x8 R_MIPS_GOT16 local2<br>
+# CHECK-NEXT:    0x0 R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x4 R_MIPS_LO16 .text<br>
+# CHECK-NEXT:    0xC R_MIPS_GOT16 .text<br>
+# CHECK-NEXT:    0x10 R_MIPS_LO16 .text<br>
+# CHECK-NEXT:    0x8 R_MIPS_GOT16 .text<br>
 # CHECK-NEXT:  }<br>
<br>
 # Finally, do test 2 for R_MIPS_GOT16 on external symbols to prove they are<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><u></u><u></u></p>
</div>
</div>
</div>
</div>

</blockquote></div>