<div dir="ltr">Hi Simon,<br><br>Seems some of these changes broke couple builders:<br><br><a href="http://lab.llvm.org:8011/builders/lld-x86_64-darwin11/builds/7661">http://lab.llvm.org:8011/builders/lld-x86_64-darwin11/builds/7661</a><br>
<a href="http://lab.llvm.org:8011/builders/lld-x86_64-freeBSD/builds/4241">http://lab.llvm.org:8011/builders/lld-x86_64-freeBSD/builds/4241</a><br><br>Please have a look at these?<br><br>Thanks<br><br>Galina<br></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Wed, Mar 19, 2014 at 8:46 AM, Simon Atanasyan <span dir="ltr"><<a href="mailto:simon@atanasyan.com" target="_blank">simon@atanasyan.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: atanasyan<br>
Date: Wed Mar 19 10:46:25 2014<br>
New Revision: 204247<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=204247&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=204247&view=rev</a><br>
Log:<br>
[Mips] Fix handling of R_MIPS_GOT16 relocation and building local part<br>
of GOT.<br>
 * Read addend for R_MIPS_GOT16 relocation.<br>
 * Put only high 16 bits of symbol + addend into GOT entries for<br>
   locally visible symbols.<br>
<br>
Modified:<br>
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h<br>
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h<br>
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp<br>
    lld/trunk/test/elf/Mips/dynlib-dynsym.test<br>
    lld/trunk/test/elf/Mips/got16.test<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h?rev=204247&r1=204246&r2=204247&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h?rev=204247&r1=204246&r2=204247&view=diff</a><br>

==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h Wed Mar 19 10:46:25 2014<br>
@@ -78,6 +78,7 @@ private:<br>
       break;<br>
     case R_MIPS_HI16:<br>
     case R_MIPS_LO16:<br>
+    case R_MIPS_GOT16:<br>
       ref->setAddend(*(int16_t *)ap);<br>
       break;<br>
     }<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h?rev=204247&r1=204246&r2=204247&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h?rev=204247&r1=204246&r2=204247&view=diff</a><br>

==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsLinkingContext.h Wed Mar 19 10:46:25 2014<br>
@@ -18,6 +18,8 @@ namespace elf {<br>
 enum {<br>
   /// \brief Do nothing but mark GOT entry as a global one.<br>
   LLD_R_MIPS_GLOBAL_GOT = 1024,<br>
+  /// \brief Apply high 16 bits of symbol + addend.<br>
+  LLD_R_MIPS_32_HI16 = 1025,<br>
   /// \brief The same as R_MIPS_26 but for global symbols.<br>
   LLD_R_MIPS_GLOBAL_26 = 1026,<br>
   /// \brief Setup hi 16 bits using the symbol this reference refers to.<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp?rev=204247&r1=204246&r2=204247&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp?rev=204247&r1=204246&r2=204247&view=diff</a><br>

==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp Wed Mar 19 10:46:25 2014<br>
@@ -105,6 +105,11 @@ void relocCall16(uint8_t *location, uint<br>
   applyReloc(location, G, 0xffff);<br>
 }<br>
<br>
+/// \brief LLD_R_MIPS_32_HI16<br>
+void reloc32hi16(uint8_t *location, uint64_t S, int64_t A) {<br>
+  applyReloc(location, (S + A) & 0xffff0000, 0xffffffff);<br>
+}<br>
+<br>
 /// \brief LLD_R_MIPS_HI16<br>
 void relocLldHi16(uint8_t *location, uint64_t S) {<br>
   applyReloc(location, (S + 0x8000) >> 16, 0xffff);<br>
@@ -164,6 +169,9 @@ error_code MipsTargetRelocationHandler::<br>
   case LLD_R_MIPS_GLOBAL_GOT:<br>
     // Do nothing.<br>
     break;<br>
+  case LLD_R_MIPS_32_HI16:<br>
+    reloc32hi16(location, targetVAddress, ref.addend());<br>
+    break;<br>
   case LLD_R_MIPS_GLOBAL_26:<br>
     reloc26ext(location, targetVAddress, ref.addend());<br>
     break;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp?rev=204247&r1=204246&r2=204247&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp?rev=204247&r1=204246&r2=204247&view=diff</a><br>

==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp Wed Mar 19 10:46:25 2014<br>
@@ -125,8 +125,11 @@ private:<br>
   /// \brief Owner of all the Atoms created by this pass.<br>
   RelocationPassFile _file;<br>
<br>
-  /// \brief Map Atoms to their GOT entries.<br>
-  llvm::DenseMap<const Atom *, GOTAtom *> _gotLocalMap;<br>
+  /// \brief Map Atoms and addend to local GOT entries.<br>
+  typedef std::pair<const Atom *, int64_t> LocalGotMapKeyT;<br>
+  llvm::DenseMap<LocalGotMapKeyT, GOTAtom *> _gotLocalMap;<br>
+<br>
+  /// \brief Map Atoms to global GOT entries.<br>
   llvm::DenseMap<const Atom *, GOTAtom *> _gotGlobalMap;<br>
<br>
   /// \brief the list of local GOT atoms.<br>
@@ -160,7 +163,7 @@ private:<br>
   void handlePLT(const Reference &ref);<br>
   void handleGOT(const Reference &ref);<br>
<br>
-  const GOTAtom *getLocalGOTEntry(const Atom *a);<br>
+  const GOTAtom *getLocalGOTEntry(const Reference &ref);<br>
   const GOTAtom *getGlobalGOTEntry(const Atom *a);<br>
   const PLTAtom *getPLTEntry(const Atom *a);<br>
   const ObjectAtom *getObjectEntry(const SharedLibraryAtom *a);<br>
@@ -302,7 +305,7 @@ void RelocationPass::handlePLT(const Ref<br>
<br>
 void RelocationPass::handleGOT(const Reference &ref) {<br>
   if (requireLocalGOT(ref.target()))<br>
-    const_cast<Reference &>(ref).setTarget(getLocalGOTEntry(ref.target()));<br>
+    const_cast<Reference &>(ref).setTarget(getLocalGOTEntry(ref));<br>
   else<br>
     const_cast<Reference &>(ref).setTarget(getGlobalGOTEntry(ref.target()));<br>
 }<br>
@@ -327,18 +330,23 @@ bool RelocationPass::requireLocalGOT(con<br>
   return false;<br>
 }<br>
<br>
-const GOTAtom *RelocationPass::getLocalGOTEntry(const Atom *a) {<br>
-  auto got = _gotLocalMap.find(a);<br>
+const GOTAtom *RelocationPass::getLocalGOTEntry(const Reference &ref) {<br>
+  const Atom *a = ref.target();<br>
+  LocalGotMapKeyT key(a, ref.addend());<br>
+<br>
+  auto got = _gotLocalMap.find(key);<br>
   if (got != _gotLocalMap.end())<br>
     return got->second;<br>
<br>
   auto ga = new (_file._alloc) GOT0Atom(_file);<br>
-  _gotLocalMap[a] = ga;<br>
+  _gotLocalMap[key] = ga;<br>
<br>
   _localGotVector.push_back(ga);<br>
<br>
-  if (const DefinedAtom *da = dyn_cast<DefinedAtom>(a))<br>
-    ga->addReferenceELF_Mips(R_MIPS_32, 0, da, 0);<br>
+  if (isLocal(a))<br>
+    ga->addReferenceELF_Mips(LLD_R_MIPS_32_HI16, 0, a, ref.addend());<br>
+  else<br>
+    ga->addReferenceELF_Mips(R_MIPS_32, 0, a, 0);<br>
<br>
   DEBUG_WITH_TYPE("MipsGOT", {<br>
     ga->_name = "__got_";<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp?rev=204247&r1=204246&r2=204247&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp?rev=204247&r1=204246&r2=204247&view=diff</a><br>

==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp Wed Mar 19 10:46:25 2014<br>
@@ -58,6 +58,7 @@ const Registry::KindStrings MipsTargetHa<br>
   LLD_KIND_STRING_ENTRY(R_MIPS_COPY),<br>
   LLD_KIND_STRING_ENTRY(R_MIPS_JUMP_SLOT),<br>
   LLD_KIND_STRING_ENTRY(LLD_R_MIPS_GLOBAL_GOT),<br>
+  LLD_KIND_STRING_ENTRY(LLD_R_MIPS_32_HI16),<br>
   LLD_KIND_STRING_ENTRY(LLD_R_MIPS_GLOBAL_26),<br>
   LLD_KIND_STRING_ENTRY(LLD_R_MIPS_HI16),<br>
   LLD_KIND_STRING_ENTRY(LLD_R_MIPS_LO16),<br>
<br>
Modified: lld/trunk/test/elf/Mips/dynlib-dynsym.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/dynlib-dynsym.test?rev=204247&r1=204246&r2=204247&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/dynlib-dynsym.test?rev=204247&r1=204246&r2=204247&view=diff</a><br>

==============================================================================<br>
--- lld/trunk/test/elf/Mips/dynlib-dynsym.test (original)<br>
+++ lld/trunk/test/elf/Mips/dynlib-dynsym.test Wed Mar 19 10:46:25 2014<br>
@@ -83,7 +83,7 @@<br>
 # CHECK-GOT:     section-name:    .got<br>
 # CHECK-GOT:     permissions:     rw-<br>
 # CHECK-GOT:     references:<br>
-# CHECK-GOT:       - kind:            R_MIPS_32<br>
+# CHECK-GOT:       - kind:            LLD_R_MIPS_32_HI16<br>
 # CHECK-GOT:         offset:          0<br>
 # CHECK-GOT:         target:          L003<br>
 # CHECK-GOT:   - ref-name:        L004<br>
@@ -94,7 +94,7 @@<br>
 # CHECK-GOT:     section-name:    .got<br>
 # CHECK-GOT:     permissions:     rw-<br>
 # CHECK-GOT:     references:<br>
-# CHECK-GOT:       - kind:            R_MIPS_32<br>
+# CHECK-GOT:       - kind:            LLD_R_MIPS_32_HI16<br>
 # CHECK-GOT:         offset:          0<br>
 # CHECK-GOT:         target:          L005<br>
 # CHECK-GOT:   - ref-name:        L006<br>
<br>
Modified: lld/trunk/test/elf/Mips/got16.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/got16.test?rev=204247&r1=204246&r2=204247&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/got16.test?rev=204247&r1=204246&r2=204247&view=diff</a><br>

==============================================================================<br>
--- lld/trunk/test/elf/Mips/got16.test (original)<br>
+++ lld/trunk/test/elf/Mips/got16.test Wed Mar 19 10:46:25 2014<br>
@@ -6,105 +6,141 @@<br>
 # RUN: lld -flavor gnu -target mipsel -shared --noinhibit-exec -o %t2 %t1<br>
 # RUN: llvm-objdump -t -disassemble %t2 | FileCheck -check-prefix RAW %s<br>
<br>
-<br>
-# YAML: - ref-name:        [[L002:[-a-zA-Z0-9_]+]]<br>
-# YAML:   type:            got<br>
-# YAML:   content:         [ 00, 00, 00, 00 ]<br>
-# YAML:   alignment:       2^2<br>
-# YAML:   section-choice:  custom-required<br>
-# YAML:   section-name:    .got<br>
-# YAML:   permissions:     rw-<br>
-# YAML:   references:<br>
-# YAML:     - kind:            R_MIPS_32<br>
-# YAML:       offset:          0<br>
-# YAML:       target:          [[L003:[-a-zA-Z0-9_]+]]<br>
-# YAML: - ref-name:        [[L004:[-a-zA-Z0-9_]+]]<br>
-# YAML:   type:            got<br>
-# YAML:   content:         [ 00, 00, 00, 00 ]<br>
-# YAML:   alignment:       2^2<br>
-# YAML:   section-choice:  custom-required<br>
-# YAML:   section-name:    .got<br>
-# YAML:   permissions:     rw-<br>
-# YAML:   references:<br>
-# YAML:     - kind:            R_MIPS_32<br>
-# YAML:       offset:          0<br>
-# YAML:       target:          hidden<br>
-# YAML: - ref-name:        [[L005:[-a-zA-Z0-9_]+]]<br>
-# YAML:   type:            got<br>
-# YAML:   content:         [ 00, 00, 00, 00 ]<br>
-# YAML:   alignment:       2^2<br>
-# YAML:   section-choice:  custom-required<br>
-# YAML:   section-name:    .got<br>
-# YAML:   permissions:     rw-<br>
-# YAML:   references:<br>
-# YAML:     - kind:            LLD_R_MIPS_GLOBAL_GOT<br>
-# YAML:       offset:          0<br>
-# YAML:       target:          glob<br>
-# YAML:     - kind:            R_MIPS_32<br>
-# YAML:       offset:          0<br>
-# YAML:       target:          glob<br>
-# YAML: - ref-name:        [[L006:[-a-zA-Z0-9_]+]]<br>
-# YAML:   type:            got<br>
-# YAML:   content:         [ 00, 00, 00, 00 ]<br>
-# YAML:   alignment:       2^2<br>
-# YAML:   section-choice:  custom-required<br>
-# YAML:   section-name:    .got<br>
-# YAML:   permissions:     rw-<br>
-# YAML:   references:<br>
-# YAML:     - kind:            LLD_R_MIPS_GLOBAL_GOT<br>
-# YAML:       offset:          0<br>
-# YAML:       target:          extern<br>
-# YAML: - ref-name:        [[L007:[-a-zA-Z0-9_]+]]<br>
-# YAML:   alignment:       2^2<br>
-# YAML:   references:<br>
-# YAML:     - kind:            layout-after<br>
-# YAML:       offset:          0<br>
-# YAML:       target:          glob<br>
-# YAML: - name:            glob<br>
-# YAML:   scope:           global<br>
-# YAML:   content:         [ 00, 00, 84, 8F, 00, 00, 84, 24, 00, 00, 84, 8F,<br>
-# YAML:                      00, 00, 84, 8F, 00, 00, 84, 8F ]<br>
-# YAML:   alignment:       2^2<br>
-# YAML:   references:<br>
-# YAML:     - kind:            R_MIPS_LO16<br>
-# YAML:       offset:          4<br>
-# YAML:       target:          [[L003]]<br>
-# YAML:     - kind:            R_MIPS_GOT16<br>
-# YAML:       offset:          8<br>
-# YAML:       target:          [[L004]]<br>
-# YAML:     - kind:            R_MIPS_CALL16<br>
-# YAML:       offset:          12<br>
-# YAML:       target:          [[L005]]<br>
-# YAML:     - kind:            R_MIPS_CALL16<br>
-# YAML:       offset:          16<br>
-# YAML:       target:          [[L006]]<br>
+# Local GOT entries:<br>
+# YAML:       - ref-name:        L003<br>
+# YAML-NEXT:    type:            got<br>
+# YAML-NEXT:    content:         [ 00, 00, 00, 00 ]<br>
+# YAML-NEXT:    alignment:       2^2<br>
+# YAML-NEXT:    section-choice:  custom-required<br>
+# YAML-NEXT:    section-name:    .got<br>
+# YAML-NEXT:    permissions:     rw-<br>
+# YAML-NEXT:    references:<br>
+# YAML-NEXT:      - kind:            LLD_R_MIPS_32_HI16<br>
+# YAML-NEXT:        offset:          0<br>
+# YAML-NEXT:        target:          L006<br>
+# YAML-NEXT:  - ref-name:        L005<br>
+# YAML-NEXT:    type:            got<br>
+# YAML-NEXT:    content:         [ 00, 00, 00, 00 ]<br>
+# YAML-NEXT:    alignment:       2^2<br>
+# YAML-NEXT:    section-choice:  custom-required<br>
+# YAML-NEXT:    section-name:    .got<br>
+# YAML-NEXT:    permissions:     rw-<br>
+# YAML-NEXT:    references:<br>
+# YAML-NEXT:      - kind:            LLD_R_MIPS_32_HI16<br>
+# YAML-NEXT:        offset:          0<br>
+# YAML-NEXT:        target:          L006<br>
+# YAML-NEXT:        addend:          66048<br>
+# YAML-NEXT:  - ref-name:        L007<br>
+# YAML-NEXT:    type:            got<br>
+# YAML-NEXT:    content:         [ 00, 00, 00, 00 ]<br>
+# YAML-NEXT:    alignment:       2^2<br>
+# YAML-NEXT:    section-choice:  custom-required<br>
+# YAML-NEXT:    section-name:    .got<br>
+# YAML-NEXT:    permissions:     rw-<br>
+# YAML-NEXT:    references:<br>
+# YAML-NEXT:      - kind:            R_MIPS_32<br>
+# YAML-NEXT:        offset:          0<br>
+# YAML-NEXT:        target:          hidden<br>
+<br>
+# Global GOT entries:<br>
+# YAML-NEXT:  - ref-name:        L008<br>
+# YAML-NEXT:    type:            got<br>
+# YAML-NEXT:    content:         [ 00, 00, 00, 00 ]<br>
+# YAML-NEXT:    alignment:       2^2<br>
+# YAML-NEXT:    section-choice:  custom-required<br>
+# YAML-NEXT:    section-name:    .got<br>
+# YAML-NEXT:    permissions:     rw-<br>
+# YAML-NEXT:    references:<br>
+# YAML-NEXT:      - kind:            LLD_R_MIPS_GLOBAL_GOT<br>
+# YAML-NEXT:        offset:          0<br>
+# YAML-NEXT:        target:          glob<br>
+# YAML-NEXT:      - kind:            R_MIPS_32<br>
+# YAML-NEXT:        offset:          0<br>
+# YAML-NEXT:        target:          glob<br>
+# YAML-NEXT:  - ref-name:        L009<br>
+# YAML-NEXT:    type:            got<br>
+# YAML-NEXT:    content:         [ 00, 00, 00, 00 ]<br>
+# YAML-NEXT:    alignment:       2^2<br>
+# YAML-NEXT:    section-choice:  custom-required<br>
+# YAML-NEXT:    section-name:    .got<br>
+# YAML-NEXT:    permissions:     rw-<br>
+# YAML-NEXT:    references:<br>
+# YAML-NEXT:      - kind:            LLD_R_MIPS_GLOBAL_GOT<br>
+# YAML-NEXT:        offset:          0<br>
+# YAML-NEXT:        target:          extern<br>
+<br>
+# Function glob<br>
+# YAML:       - name:            glob<br>
+# YAML-NEXT:    scope:           global<br>
+# YAML-NEXT:    content:         [ 00, 00, 84, 8F, 00, 00, 84, 24, 01, 00, 84, 8F,<br>
+# YAML-NEXT:                       00, 02, 84, 24, 00, 00, 84, 8F, 00, 00, 84, 8F,<br>
+# YAML-NEXT:                       00, 00, 84, 8F ]<br>
+# YAML-NEXT:    alignment:       2^2<br>
+# YAML-NEXT:    references:<br>
+# YAML-NEXT:      - kind:            R_MIPS_GOT16<br>
+# YAML-NEXT:        offset:          0<br>
+# YAML-NEXT:        target:          L003<br>
+# YAML-NEXT:      - kind:            R_MIPS_LO16<br>
+# YAML-NEXT:        offset:          4<br>
+# YAML-NEXT:        target:          L006<br>
+# YAML-NEXT:      - kind:            R_MIPS_GOT16<br>
+# YAML-NEXT:        offset:          8<br>
+# YAML-NEXT:        target:          L005<br>
+# YAML-NEXT:        addend:          66048<br>
+# YAML-NEXT:      - kind:            R_MIPS_LO16<br>
+# YAML-NEXT:        offset:          12<br>
+# YAML-NEXT:        target:          L006<br>
+# YAML-NEXT:        addend:          512<br>
+# YAML-NEXT:      - kind:            R_MIPS_GOT16<br>
+# YAML-NEXT:        offset:          16<br>
+# YAML-NEXT:        target:          L007<br>
+# YAML-NEXT:      - kind:            R_MIPS_CALL16<br>
+# YAML-NEXT:        offset:          20<br>
+# YAML-NEXT:        target:          L008<br>
+# YAML-NEXT:      - kind:            R_MIPS_CALL16<br>
+# YAML-NEXT:        offset:          24<br>
+# YAML-NEXT:        target:          L009<br>
<br>
 # RAW: Disassembly of section .text:<br>
 # RAW: glob:<br>
-# RAW-NEXT:   148:  18 80 84 8f  lw      $4, -32744($gp)<br>
-# RAW-NEXT:   14c:  00 20 84 24  addiu   $4, $4, 8192<br>
-# RAW-NEXT:   150:  1c 80 84 8f  lw      $4, -32740($gp)<br>
-# RAW-NEXT:   154:  20 80 84 8f  lw      $4, -32736($gp)<br>
-# RAW-NEXT:   158:  24 80 84 8f  lw      $4, -32732($gp)<br>
+# RAW-NEXT:   12c:  18 80 84 8f  lw      $4, -32744($gp)<br>
+# RAW-NEXT:   130:  00 20 84 24  addiu   $4, $4, 8192<br>
+# RAW-NEXT:   134:  1c 80 84 8f  lw      $4, -32740($gp)<br>
+# RAW-NEXT:   138:  00 22 84 24  addiu   $4, $4, 8704<br>
+# RAW-NEXT:   13c:  20 80 84 8f  lw      $4, -32736($gp)<br>
+# RAW-NEXT:   140:  24 80 84 8f  lw      $4, -32732($gp)<br>
+# RAW-NEXT:   144:  28 80 84 8f  lw      $4, -32728($gp)<br>
<br>
 # RAW: SYMBOL TABLE:<br>
 # RAW: 00000000       *UND*  00000000<br>
-# RAW: 00002000 l     .data  00000000 local<br>
+# RAW: 00002000 l     .data  00000000 str1<br>
+# RAW: 00012200 l     .data  00000005 str2<br>
+# RAW: 0000012c g   F .text  0000001c glob<br>
+# RAW: 00012205 g     .data  00000004 hidden<br>
<br>
     .global glob<br>
     .ent    glob<br>
 glob:<br>
-    lw      $4,%got(local)($28)      # G(local)<br>
-    addiu   $4,$4,%lo(local)         # local (0x2000)<br>
+    lw      $4,%got(str1)($28)       # G(str1)<br>
+    addiu   $4,$4,%lo(str1)          # str1<br>
+    lw      $4,%got(str2)($28)       # G(str2)<br>
+    addiu   $4,$4,%lo(str2)          # str2<br>
     lw      $4,%got(hidden)($28)     # G(hidden)<br>
     lw      $4,%call16(glob)($28)    # G(glob)<br>
     lw      $4,%call16(extern)($28)  # G(extern)<br>
     .end    glob<br>
+<br>
     .data<br>
-    .type   local,%object<br>
-    .size   local,4<br>
-local:<br>
-    .word   undef<br>
+    .type   str1, %object<br>
+    .size   str1, 0x10200<br>
+str1:<br>
+    .ascii  "str1\000"<br>
+    .space  0x101fb<br>
+<br>
+    .type str2, @object<br>
+    .size str2, 5<br>
+str2:<br>
+    .ascii  "str2\000"<br>
<br>
     .globl  hidden<br>
     .hidden hidden<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>