<div dir="ltr">Thanks Rafael for reporting.<div><br></div><div>Looks like there are two atoms having the same ordinals. It's pretty odd because if there's such bug in the ELF reader, the bug should make the tests fail not only on Mac but on any platform. I'll take a look.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jan 31, 2015 at 2:01 PM, Rafael Auler <span dir="ltr"><<a href="mailto:rafaelauler@gmail.com" target="_blank">rafaelauler@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Oddly, this breaks my darwin build compiling with Apple's clang 6.0 (but not the Linux one with gcc 4.8.2). I'm reporting this here to give you a heads up because it looks like the buildbots for lld on darwin are red anyway for another problem (failure do locate Intrinsics.gen).<div><br></div><div><div>rafael$ ninja check-lld</div><div>[15/15] Running lld test suite</div><div>FAILED: cd /Users/rafael/p/obj/tools/lld/test && /usr/bin/python /Users/rafael/p/llvm/utils/lit/lit.py -sv --param lld_site_config=/Users/rafael/p/obj/tools/lld/test/lit.site.cfg --param lld_unit_site_config=/Users/rafael/p/obj/tools/lld/test/Unit/lit.site.cfg /Users/rafael/p/obj/tools/lld/test</div><div>-- Testing: 651 tests, 8 threads --</div><div>Testing: 0 .. 10.. 20.. 30.. 40</div><div>FAIL: lld :: elf/X86_64/startGroupEndGroup.test (286 of 651)</div><div>******************** TEST 'lld :: elf/X86_64/startGroupEndGroup.test' FAILED ********************</div><div>Script:</div><div>--</div><div>not lld -flavor gnu -target x86_64 /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/1.o    /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/libfn.a /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/libfn1.a -o x 2> /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp.err</div><div>lld -flavor gnu -target x86_64 /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/1.o --start-group    /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/libfn.a /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/libfn1.a --end-group -o /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp1</div><div>lld -flavor gnu -target x86_64 /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/1.o --start-group    /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/fn.o /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/fn2.o    /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/fn1.o --end-group -o /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp2</div><div>lld -flavor gnu -target x86_64 /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/1.o --start-group    --whole-archive /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/libfn.a --no-whole-archive    /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/libfn1.a --end-group -o /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp3</div><div>lld -flavor gnu -target x86_64 /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/1.o --start-group    /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/libfn2.so /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/fn1.o /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/fn.o    --end-group -o /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp4</div><div>lld -flavor gnu -target x86_64 /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/1.o '-('    /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/libfn.a /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/libfn1.a '-)' -o /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp1.alias</div><div>lld -flavor gnu -target x86_64 /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/1.o '-('    /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/fn.o /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/fn2.o    /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/fn1.o '-)' -o /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp2.alias</div><div>lld -flavor gnu -target x86_64 /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/1.o '-('    --whole-archive /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/libfn.a --no-whole-archive    /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/libfn1.a '-)' -o /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp3.alias</div><div>llvm-nm /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp1 | FileCheck -check-prefix=RESOLVEDEXTERNAL /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/startGroupEndGroup.test</div><div>llvm-nm /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp2 | FileCheck -check-prefix=RESOLVEDEXTERNAL /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/startGroupEndGroup.test</div><div>llvm-nm /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp3 | FileCheck -check-prefix=RESOLVEDEXTERNAL /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/startGroupEndGroup.test</div><div>llvm-nm /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp1.alias | FileCheck -check-prefix=RESOLVEDEXTERNAL /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/startGroupEndGroup.test</div><div>llvm-nm /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp2.alias | FileCheck -check-prefix=RESOLVEDEXTERNAL /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/startGroupEndGroup.test</div><div>llvm-nm /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp3.alias | FileCheck -check-prefix=RESOLVEDEXTERNAL /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/startGroupEndGroup.test</div><div>--</div><div>Exit Code: 132</div><div><br></div><div>Command Output (stderr):</div><div>--</div><div>Assertion failed: (lhs->ordinal() != rhs->ordinal()), function compareByPosition, file /Users/rafael/p/llvm/tools/lld/lib/Core/DefinedAtom.cpp, line 90.</div><div>0  lld                      0x00000001067986fe llvm::sys::PrintStackTrace(__sFILE*) + 46</div><div>1  lld                      0x0000000106799aab PrintStackTraceSignalHandler(void*) + 27</div><div>2  lld                      0x0000000106799ef5 SignalHandler(int) + 565</div><div>3  libsystem_platform.dylib 0x00007fff8ebb4f1a _sigtramp + 26</div><div>4  libsystem_platform.dylib 0x00007fff61c25764 _sigtramp + 3540453476</div><div>5  lld                      0x0000000106799adb raise + 27</div><div>6  lld                      0x0000000106799b92 abort + 18</div><div>7  lld                      0x0000000106799b71 __assert_rtn + 129</div><div>8  lld                      0x0000000106b7feb7 lld::DefinedAtom::compareByPosition(lld::DefinedAtom const*, lld::DefinedAtom const*) + 231</div><div>9  lld                      0x000000010689e60b void std::__1::__sort<bool (*&)(lld::DefinedAtom const*, lld::DefinedAtom const*), lld::DefinedAtom const**>(lld::DefinedAtom const**, lld::DefinedAtom const**, bool (*&)(lld::DefinedAtom const*, lld::DefinedAtom const*)) + 2187</div><div>10 lld                      0x000000010689b5eb void lld::detail::parallel_quick_sort<std::__1::__wrap_iter<lld::DefinedAtom const**>, bool (lld::DefinedAtom const*, lld::DefinedAtom const*)>(std::__1::__wrap_iter<lld::DefinedAtom const**>, std::__1::__wrap_iter<lld::DefinedAtom const**>, bool  const(&)(lld::DefinedAtom const*, lld::DefinedAtom const*), lld::TaskGroup&, unsigned long) + 459</div><div>11 lld                      0x000000010689b3f1 void lld::parallel_sort<std::__1::__wrap_iter<lld::DefinedAtom const**>, bool (lld::DefinedAtom const*, lld::DefinedAtom const*)>(std::__1::__wrap_iter<lld::DefinedAtom const**>, std::__1::__wrap_iter<lld::DefinedAtom const**>, bool  const(&)(lld::DefinedAtom const*, lld::DefinedAtom const*)) + 385</div><div>12 lld                      0x0000000106b0dcb7 lld::elf::OrderPass::perform(std::__1::unique_ptr<lld::MutableFile, std::__1::default_delete<lld::MutableFile> >&) + 311</div><div>13 lld                      0x000000010668f9a6 lld::PassManager::runOnFile(std::__1::unique_ptr<lld::MutableFile, std::__1::default_delete<lld::MutableFile> >&) + 454</div><div>14 lld                      0x000000010668d189 lld::Driver::link(lld::LinkingContext&, llvm::raw_ostream&) + 7065</div><div>15 lld                      0x000000010669c569 lld::GnuLdDriver::linkELF(int, char const**, llvm::raw_ostream&) + 1113</div><div>16 lld                      0x00000001066b7ade lld::UniversalDriver::link(int, char const**, llvm::raw_ostream&) + 1454</div><div>17 lld                      0x000000010667b5e6 main + 86</div><div>18 libdyld.dylib            0x00007fff965ee5c9 start + 1</div><div>Stack dump:</div><div>0.<span style="white-space:pre-wrap">       </span>Program arguments: lld -target x86_64 /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/1.o --start-group /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/libfn.a /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/libfn1.a --end-group -o /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp1 -flavor gnu</div><div>/Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.script: line 14: 12872 Illegal instruction: 4  lld -flavor gnu -target x86_64 /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/1.o --start-group /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/libfn.a /Users/rafael/p/llvm/tools/lld/test/elf/X86_64/Inputs/group/libfn1.a --end-group -o /Users/rafael/p/obj/tools/lld/test/elf/X86_64/Output/startGroupEndGroup.test.tmp1</div><div><br></div><div>--</div><div><br></div><div>********************</div><div>Testing: 0 .. 10.. 20.. 30.. 40.</div><div>FAIL: lld :: elf/init_array.test (302 of 651)</div><div>******************** TEST 'lld :: elf/init_array.test' FAILED ********************</div><div>Script:</div><div>--</div><div>lld -flavor gnu -target x86_64-linux -o /Users/rafael/p/obj/tools/lld/test/elf/Output/init_array.test.tmp /Users/rafael/p/llvm/tools/lld/test/elf/Inputs/init_array.x86-64   -e __init_array_start</div><div>llvm-objdump -t -section-headers /Users/rafael/p/obj/tools/lld/test/elf/Output/init_array.test.tmp | FileCheck /Users/rafael/p/llvm/tools/lld/test/elf/init_array.test</div><div>--</div><div>Exit Code: 132</div><div><br></div><div>Command Output (stderr):</div><div>--</div><div>Assertion failed: (lhs->ordinal() != rhs->ordinal()), function compareByPosition, file /Users/rafael/p/llvm/tools/lld/lib/Core/DefinedAtom.cpp, line 90.</div><div>0  lld                      0x0000000105e4f6fe llvm::sys::PrintStackTrace(__sFILE*) + 46</div><div>1  lld                      0x0000000105e50aab PrintStackTraceSignalHandler(void*) + 27</div><div>2  lld                      0x0000000105e50ef5 SignalHandler(int) + 565</div><div>3  libsystem_platform.dylib 0x00007fff8ebb4f1a _sigtramp + 26</div><div>4  libsystem_platform.dylib 0x0000000000000002 _sigtramp + 1900327170</div><div>5  lld                      0x0000000105e50adb raise + 27</div><div>6  lld                      0x0000000105e50b92 abort + 18</div><div>7  lld                      0x0000000105e50b71 __assert_rtn + 129</div><div>8  lld                      0x0000000106236eb7 lld::DefinedAtom::compareByPosition(lld::DefinedAtom const*, lld::DefinedAtom const*) + 231</div><div>9  lld                      0x0000000105f5560b void std::__1::__sort<bool (*&)(lld::DefinedAtom const*, lld::DefinedAtom const*), lld::DefinedAtom const**>(lld::DefinedAtom const**, lld::DefinedAtom const**, bool (*&)(lld::DefinedAtom const*, lld::DefinedAtom const*)) + 2187</div><div>10 lld                      0x0000000105f525eb void lld::detail::parallel_quick_sort<std::__1::__wrap_iter<lld::DefinedAtom const**>, bool (lld::DefinedAtom const*, lld::DefinedAtom const*)>(std::__1::__wrap_iter<lld::DefinedAtom const**>, std::__1::__wrap_iter<lld::DefinedAtom const**>, bool  const(&)(lld::DefinedAtom const*, lld::DefinedAtom const*), lld::TaskGroup&, unsigned long) + 459</div><div>11 lld                      0x0000000105f523f1 void lld::parallel_sort<std::__1::__wrap_iter<lld::DefinedAtom const**>, bool (lld::DefinedAtom const*, lld::DefinedAtom const*)>(std::__1::__wrap_iter<lld::DefinedAtom const**>, std::__1::__wrap_iter<lld::DefinedAtom const**>, bool  const(&)(lld::DefinedAtom const*, lld::DefinedAtom const*)) + 385</div><div>12 lld                      0x00000001061c4cb7 lld::elf::OrderPass::perform(std::__1::unique_ptr<lld::MutableFile, std::__1::default_delete<lld::MutableFile> >&) + 311</div><div>13 lld                      0x0000000105d469a6 lld::PassManager::runOnFile(std::__1::unique_ptr<lld::MutableFile, std::__1::default_delete<lld::MutableFile> >&) + 454</div><div>14 lld                      0x0000000105d44189 lld::Driver::link(lld::LinkingContext&, llvm::raw_ostream&) + 7065</div><div>15 lld                      0x0000000105d53569 lld::GnuLdDriver::linkELF(int, char const**, llvm::raw_ostream&) + 1113</div><div>16 lld                      0x0000000105d6eade lld::UniversalDriver::link(int, char const**, llvm::raw_ostream&) + 1454</div><div>17 lld                      0x0000000105d325e6 main + 86</div><div>18 libdyld.dylib            0x00007fff965ee5c9 start + 1</div><div>19 libdyld.dylib            0x000000000000000a start + 1772165698</div><div>Stack dump:</div><div>0.<span style="white-space:pre-wrap">  </span>Program arguments: lld -target x86_64-linux -o /Users/rafael/p/obj/tools/lld/test/elf/Output/init_array.test.tmp /Users/rafael/p/llvm/tools/lld/test/elf/Inputs/init_array.x86-64 -e __init_array_start -flavor gnu</div><div>/Users/rafael/p/obj/tools/lld/test/elf/Output/init_array.test.script: line 2: 13049 Illegal instruction: 4  lld -flavor gnu -target x86_64-linux -o /Users/rafael/p/obj/tools/lld/test/elf/Output/init_array.test.tmp /Users/rafael/p/llvm/tools/lld/test/elf/Inputs/init_array.x86-64 -e __init_array_start</div><div><br></div><div>--</div><div><br></div><div>********************</div><div>Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..</div><div>Testing Time: 2.94s</div><div>********************</div><div>Failing Tests (2):</div><div>    lld :: elf/X86_64/startGroupEndGroup.test</div><div>    lld :: elf/init_array.test</div><div><br></div><div>  Expected Passes    : 616</div><div>  Expected Failures  : 1</div><div>  Unsupported Tests  : 32</div><div>  Unexpected Failures: 2</div></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jan 31, 2015 at 12:05 AM, Rui Ueyama <span dir="ltr"><<a href="mailto:ruiu@google.com" target="_blank">ruiu@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: ruiu<br>
Date: Fri Jan 30 20:05:01 2015<br>
New Revision: 227666<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=227666&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=227666&view=rev</a><br>
Log:<br>
ELF: Don't use LayoutPass.<br>
<br>
Previously we applied the LayoutPass to order atoms and then<br>
apply elf::ArrayOrderPass to sort them again. The first pass is<br>
basically supposed to sort atoms in the normal fashion (which<br>
is to sort symbols in the same order as the input files).<br>
The second pass sorts atoms in {init,fini}_array.<priority> by<br>
priority.<br>
<br>
The problem is that the LayoutPass is overkill. It analyzes<br>
references between atoms to make a decision how to sort them.<br>
It's slow, hard to understand, and above all, it doesn't seem<br>
that we need its feature for ELF in the first place.<br>
<br>
This patch remove the LayoutPass from ELF pass list. Now all<br>
reordering is done in elf::OrderPass. That pass sorts atoms by<br>
{init,fini}_array, and if they are not in the special section,<br>
they are ordered as the same order as they appear in the command<br>
line. The new code is far easier to understand, faster, and<br>
still able to create valid executables.<br>
<br>
Unlike the previous layout pass, elf::OrderPass doesn't count<br>
any attributes of an atom (e.g. permissions) except its<br>
position. It's OK because the writer takes care of them if we<br>
have to.<br>
<br>
This patch changes the order of final output, although that's<br>
benign. Tests are updated.<br>
<br>
<a href="http://reviews.llvm.org/D7278" target="_blank">http://reviews.llvm.org/D7278</a><br>
<br>
Added:<br>
    lld/trunk/lib/ReaderWriter/ELF/OrderPass.h<br>
Removed:<br>
    lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.h<br>
    lld/trunk/test/elf/X86_64/orderatoms-by-override.test<br>
Modified:<br>
    lld/trunk/include/lld/Core/DefinedAtom.h<br>
    lld/trunk/lib/Core/DefinedAtom.cpp<br>
    lld/trunk/lib/ReaderWriter/ELF/CMakeLists.txt<br>
    lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp<br>
    lld/trunk/lib/ReaderWriter/PECOFF/OrderPass.h<br>
    lld/trunk/test/elf/AArch64/defsym.test<br>
    lld/trunk/test/elf/Hexagon/dynlib-gotoff.test<br>
    lld/trunk/test/elf/Hexagon/zerofillquick-sdata.test<br>
    lld/trunk/test/elf/Mips/dynlib-dynsym-micro.test<br>
    lld/trunk/test/elf/Mips/dynlib-dynsym.test<br>
    lld/trunk/test/elf/Mips/got16-micro.test<br>
    lld/trunk/test/elf/Mips/got16.test<br>
    lld/trunk/test/elf/Mips/rel-dynamic-02.test<br>
    lld/trunk/test/elf/Mips/rel-dynamic-11.test<br>
    lld/trunk/test/elf/check.test<br>
    lld/trunk/test/elf/dynamic.test<br>
    lld/trunk/test/elf/gotpcrel.test<br>
    lld/trunk/test/elf/hexagon-quickdata-sort.test<br>
    lld/trunk/test/elf/hexagon-quickdata-sortcommon.test<br>
    lld/trunk/test/elf/ifunc.test<br>
    lld/trunk/test/elf/quickdata.test<br>
    lld/trunk/test/elf/tls.test<br>
    lld/trunk/test/elf/x86-64-dynamic.test<br>
<br>
Modified: lld/trunk/include/lld/Core/DefinedAtom.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Core/DefinedAtom.h?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Core/DefinedAtom.h?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/include/lld/Core/DefinedAtom.h (original)<br>
+++ lld/trunk/include/lld/Core/DefinedAtom.h Fri Jan 30 20:05:01 2015<br>
@@ -349,6 +349,10 @@ public:<br>
             atomContentType == DefinedAtom::typeGnuLinkOnce);<br>
   }<br>
<br>
+  // Returns true if lhs should be placed before rhs in the final output.<br>
+  static bool compareByPosition(const DefinedAtom *lhs,<br>
+                                const DefinedAtom *rhs);<br>
+<br>
 protected:<br>
   // DefinedAtom is an abstract base class. Only subclasses can access<br>
   // constructor.<br>
<br>
Modified: lld/trunk/lib/Core/DefinedAtom.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Core/DefinedAtom.cpp?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Core/DefinedAtom.cpp?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/Core/DefinedAtom.cpp (original)<br>
+++ lld/trunk/lib/Core/DefinedAtom.cpp Fri Jan 30 20:05:01 2015<br>
@@ -9,11 +9,10 @@<br>
<br>
 #include "llvm/Support/ErrorHandling.h"<br>
 #include "lld/Core/DefinedAtom.h"<br>
-<br>
+#include "lld/Core/File.h"<br>
<br>
 namespace lld {<br>
<br>
-<br>
 DefinedAtom::ContentPermissions DefinedAtom::permissions() const {<br>
   // By default base permissions on content type.<br>
   return permissions(this->contentType());<br>
@@ -82,6 +81,14 @@ DefinedAtom::ContentPermissions DefinedA<br>
   llvm_unreachable("unknown content type");<br>
 }<br>
<br>
+bool DefinedAtom::compareByPosition(const DefinedAtom *lhs,<br>
+                                    const DefinedAtom *rhs) {<br>
+  const File *lhsFile = &lhs->file();<br>
+  const File *rhsFile = &rhs->file();<br>
+  if (lhsFile->ordinal() != rhsFile->ordinal())<br>
+    return lhsFile->ordinal() < rhsFile->ordinal();<br>
+  assert(lhs->ordinal() != rhs->ordinal());<br>
+  return lhs->ordinal() < rhs->ordinal();<br>
+}<br>
<br>
 } // namespace<br>
-<br>
<br>
Removed: lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp?rev=227665&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp?rev=227665&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp (removed)<br>
@@ -1,56 +0,0 @@<br>
-//===- lib/ReaderWriter/ELF/ArrayOrderPass.cpp ----------------------------===//<br>
-//<br>
-//                             The LLVM Linker<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===----------------------------------------------------------------------===//<br>
-<br>
-#include "ArrayOrderPass.h"<br>
-#include <algorithm><br>
-#include <limits><br>
-<br>
-namespace lld {<br>
-namespace elf {<br>
-void ArrayOrderPass::perform(std::unique_ptr<MutableFile> &f) {<br>
-  auto definedAtoms = f->definedAtoms();<br>
-<br>
-  // Move sections need to be sorted into the separate continious group.<br>
-  // That reduces a number of sorting elements and simplifies conditions<br>
-  // in the sorting predicate.<br>
-  auto last = std::stable_partition(definedAtoms.begin(), definedAtoms.end(),<br>
-                                    [](const DefinedAtom *atom) {<br>
-    if (atom->sectionChoice() != DefinedAtom::sectionCustomRequired)<br>
-      return false;<br>
-<br>
-    StringRef name = atom->customSectionName();<br>
-    return name.startswith(".init_array") || name.startswith(".fini_array");<br>
-  });<br>
-<br>
-  std::stable_sort(definedAtoms.begin(), last,<br>
-                   [](const DefinedAtom *left, const DefinedAtom *right) {<br>
-    StringRef leftSec = left->customSectionName();<br>
-    StringRef rightSec = right->customSectionName();<br>
-<br>
-    // Drop the front dot from the section name and get<br>
-    // an optional section's number starting after the second dot.<br>
-    StringRef leftNum = leftSec.drop_front().rsplit('.').second;<br>
-    StringRef rightNum = rightSec.drop_front().rsplit('.').second;<br>
-<br>
-    // Sort {.init_array, .fini_array}[.<num>] sections<br>
-    // according to their number. Sections without optional<br>
-    // numer suffix should go last.<br>
-<br>
-    uint32_t leftPriority;<br>
-    uint32_t rightPriority;<br>
-    if (leftNum.getAsInteger(10, leftPriority))<br>
-      leftPriority = std::numeric_limits<uint32_t>::max();<br>
-    if (rightNum.getAsInteger(10, rightPriority))<br>
-      rightPriority = std::numeric_limits<uint32_t>::max();<br>
-<br>
-    return leftPriority < rightPriority;<br>
-  });<br>
-}<br>
-} // end namespace elf<br>
-} // end namespace lld<br>
<br>
Removed: lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.h?rev=227665&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.h?rev=227665&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.h (removed)<br>
@@ -1,26 +0,0 @@<br>
-//===- lib/ReaderWriter/ELF/ArrayOrderPass.h ------------------------------===//<br>
-//<br>
-//                             The LLVM Linker<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===----------------------------------------------------------------------===//<br>
-<br>
-#ifndef LLD_READER_WRITER_ELF_ARRAY_ORDER_PASS_H<br>
-#define LLD_READER_WRITER_ELF_ARRAY_ORDER_PASS_H<br>
-<br>
-#include "lld/Core/Pass.h"<br>
-<br>
-namespace lld {<br>
-namespace elf {<br>
-/// \brief This pass sorts atoms in .{init,fini}_array.<priority> sections.<br>
-class ArrayOrderPass : public Pass {<br>
-public:<br>
-  ArrayOrderPass() : Pass() {}<br>
-  void perform(std::unique_ptr<MutableFile> &mergedFile) override;<br>
-};<br>
-}<br>
-}<br>
-<br>
-#endif<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/CMakeLists.txt?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/CMakeLists.txt?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/CMakeLists.txt (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/CMakeLists.txt Fri Jan 30 20:05:01 2015<br>
@@ -1,5 +1,4 @@<br>
 add_llvm_library(lldELF<br>
-  ArrayOrderPass.cpp<br>
   ELFLinkingContext.cpp<br>
   Reader.cpp<br>
   Writer.cpp<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp Fri Jan 30 20:05:01 2015<br>
@@ -8,12 +8,11 @@<br>
 //===----------------------------------------------------------------------===//<br>
<br>
 #include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-#include "ArrayOrderPass.h"<br>
 #include "ELFFile.h"<br>
+#include "OrderPass.h"<br>
 #include "TargetHandler.h"<br>
 #include "lld/Core/Instrumentation.h"<br>
 #include "lld/Core/SharedLibraryFile.h"<br>
-#include "lld/Passes/LayoutPass.h"<br>
 #include "lld/Passes/RoundTripYAMLPass.h"<br>
 #include "llvm/ADT/Triple.h"<br>
 #include "llvm/Config/config.h"<br>
@@ -66,8 +65,7 @@ ELFLinkingContext::ELFLinkingContext(<br>
       _finiFunction("_fini"), _sysrootPath("") {}<br>
<br>
 void ELFLinkingContext::addPasses(PassManager &pm) {<br>
-  pm.add(std::unique_ptr<Pass>(new LayoutPass(registry())));<br>
-  pm.add(std::unique_ptr<Pass>(new elf::ArrayOrderPass()));<br>
+  pm.add(std::unique_ptr<Pass>(new elf::OrderPass()));<br>
 }<br>
<br>
 uint16_t ELFLinkingContext::getOutputMachine() const {<br>
<br>
Added: lld/trunk/lib/ReaderWriter/ELF/OrderPass.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/OrderPass.h?rev=227666&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/OrderPass.h?rev=227666&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/OrderPass.h (added)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/OrderPass.h Fri Jan 30 20:05:01 2015<br>
@@ -0,0 +1,70 @@<br>
+//===- lib/ReaderWriter/ELF/OrderPass.h -----------------------------------===//<br>
+//<br>
+//                             The LLVM Linker<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#ifndef LLD_READER_WRITER_ELF_ORDER_PASS_H<br>
+#define LLD_READER_WRITER_ELF_ORDER_PASS_H<br>
+<br>
+#include "lld/Core/Parallel.h"<br>
+#include <algorithm><br>
+#include <limits><br>
+<br>
+namespace lld {<br>
+namespace elf {<br>
+<br>
+/// \brief This pass sorts atoms by file and atom ordinals.<br>
+/// .{init,fini}_array.<priority> sections are handled specially.<br>
+class OrderPass : public Pass {<br>
+public:<br>
+  void perform(std::unique_ptr<MutableFile> &file) override {<br>
+    MutableFile::DefinedAtomRange defined = file->definedAtoms();<br>
+    auto last = std::partition(defined.begin(), defined.end(), isInitFini);<br>
+    parallel_sort(defined.begin(), last, compareInitFini);<br>
+    parallel_sort(last, defined.end(), DefinedAtom::compareByPosition);<br>
+  }<br>
+<br>
+private:<br>
+  static bool isInitFini(const DefinedAtom *atom) {<br>
+    if (atom->sectionChoice() != DefinedAtom::sectionCustomRequired)<br>
+      return false;<br>
+    StringRef name = atom->customSectionName();<br>
+    return name.startswith(".init_array") || name.startswith(".fini_array");<br>
+  }<br>
+<br>
+  static bool compareInitFini(const DefinedAtom *lhs, const DefinedAtom *rhs) {<br>
+    StringRef lhsSec = lhs->customSectionName();<br>
+    StringRef rhsSec = rhs->customSectionName();<br>
+<br>
+    // Drop the front dot from the section name and get<br>
+    // an optional section's number starting after the second dot.<br>
+    StringRef lhsNum = lhsSec.drop_front().rsplit('.').second;<br>
+    StringRef rhsNum = rhsSec.drop_front().rsplit('.').second;<br>
+<br>
+    // Sort {.init_array, .fini_array}[.<num>] sections<br>
+    // according to their number. Sections without optional<br>
+    // numer suffix should go last.<br>
+<br>
+    uint32_t lhsPriority;<br>
+    uint32_t rhsPriority;<br>
+    if (lhsNum.getAsInteger(10, lhsPriority))<br>
+      lhsPriority = std::numeric_limits<uint32_t>::max();<br>
+    if (rhsNum.getAsInteger(10, rhsPriority))<br>
+      rhsPriority = std::numeric_limits<uint32_t>::max();<br>
+<br>
+    if (lhsPriority != rhsPriority)<br>
+      return lhsPriority < rhsPriority;<br>
+<br>
+    // If both atoms have the same priority, fall back to default.<br>
+    return DefinedAtom::compareByPosition(lhs, rhs);<br>
+  }<br>
+};<br>
+<br>
+}<br>
+}<br>
+<br>
+#endif<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/PECOFF/OrderPass.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/PECOFF/OrderPass.h?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/PECOFF/OrderPass.h?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/PECOFF/OrderPass.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/PECOFF/OrderPass.h Fri Jan 30 20:05:01 2015<br>
@@ -37,15 +37,6 @@<br>
 namespace lld {<br>
 namespace pecoff {<br>
<br>
-static bool compareByPosition(const DefinedAtom *lhs, const DefinedAtom *rhs) {<br>
-  const File *lhsFile = &lhs->file();<br>
-  const File *rhsFile = &rhs->file();<br>
-  if (lhsFile->ordinal() != rhsFile->ordinal())<br>
-    return lhsFile->ordinal() < rhsFile->ordinal();<br>
-  assert(lhs->ordinal() != rhs->ordinal());<br>
-  return lhs->ordinal() < rhs->ordinal();<br>
-}<br>
-<br>
 static bool compare(const DefinedAtom *lhs, const DefinedAtom *rhs) {<br>
   bool lhsCustom = (lhs->sectionChoice() == DefinedAtom::sectionCustomRequired);<br>
   bool rhsCustom = (rhs->sectionChoice() == DefinedAtom::sectionCustomRequired);<br>
@@ -53,13 +44,13 @@ static bool compare(const DefinedAtom *l<br>
     int cmp = lhs->customSectionName().compare(rhs->customSectionName());<br>
     if (cmp != 0)<br>
       return cmp < 0;<br>
-    return compareByPosition(lhs, rhs);<br>
+    return DefinedAtom::compareByPosition(lhs, rhs);<br>
   }<br>
   if (lhsCustom && !rhsCustom)<br>
     return true;<br>
   if (!lhsCustom && rhsCustom)<br>
     return false;<br>
-  return compareByPosition(lhs, rhs);<br>
+  return DefinedAtom::compareByPosition(lhs, rhs);<br>
 }<br>
<br>
 class OrderPass : public lld::Pass {<br>
<br>
Modified: lld/trunk/test/elf/AArch64/defsym.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/AArch64/defsym.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/AArch64/defsym.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/AArch64/defsym.test (original)<br>
+++ lld/trunk/test/elf/AArch64/defsym.test Fri Jan 30 20:05:01 2015<br>
@@ -12,7 +12,7 @@ CHECK:   Other: 0<br>
 CHECK:   Section: .text (0x5)<br>
 CHECK: }<br>
 CHECK: Symbol {<br>
-CHECK:   Name: fn (6)<br>
+CHECK:   Name: fn (11)<br>
 CHECK:   Value: 0x4001A4<br>
 CHECK:   Size: 8<br>
 CHECK:   Binding: Global (0x1)<br>
<br>
Modified: lld/trunk/test/elf/Hexagon/dynlib-gotoff.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Hexagon/dynlib-gotoff.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Hexagon/dynlib-gotoff.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/Hexagon/dynlib-gotoff.test (original)<br>
+++ lld/trunk/test/elf/Hexagon/dynlib-gotoff.test Fri Jan 30 20:05:01 2015<br>
@@ -3,6 +3,63 @@ RUN: lld -flavor gnu -target hexagon %p/<br>
 RUN:   -o %t --output-filetype=yaml -shared --noinhibit-exec<br>
 RUN: FileCheck -check-prefix=CHECKGOTPLT %s < %t<br>
<br>
+              - name:            .PLT0<br>
+CHECKGOTPLT:    type:            stub<br>
+CHECKGOTPLT:    content:         [ 00, 40, 00, 00, 1C, C0, 49, 6A, 0E, 42, 9C, E2,<br>
+CHECKGOTPLT:                       4F, 40, 9C, 91, 3C, C0, 9C, 91, 0E, 42, 0E, 8C,<br>
+CHECKGOTPLT:                       00, C0, 9C, 52 ]<br>
+CHECKGOTPLT:    alignment:       2^4<br>
+CHECKGOTPLT:    section-name:    .plt<br>
+CHECKGOTPLT:    references:<br>
+CHECKGOTPLT:      - kind:            R_HEX_B32_PCREL_X<br>
+CHECKGOTPLT:        offset:          0<br>
+                    target:          __got0<br>
+CHECKGOTPLT:      - kind:            R_HEX_6_PCREL_X<br>
+CHECKGOTPLT:        offset:          4<br>
+                    target:          __got0<br>
+CHECKGOTPLT:        addend:          4<br>
+              - name:            __plt_fn<br>
+CHECKGOTPLT:    type:            stub<br>
+CHECKGOTPLT:    content:         [ 00, 40, 00, 00, 0E, C0, 49, 6A, 1C, C0, 8E, 91,<br>
+CHECKGOTPLT:                       00, C0, 9C, 52 ]<br>
+CHECKGOTPLT:    alignment:       2^4<br>
+CHECKGOTPLT:    section-name:    .plt<br>
+CHECKGOTPLT:    references:<br>
+CHECKGOTPLT:      - kind:            R_HEX_B32_PCREL_X<br>
+CHECKGOTPLT:        offset:          0<br>
+                    target:          __got_fn<br>
+CHECKGOTPLT:      - kind:            R_HEX_6_PCREL_X<br>
+CHECKGOTPLT:        offset:          4<br>
+                    target:          __got_fn<br>
+CHECKGOTPLT:        addend:          4<br>
+              - name:            __plt_fn1<br>
+CHECKGOTPLT:    type:            stub<br>
+CHECKGOTPLT:    content:         [ 00, 40, 00, 00, 0E, C0, 49, 6A, 1C, C0, 8E, 91,<br>
+CHECKGOTPLT:                       00, C0, 9C, 52 ]<br>
+CHECKGOTPLT:    alignment:       2^4<br>
+CHECKGOTPLT:    section-name:    .plt<br>
+CHECKGOTPLT:    references:<br>
+CHECKGOTPLT:      - kind:            R_HEX_B32_PCREL_X<br>
+CHECKGOTPLT:        offset:          0<br>
+                    target:          __got_fn1<br>
+CHECKGOTPLT:      - kind:            R_HEX_6_PCREL_X<br>
+CHECKGOTPLT:        offset:          4<br>
+                    target:          __got_fn1<br>
+CHECKGOTPLT:        addend:          4<br>
+              - name:            __plt_fn2<br>
+CHECKGOTPLT:    type:            stub<br>
+CHECKGOTPLT:    content:         [ 00, 40, 00, 00, 0E, C0, 49, 6A, 1C, C0, 8E, 91,<br>
+CHECKGOTPLT:                       00, C0, 9C, 52 ]<br>
+CHECKGOTPLT:    alignment:       2^4<br>
+CHECKGOTPLT:    section-name:    .plt<br>
+CHECKGOTPLT:    references:<br>
+CHECKGOTPLT:      - kind:            R_HEX_B32_PCREL_X<br>
+CHECKGOTPLT:        offset:          0<br>
+                    target:          __got_fn2<br>
+CHECKGOTPLT:      - kind:            R_HEX_6_PCREL_X<br>
+CHECKGOTPLT:        offset:          4<br>
+                    target:          __got_fn2<br>
+CHECKGOTPLT:        addend:          4<br>
               - name:            __got0<br>
 CHECKGOTPLT:    type:            got<br>
 CHECKGOTPLT:    content:         [ 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,<br>
@@ -69,60 +126,3 @@ CHECKGOTPLT:        target:          fn2<br>
 CHECKGOTPLT:      - kind:            R_HEX_32<br>
 CHECKGOTPLT:        offset:          0<br>
                     target:          .PLT0<br>
-              - name:            .PLT0<br>
-CHECKGOTPLT:    type:            stub<br>
-CHECKGOTPLT:    content:         [ 00, 40, 00, 00, 1C, C0, 49, 6A, 0E, 42, 9C, E2,<br>
-CHECKGOTPLT:                       4F, 40, 9C, 91, 3C, C0, 9C, 91, 0E, 42, 0E, 8C,<br>
-CHECKGOTPLT:                       00, C0, 9C, 52 ]<br>
-CHECKGOTPLT:    alignment:       2^4<br>
-CHECKGOTPLT:    section-name:    .plt<br>
-CHECKGOTPLT:    references:<br>
-CHECKGOTPLT:      - kind:            R_HEX_B32_PCREL_X<br>
-CHECKGOTPLT:        offset:          0<br>
-                    target:          __got0<br>
-CHECKGOTPLT:      - kind:            R_HEX_6_PCREL_X<br>
-CHECKGOTPLT:        offset:          4<br>
-                    target:          __got0<br>
-CHECKGOTPLT:        addend:          4<br>
-              - name:            __plt_fn<br>
-CHECKGOTPLT:    type:            stub<br>
-CHECKGOTPLT:    content:         [ 00, 40, 00, 00, 0E, C0, 49, 6A, 1C, C0, 8E, 91,<br>
-CHECKGOTPLT:                       00, C0, 9C, 52 ]<br>
-CHECKGOTPLT:    alignment:       2^4<br>
-CHECKGOTPLT:    section-name:    .plt<br>
-CHECKGOTPLT:    references:<br>
-CHECKGOTPLT:      - kind:            R_HEX_B32_PCREL_X<br>
-CHECKGOTPLT:        offset:          0<br>
-                    target:          __got_fn<br>
-CHECKGOTPLT:      - kind:            R_HEX_6_PCREL_X<br>
-CHECKGOTPLT:        offset:          4<br>
-                    target:          __got_fn<br>
-CHECKGOTPLT:        addend:          4<br>
-              - name:            __plt_fn1<br>
-CHECKGOTPLT:    type:            stub<br>
-CHECKGOTPLT:    content:         [ 00, 40, 00, 00, 0E, C0, 49, 6A, 1C, C0, 8E, 91,<br>
-CHECKGOTPLT:                       00, C0, 9C, 52 ]<br>
-CHECKGOTPLT:    alignment:       2^4<br>
-CHECKGOTPLT:    section-name:    .plt<br>
-CHECKGOTPLT:    references:<br>
-CHECKGOTPLT:      - kind:            R_HEX_B32_PCREL_X<br>
-CHECKGOTPLT:        offset:          0<br>
-                    target:          __got_fn1<br>
-CHECKGOTPLT:      - kind:            R_HEX_6_PCREL_X<br>
-CHECKGOTPLT:        offset:          4<br>
-                    target:          __got_fn1<br>
-CHECKGOTPLT:        addend:          4<br>
-              - name:            __plt_fn2<br>
-CHECKGOTPLT:    type:            stub<br>
-CHECKGOTPLT:    content:         [ 00, 40, 00, 00, 0E, C0, 49, 6A, 1C, C0, 8E, 91,<br>
-CHECKGOTPLT:                       00, C0, 9C, 52 ]<br>
-CHECKGOTPLT:    alignment:       2^4<br>
-CHECKGOTPLT:    section-name:    .plt<br>
-CHECKGOTPLT:    references:<br>
-CHECKGOTPLT:      - kind:            R_HEX_B32_PCREL_X<br>
-CHECKGOTPLT:        offset:          0<br>
-                    target:          __got_fn2<br>
-CHECKGOTPLT:      - kind:            R_HEX_6_PCREL_X<br>
-CHECKGOTPLT:        offset:          4<br>
-                    target:          __got_fn2<br>
-CHECKGOTPLT:        addend:          4<br>
<br>
Modified: lld/trunk/test/elf/Hexagon/zerofillquick-sdata.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Hexagon/zerofillquick-sdata.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Hexagon/zerofillquick-sdata.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/Hexagon/zerofillquick-sdata.test (original)<br>
+++ lld/trunk/test/elf/Hexagon/zerofillquick-sdata.test Fri Jan 30 20:05:01 2015<br>
@@ -9,7 +9,7 @@ CHECKSECTIONSANDSIZE:  Section {<br>
 CHECKSECTIONSANDSIZE:    Name: .sdata (13)<br>
 CHECKSECTIONSANDSIZE:    Address: 0x1000<br>
 CHECKSECTIONSANDSIZE:    Offset: 0x1000<br>
-CHECKSECTIONSANDSIZE:    Size: 20<br>
+CHECKSECTIONSANDSIZE:    Size: 24<br>
 CHECKSECTIONSANDSIZE:  }<br>
 CHECKSECTIONSANDSIZE:  Section {<br>
 CHECKSECTIONSANDSIZE:    Name: .bss (20)<br>
<br>
Modified: lld/trunk/test/elf/Mips/dynlib-dynsym-micro.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/dynlib-dynsym-micro.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/dynlib-dynsym-micro.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/Mips/dynlib-dynsym-micro.test (original)<br>
+++ lld/trunk/test/elf/Mips/dynlib-dynsym-micro.test Fri Jan 30 20:05:01 2015<br>
@@ -78,7 +78,7 @@<br>
 # CHECK-GOT:     section-choice:  custom-required<br>
 # CHECK-GOT:     section-name:    .got<br>
 # CHECK-GOT:     permissions:     rw-<br>
-# CHECK-GOT:   - ref-name:        L002<br>
+# CHECK-GOT:   - ref-name:        L000<br>
 # CHECK-GOT:     type:            got<br>
 # CHECK-GOT:     content:         [ 00, 00, 00, 00 ]<br>
 # CHECK-GOT:     alignment:       2^2<br>
@@ -88,8 +88,8 @@<br>
 # CHECK-GOT:     references:<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>
+# CHECK-GOT:         target:          L007<br>
+# CHECK-GOT:   - ref-name:        L002<br>
 # CHECK-GOT:     type:            got<br>
 # CHECK-GOT:     content:         [ 00, 00, 00, 00 ]<br>
 # CHECK-GOT:     alignment:       2^2<br>
@@ -99,8 +99,8 @@<br>
 # CHECK-GOT:     references:<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>
+# CHECK-GOT:         target:          L008<br>
+# CHECK-GOT:   - ref-name:        L004<br>
 # CHECK-GOT:     type:            got<br>
 # CHECK-GOT:     content:         [ 00, 00, 00, 00 ]<br>
 # CHECK-GOT:     alignment:       2^2<br>
@@ -111,7 +111,7 @@<br>
 # CHECK-GOT:       - kind:            LLD_R_MIPS_GLOBAL_GOT<br>
 # CHECK-GOT:         offset:          0<br>
 # CHECK-GOT:         target:          foo<br>
-# CHECK-GOT:   - ref-name:        L007<br>
+# CHECK-GOT:   - ref-name:        L005<br>
 # CHECK-GOT:     type:            got<br>
 # CHECK-GOT:     content:         [ 00, 00, 00, 00 ]<br>
 # CHECK-GOT:     alignment:       2^2<br>
@@ -122,7 +122,7 @@<br>
 # CHECK-GOT:       - kind:            LLD_R_MIPS_GLOBAL_GOT<br>
 # CHECK-GOT:         offset:          0<br>
 # CHECK-GOT:         target:          ext1<br>
-# CHECK-GOT:   - ref-name:        L008<br>
+# CHECK-GOT:   - ref-name:        L006<br>
 # CHECK-GOT:     type:            got<br>
 # CHECK-GOT:     content:         [ 00, 00, 00, 00 ]<br>
 # CHECK-GOT:     alignment:       2^2<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=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/dynlib-dynsym.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/Mips/dynlib-dynsym.test (original)<br>
+++ lld/trunk/test/elf/Mips/dynlib-dynsym.test Fri Jan 30 20:05:01 2015<br>
@@ -74,7 +74,7 @@<br>
 # CHECK-GOT:     section-choice:  custom-required<br>
 # CHECK-GOT:     section-name:    .got<br>
 # CHECK-GOT:     permissions:     rw-<br>
-# CHECK-GOT:   - ref-name:        L002<br>
+# CHECK-GOT:   - ref-name:        L000<br>
 # CHECK-GOT:     type:            got<br>
 # CHECK-GOT:     content:         [ 00, 00, 00, 00 ]<br>
 # CHECK-GOT:     alignment:       2^2<br>
@@ -84,8 +84,8 @@<br>
 # CHECK-GOT:     references:<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>
+# CHECK-GOT:         target:          L007<br>
+# CHECK-GOT:   - ref-name:        L002<br>
 # CHECK-GOT:     type:            got<br>
 # CHECK-GOT:     content:         [ 00, 00, 00, 00 ]<br>
 # CHECK-GOT:     alignment:       2^2<br>
@@ -95,8 +95,8 @@<br>
 # CHECK-GOT:     references:<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>
+# CHECK-GOT:         target:          L008<br>
+# CHECK-GOT:   - ref-name:        L004<br>
 # CHECK-GOT:     type:            got<br>
 # CHECK-GOT:     content:         [ 00, 00, 00, 00 ]<br>
 # CHECK-GOT:     alignment:       2^2<br>
@@ -107,7 +107,7 @@<br>
 # CHECK-GOT:       - kind:            LLD_R_MIPS_GLOBAL_GOT<br>
 # CHECK-GOT:         offset:          0<br>
 # CHECK-GOT:         target:          foo<br>
-# CHECK-GOT:   - ref-name:        L007<br>
+# CHECK-GOT:   - ref-name:        L005<br>
 # CHECK-GOT:     type:            got<br>
 # CHECK-GOT:     content:         [ 00, 00, 00, 00 ]<br>
 # CHECK-GOT:     alignment:       2^2<br>
@@ -118,7 +118,7 @@<br>
 # CHECK-GOT:       - kind:            LLD_R_MIPS_GLOBAL_GOT<br>
 # CHECK-GOT:         offset:          0<br>
 # CHECK-GOT:         target:          ext1<br>
-# CHECK-GOT:   - ref-name:        L008<br>
+# CHECK-GOT:   - ref-name:        L006<br>
 # CHECK-GOT:     type:            got<br>
 # CHECK-GOT:     content:         [ 00, 00, 00, 00 ]<br>
 # CHECK-GOT:     alignment:       2^2<br>
<br>
Modified: lld/trunk/test/elf/Mips/got16-micro.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/got16-micro.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/got16-micro.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/Mips/got16-micro.test (original)<br>
+++ lld/trunk/test/elf/Mips/got16-micro.test Fri Jan 30 20:05:01 2015<br>
@@ -10,8 +10,39 @@<br>
 # RUN: llvm-objdump -t -disassemble -mattr=micromips %t2 \<br>
 # RUN:   | FileCheck -check-prefix RAW %s<br>
<br>
+# Function glob<br>
+# YAML:      - name:         main<br>
+# YAML:        scope:        global<br>
+# YAML:        content:      [ 5C, FC, 00, 00, 42, 30, 00, 00, 5C, FC, 00, 00,<br>
+# YAML:                        42, 30, 00, 00, 5C, FC, 00, 00, 5C, FC, 00, 00,<br>
+# YAML:                        5C, FC, 00, 00 ]<br>
+# YAML:        alignment:    4 mod 2^4<br>
+# YAML:        code-model:   mips-micro<br>
+# YAML:        references:<br>
+# YAML-NEXT:     - kind:         R_MICROMIPS_GOT16<br>
+# YAML-NEXT:       offset:       0<br>
+# YAML-NEXT:       target:       L000<br>
+# YAML-NEXT:     - kind:         R_MICROMIPS_LO16<br>
+# YAML-NEXT:       offset:       4<br>
+# YAML-NEXT:       target:       data_1<br>
+# YAML-NEXT:     - kind:         R_MICROMIPS_GOT16<br>
+# YAML-NEXT:       offset:       8<br>
+# YAML-NEXT:       target:       L001<br>
+# YAML-NEXT:     - kind:         R_MICROMIPS_LO16<br>
+# YAML-NEXT:       offset:       12<br>
+# YAML-NEXT:       target:       data_2<br>
+# YAML-NEXT:     - kind:         R_MICROMIPS_GOT16<br>
+# YAML-NEXT:       offset:       16<br>
+# YAML-NEXT:       target:       L002<br>
+# YAML-NEXT:     - kind:         R_MICROMIPS_CALL16<br>
+# YAML-NEXT:       offset:       20<br>
+# YAML-NEXT:       target:       L003<br>
+# YAML-NEXT:     - kind:         R_MICROMIPS_CALL16<br>
+# YAML-NEXT:       offset:       24<br>
+# YAML-NEXT:       target:       L004<br>
+<br>
 # Local GOT entries:<br>
-# YAML:       - ref-name:        L001<br>
+# YAML:       - ref-name:        L000<br>
 # YAML-NEXT:    type:            got<br>
 # YAML-NEXT:    content:         [ 00, 00, 00, 00 ]<br>
 # YAML-NEXT:    alignment:       2^2<br>
@@ -22,7 +53,7 @@<br>
 # YAML-NEXT:      - kind:            LLD_R_MIPS_32_HI16<br>
 # YAML-NEXT:        offset:          0<br>
 # YAML-NEXT:        target:          data_1<br>
-# YAML-NEXT:  - ref-name:        L002<br>
+# YAML-NEXT:  - ref-name:        L001<br>
 # YAML-NEXT:    type:            got<br>
 # YAML-NEXT:    content:         [ 00, 00, 00, 00 ]<br>
 # YAML-NEXT:    alignment:       2^2<br>
@@ -33,7 +64,7 @@<br>
 # YAML-NEXT:      - kind:            LLD_R_MIPS_32_HI16<br>
 # YAML-NEXT:        offset:          0<br>
 # YAML-NEXT:        target:          data_2<br>
-# YAML-NEXT:  - ref-name:        L003<br>
+# YAML-NEXT:  - ref-name:        L002<br>
 # YAML-NEXT:    type:            got<br>
 # YAML-NEXT:    content:         [ 00, 00, 00, 00 ]<br>
 # YAML-NEXT:    alignment:       2^2<br>
@@ -46,7 +77,7 @@<br>
 # YAML-NEXT:        target:          data_h<br>
<br>
 # Global GOT entries:<br>
-# YAML-NEXT:  - ref-name:        L004<br>
+# YAML-NEXT:  - ref-name:        L003<br>
 # YAML-NEXT:    type:            got<br>
 # YAML-NEXT:    content:         [ 00, 00, 00, 00 ]<br>
 # YAML-NEXT:    alignment:       2^2<br>
@@ -60,7 +91,7 @@<br>
 # YAML-NEXT:      - kind:            R_MIPS_32<br>
 # YAML-NEXT:        offset:          0<br>
 # YAML-NEXT:        target:          bar<br>
-# YAML-NEXT:  - ref-name:        L005<br>
+# YAML-NEXT:  - ref-name:        L004<br>
 # YAML-NEXT:    type:            got<br>
 # YAML-NEXT:    content:         [ 00, 00, 00, 00 ]<br>
 # YAML-NEXT:    alignment:       2^2<br>
@@ -72,37 +103,6 @@<br>
 # YAML-NEXT:        offset:          0<br>
 # YAML-NEXT:        target:          foo<br>
<br>
-# Function glob<br>
-# YAML:      - name:         main<br>
-# YAML:        scope:        global<br>
-# YAML:        content:      [ 5C, FC, 00, 00, 42, 30, 00, 00, 5C, FC, 00, 00,<br>
-# YAML:                        42, 30, 00, 00, 5C, FC, 00, 00, 5C, FC, 00, 00,<br>
-# YAML:                        5C, FC, 00, 00 ]<br>
-# YAML:        alignment:    4 mod 2^4<br>
-# YAML:        code-model:   mips-micro<br>
-# YAML:        references:<br>
-# YAML-NEXT:     - kind:         R_MICROMIPS_GOT16<br>
-# YAML-NEXT:       offset:       0<br>
-# YAML-NEXT:       target:       L001<br>
-# YAML-NEXT:     - kind:         R_MICROMIPS_LO16<br>
-# YAML-NEXT:       offset:       4<br>
-# YAML-NEXT:       target:       data_1<br>
-# YAML-NEXT:     - kind:         R_MICROMIPS_GOT16<br>
-# YAML-NEXT:       offset:       8<br>
-# YAML-NEXT:       target:       L002<br>
-# YAML-NEXT:     - kind:         R_MICROMIPS_LO16<br>
-# YAML-NEXT:       offset:       12<br>
-# YAML-NEXT:       target:       data_2<br>
-# YAML-NEXT:     - kind:         R_MICROMIPS_GOT16<br>
-# YAML-NEXT:       offset:       16<br>
-# YAML-NEXT:       target:       L003<br>
-# YAML-NEXT:     - kind:         R_MICROMIPS_CALL16<br>
-# YAML-NEXT:       offset:       20<br>
-# YAML-NEXT:       target:       L004<br>
-# YAML-NEXT:     - kind:         R_MICROMIPS_CALL16<br>
-# YAML-NEXT:       offset:       24<br>
-# YAML-NEXT:       target:       L005<br>
-<br>
 # RAW: Disassembly of section .text:<br>
 # RAW: main:<br>
 # RAW-NEXT:   164:  5c fc 18 80   lw      $2, -32744($gp)<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=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/got16.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/Mips/got16.test (original)<br>
+++ lld/trunk/test/elf/Mips/got16.test Fri Jan 30 20:05:01 2015<br>
@@ -8,8 +8,40 @@<br>
 # RUN: lld -flavor gnu -target mipsel -shared --noinhibit-exec -o %t2 %t.o<br>
 # RUN: llvm-objdump -t -disassemble %t2 | FileCheck -check-prefix RAW %s<br>
<br>
+# Function glob<br>
+# YAML:  - name:            glob<br>
+# YAML:    scope:           global<br>
+# YAML:    content:         [ 00, 00, 84, 8F, 00, 00, 84, 24, 01, 00, 84, 8F,<br>
+# YAML:                       00, 02, 84, 24, 00, 00, 84, 8F, 00, 00, 84, 8F,<br>
+# YAML:                       00, 00, 84, 8F ]<br>
+# YAML:    alignment:       2^2<br>
+# YAML:    references:<br>
+# YAML:      - kind:            R_MIPS_GOT16<br>
+# YAML:        offset:          0<br>
+# YAML:        target:          L000<br>
+# YAML:      - kind:            R_MIPS_LO16<br>
+# YAML:        offset:          4<br>
+# YAML:        target:          L009<br>
+# YAML:      - kind:            R_MIPS_GOT16<br>
+# YAML:        offset:          8<br>
+# YAML:        target:          L002<br>
+# YAML:        addend:          66048<br>
+# YAML:      - kind:            R_MIPS_LO16<br>
+# YAML:        offset:          12<br>
+# YAML:        target:          L009<br>
+# YAML:        addend:          512<br>
+# YAML:      - kind:            R_MIPS_GOT16<br>
+# YAML:        offset:          16<br>
+# YAML:        target:          L004<br>
+# YAML:      - kind:            R_MIPS_CALL16<br>
+# YAML:        offset:          20<br>
+# YAML:        target:          L005<br>
+# YAML:      - kind:            R_MIPS_CALL16<br>
+# YAML:        offset:          24<br>
+# YAML:        target:          L006<br>
+<br>
 # Local GOT entries:<br>
-# YAML:       - ref-name:        L003<br>
+# YAML:       - ref-name:        L000<br>
 # YAML-NEXT:    type:            got<br>
 # YAML-NEXT:    content:         [ 00, 00, 00, 00 ]<br>
 # YAML-NEXT:    alignment:       2^2<br>
@@ -19,8 +51,8 @@<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:        target:          L009<br>
+# YAML-NEXT:  - ref-name:        L002<br>
 # YAML-NEXT:    type:            got<br>
 # YAML-NEXT:    content:         [ 00, 00, 00, 00 ]<br>
 # YAML-NEXT:    alignment:       2^2<br>
@@ -30,9 +62,9 @@<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:        target:          L009<br>
 # YAML-NEXT:        addend:          66048<br>
-# YAML-NEXT:  - ref-name:        L007<br>
+# YAML-NEXT:  - ref-name:        L004<br>
 # YAML-NEXT:    type:            got<br>
 # YAML-NEXT:    content:         [ 00, 00, 00, 00 ]<br>
 # YAML-NEXT:    alignment:       2^2<br>
@@ -45,7 +77,7 @@<br>
 # YAML-NEXT:        target:          hidden<br>
<br>
 # Global GOT entries:<br>
-# YAML-NEXT:  - ref-name:        L008<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>
@@ -59,7 +91,7 @@<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:  - ref-name:        L006<br>
 # YAML-NEXT:    type:            got<br>
 # YAML-NEXT:    content:         [ 00, 00, 00, 00 ]<br>
 # YAML-NEXT:    alignment:       2^2<br>
@@ -71,38 +103,6 @@<br>
 # YAML-NEXT:        offset:          0<br>
 # YAML-NEXT:        target:          extern<br>
<br>
-# Function glob<br>
-# YAML:  - name:            glob<br>
-# YAML:    scope:           global<br>
-# YAML:    content:         [ 00, 00, 84, 8F, 00, 00, 84, 24, 01, 00, 84, 8F,<br>
-# YAML:                       00, 02, 84, 24, 00, 00, 84, 8F, 00, 00, 84, 8F,<br>
-# YAML:                       00, 00, 84, 8F ]<br>
-# YAML:    alignment:       2^2<br>
-# YAML:    references:<br>
-# YAML:      - kind:            R_MIPS_GOT16<br>
-# YAML:        offset:          0<br>
-# YAML:        target:          L003<br>
-# YAML:      - kind:            R_MIPS_LO16<br>
-# YAML:        offset:          4<br>
-# YAML:        target:          L006<br>
-# YAML:      - kind:            R_MIPS_GOT16<br>
-# YAML:        offset:          8<br>
-# YAML:        target:          L005<br>
-# YAML:        addend:          66048<br>
-# YAML:      - kind:            R_MIPS_LO16<br>
-# YAML:        offset:          12<br>
-# YAML:        target:          L006<br>
-# YAML:        addend:          512<br>
-# YAML:      - kind:            R_MIPS_GOT16<br>
-# YAML:        offset:          16<br>
-# YAML:        target:          L007<br>
-# YAML:      - kind:            R_MIPS_CALL16<br>
-# YAML:        offset:          20<br>
-# YAML:        target:          L008<br>
-# YAML:      - kind:            R_MIPS_CALL16<br>
-# YAML:        offset:          24<br>
-# YAML:        target:          L009<br>
-<br>
 # RAW: Disassembly of section .text:<br>
 # RAW: glob:<br>
 # RAW-NEXT:   12c:  18 80 84 8f  lw      $4, -32744($gp)<br>
<br>
Modified: lld/trunk/test/elf/Mips/rel-dynamic-02.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/rel-dynamic-02.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/rel-dynamic-02.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/Mips/rel-dynamic-02.test (original)<br>
+++ lld/trunk/test/elf/Mips/rel-dynamic-02.test Fri Jan 30 20:05:01 2015<br>
@@ -15,8 +15,8 @@<br>
 #<br>
 # PLT-SYM:      Relocations [<br>
 # PLT-SYM-NEXT:   Section (4) .rel.dyn {<br>
-# PLT-SYM-NEXT:     0x2000 R_MIPS_REL32 T1 0x0<br>
 # PLT-SYM-NEXT:     0x140 R_MIPS_REL32 T1 0x0<br>
+# PLT-SYM-NEXT:     0x2000 R_MIPS_REL32 T1 0x0<br>
 # PLT-SYM-NEXT:   }<br>
 # PLT-SYM-NEXT: ]<br>
 #<br>
<br>
Modified: lld/trunk/test/elf/Mips/rel-dynamic-11.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/rel-dynamic-11.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Mips/rel-dynamic-11.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/Mips/rel-dynamic-11.test (original)<br>
+++ lld/trunk/test/elf/Mips/rel-dynamic-11.test Fri Jan 30 20:05:01 2015<br>
@@ -17,8 +17,8 @@<br>
 #<br>
 # PLT-SYM:      Relocations [<br>
 # PLT-SYM-NEXT:   Section (4) .rel.dyn {<br>
-# PLT-SYM-NEXT:     0x2000 R_MIPS_REL32 T1 0x0<br>
 # PLT-SYM-NEXT:     0x150 R_MIPS_REL32 T1 0x0<br>
+# PLT-SYM-NEXT:     0x2000 R_MIPS_REL32 T1 0x0<br>
 # PLT-SYM-NEXT:   }<br>
 # PLT-SYM-NEXT: ]<br>
 #<br>
<br>
Removed: lld/trunk/test/elf/X86_64/orderatoms-by-override.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/orderatoms-by-override.test?rev=227665&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/orderatoms-by-override.test?rev=227665&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/X86_64/orderatoms-by-override.test (original)<br>
+++ lld/trunk/test/elf/X86_64/orderatoms-by-override.test (removed)<br>
@@ -1,8 +0,0 @@<br>
-# This testcase tests the behaviour of the layoutpass so that the atoms that<br>
-# appear by their override take preference before proceeding to default behaviour<br>
-RUN: lld -flavor gnu -target x86_64 %p/Inputs/rwint.o \<br>
-RUN:     %p/Inputs/constint.o --output-filetype=yaml -o %t --noinhibit-exec<br>
-RUN: FileCheck %s -check-prefix=CHECKORDER < %t<br>
-<br>
-CHECKORDER:  - name:            b<br>
-CHECKORDER:  - name:            a<br>
<br>
Modified: lld/trunk/test/elf/check.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/check.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/check.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/check.test (original)<br>
+++ lld/trunk/test/elf/check.test Fri Jan 30 20:05:01 2015<br>
@@ -8,28 +8,28 @@ RUN:    %p/Inputs/object-test.elf-hexago<br>
 RUN: FileCheck %s -check-prefix ELF-hexagon < %t1<br>
<br>
 ELF-i386: defined-atoms:<br>
-ELF-i386:   - name:            global_variable<br>
-ELF-i386:   - name:            uninitialized_static_variable<br>
 ELF-i386:   - name:            global_func<br>
 ELF-i386:   - name:            static_func<br>
 ELF-i386:   - name:            weak_func<br>
 ELF-i386:   - name:            hidden_func<br>
 ELF-i386:   - name:            no_dead_strip<br>
 ELF-i386:   - name:            no_special_section_func<br>
+ELF-i386:   - name:            global_variable<br>
+ELF-i386:   - name:            uninitialized_static_variable<br>
 ELF-i386:   - name:            special_section_func<br>
 ELF-i386: undefined-atoms:<br>
 ELF-i386:   - name:            puts<br>
 ELF-i386: absolute-atoms:<br>
 ELF-i386:   - name:            sample.c<br>
<br>
-ELF-hexagon:   - name:            global_variable<br>
-ELF-hexagon:   - name:            uninitialized_static_variable<br>
 ELF-hexagon:   - name:            global_func<br>
 ELF-hexagon:   - name:            static_func<br>
 ELF-hexagon:   - name:            weak_func<br>
 ELF-hexagon:   - name:            hidden_func<br>
 ELF-hexagon:   - name:            no_dead_strip<br>
 ELF-hexagon:   - name:            no_special_section_func<br>
+ELF-hexagon:   - name:            global_variable<br>
+ELF-hexagon:   - name:            uninitialized_static_variable<br>
 ELF-hexagon:   - name:            special_section_func<br>
 ELF-hexagon: undefined-atoms:<br>
 ELF-hexagon:   - name:            puts<br>
<br>
Modified: lld/trunk/test/elf/dynamic.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/dynamic.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/dynamic.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/dynamic.test (original)<br>
+++ lld/trunk/test/elf/dynamic.test Fri Jan 30 20:05:01 2015<br>
@@ -9,10 +9,6 @@ RUN: llvm-objdump -p %t >> %t2<br>
 RUN: llvm-readobj -s -dyn-symbols -dynamic-table %t >> %t2<br>
 RUN: FileCheck %s < %t2<br>
<br>
-CHECK: type: got<br>
-CHECK: references:<br>
-CHECK:   kind: R_X86_64_JUMP_SLOT<br>
-<br>
 CHECK: name: main<br>
 CHECK: kind: R_X86_64_PC32<br>
 CHECK:  offset: 18<br>
@@ -21,6 +17,10 @@ CHECK:  target: [[PLTNAME:[-a-zA-Z0-9_]+<br>
 CHECK: name: [[PLTNAME]]<br>
 CHECK: type: stub<br>
<br>
+CHECK: type: got<br>
+CHECK: references:<br>
+CHECK:   kind: R_X86_64_JUMP_SLOT<br>
+<br>
 CHECK: shared-library-atoms:<br>
 CHECK:  name: foo<br>
 CHECK:  load-name: shared.so-x86-64<br>
<br>
Modified: lld/trunk/test/elf/gotpcrel.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/gotpcrel.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/gotpcrel.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/gotpcrel.test (original)<br>
+++ lld/trunk/test/elf/gotpcrel.test Fri Jan 30 20:05:01 2015<br>
@@ -3,20 +3,19 @@ RUN: lld -flavor gnu -target x86_64-linu<br>
 RUN:   --noinhibit-exec %p/Inputs/gotpcrel.x86-64  \<br>
 RUN:   | FileCheck %s -check-prefix=YAML<br>
<br>
-YAML: name: [[NULLGOT:[a-zA-Z0-9_]+]]<br>
-YAML: content: [ 00, 00, 00, 00, 00, 00, 00, 00 ]<br>
-YAML-NOT: references:<br>
-<br>
-YAML: name: [[MAINGOT:[a-zA-Z0-9_]+]]<br>
-YAML: kind: R_X86_64_64<br>
-YAML: target: main<br>
-<br>
 YAML: name: main<br>
 YAML: references:<br>
 YAML:   kind:    R_X86_64_GOTPCREL<br>
 YAML:   offset:  3<br>
-YAML:   target:  [[NULLGOT]]<br>
+YAML:   target:  [[NULLGOT:[a-zA-Z0-9_]+]]<br>
 YAML:   kind:    R_X86_64_GOTPCREL<br>
 YAML:   offset:  10<br>
-YAML:   target:  [[MAINGOT]]<br>
+YAML:   target:  [[MAINGOT:[a-zA-Z0-9_]+]]<br>
<br>
+YAML: name: [[NULLGOT]]<br>
+YAML: content: [ 00, 00, 00, 00, 00, 00, 00, 00 ]<br>
+YAML-NOT: references:<br>
+<br>
+YAML: name: [[MAINGOT]]<br>
+YAML: kind: R_X86_64_64<br>
+YAML: target: main<br>
<br>
Modified: lld/trunk/test/elf/hexagon-quickdata-sort.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/hexagon-quickdata-sort.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/hexagon-quickdata-sort.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/hexagon-quickdata-sort.test (original)<br>
+++ lld/trunk/test/elf/hexagon-quickdata-sort.test Fri Jan 30 20:05:01 2015<br>
@@ -1,12 +1,12 @@<br>
 RUN: lld -flavor gnu -target hexagon %p/Inputs/quickdata-sort-test.o.elf-hexagon -o %t1 --noinhibit-exec<br>
 RUN: llvm-nm -n %t1 | FileCheck %s -check-prefix=quickdataSort<br>
<br>
-quickdataSort: 00002000 D AA1<br>
-quickdataSort: 00002001 D A1<br>
-quickdataSort: 00002002 D BB1<br>
-quickdataSort: 00002004 D B1<br>
-quickdataSort: 00002008 D CC1<br>
-quickdataSort: 0000200c D C1<br>
-quickdataSort: 00002010 D DD1<br>
-quickdataSort: 00002018 D D1<br>
+quickdataSort: 00002000 D A1<br>
+quickdataSort: 00002001 D AA1<br>
+quickdataSort: 00002002 D B1<br>
+quickdataSort: 00002004 D BB1<br>
+quickdataSort: 00002008 D C1<br>
+quickdataSort: 0000200c D CC1<br>
+quickdataSort: 00002010 D D1<br>
+quickdataSort: 00002018 D DD1<br>
<br>
<br>
Modified: lld/trunk/test/elf/hexagon-quickdata-sortcommon.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/hexagon-quickdata-sortcommon.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/hexagon-quickdata-sortcommon.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/hexagon-quickdata-sortcommon.test (original)<br>
+++ lld/trunk/test/elf/hexagon-quickdata-sortcommon.test Fri Jan 30 20:05:01 2015<br>
@@ -2,15 +2,15 @@ RUN: lld -flavor gnu -target hexagon -o<br>
 RUN:     %p/Inputs/quickdata-sortcommon-test.o.elf-hexagon<br>
 RUN: llvm-nm -n %t1 | FileCheck %s -check-prefix=quickdataSortCommon<br>
<br>
-quickdataSortCommon: 00002000 D AA1<br>
-quickdataSortCommon: 00002001 D A1<br>
+quickdataSortCommon: 00002000 D A1<br>
+quickdataSortCommon: 00002001 D AA1<br>
 quickdataSortCommon: 00002002 D AAA1<br>
-quickdataSortCommon: 00002004 D BB1<br>
-quickdataSortCommon: 00002006 D B1<br>
+quickdataSortCommon: 00002004 D B1<br>
+quickdataSortCommon: 00002006 D BB1<br>
 quickdataSortCommon: 00002008 D BBB1<br>
-quickdataSortCommon: 0000200c D CC1<br>
-quickdataSortCommon: 00002010 D C1<br>
+quickdataSortCommon: 0000200c D C1<br>
+quickdataSortCommon: 00002010 D CC1<br>
 quickdataSortCommon: 00002014 D CCC1<br>
-quickdataSortCommon: 00002018 D DD1<br>
-quickdataSortCommon: 00002020 D D1<br>
+quickdataSortCommon: 00002018 D D1<br>
+quickdataSortCommon: 00002020 D DD1<br>
 quickdataSortCommon: 00002028 D DDD1<br>
<br>
Modified: lld/trunk/test/elf/ifunc.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/ifunc.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/ifunc.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/ifunc.test (original)<br>
+++ lld/trunk/test/elf/ifunc.test Fri Jan 30 20:05:01 2015<br>
@@ -21,12 +21,6 @@ RUN: | FileCheck %s --check-prefix=SHARE<br>
<br>
 PLT: defined-atoms:<br>
<br>
-// Make sure there's a got entry with a IRELATIVE relocation.<br>
-PLT: type: got<br>
-PLT: references:<br>
-PLT:  kind: R_X86_64_IRELATIVE<br>
-PLT:  target: hey<br>
-<br>
 PLT: name:  plt<br>
 PLT: scope: global<br>
 PLT: references:<br>
@@ -47,6 +41,12 @@ PLT: type: stub<br>
 PLT: references<br>
 PLT:   kind: R_X86_64_PC32<br>
<br>
+// Make sure there's a got entry with a IRELATIVE relocation.<br>
+PLT: type: got<br>
+PLT: references:<br>
+PLT:  kind: R_X86_64_IRELATIVE<br>
+PLT:  target: hey<br>
+<br>
 CHECK: name: hey<br>
 CHECK: scope: global<br>
 CHECK: type: resolver<br>
<br>
Modified: lld/trunk/test/elf/quickdata.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/quickdata.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/quickdata.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/quickdata.test (original)<br>
+++ lld/trunk/test/elf/quickdata.test Fri Jan 30 20:05:01 2015<br>
@@ -1,14 +1,14 @@<br>
 RUN: lld -flavor gnu -target hexagon --output-filetype=yaml %p/Inputs/quickdata-test.elf-hexagon \<br>
 RUN: --noinhibit-exec | FileCheck %s -check-prefix hexagon<br>
<br>
-hexagon:  - name:            init<br>
-hexagon:    scope:           global<br>
-hexagon:    type:            quick-data<br>
 hexagon:  - name:            ac1<br>
 hexagon:    scope:           global<br>
 hexagon:    type:            zero-fill-quick<br>
 hexagon:    size:            1<br>
 hexagon:    merge:           as-tentative<br>
+hexagon:  - name:            init<br>
+hexagon:    scope:           global<br>
+hexagon:    type:            quick-data<br>
 hexagon:  - name:            bss1<br>
 hexagon:    scope:           global<br>
 hexagon:    type:            zero-fill-quick<br>
<br>
Modified: lld/trunk/test/elf/tls.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/tls.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/tls.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/tls.test (original)<br>
+++ lld/trunk/test/elf/tls.test Fri Jan 30 20:05:01 2015<br>
@@ -9,11 +9,6 @@ RUN:   --noinhibit-exec -e main -static<br>
<br>
 // Verify that the TLS accesses have the correct offsets.<br>
<br>
-YAML:  type: got<br>
-YAML:  references:<br>
-YAML:   kind: R_X86_64_TPOFF64<br>
-YAML:   target: tls2<br>
-<br>
 YAML:  name: main<br>
 YAML:  references:<br>
 YAML:    kind: R_X86_64_TPOFF32<br>
@@ -30,6 +25,10 @@ YAML:  name: GOTTPOFF<br>
 YAML:  kind: R_X86_64_PC32<br>
 YAML:  target: [[GOTNAME:[a-zA-Z0-9_]+]]<br>
<br>
+YAML:  type: got<br>
+YAML:  references:<br>
+YAML:   kind: R_X86_64_TPOFF64<br>
+YAML:   target: tls2<br>
<br>
 // main<br>
 CHECK: addl %fs:-4<br>
<br>
Modified: lld/trunk/test/elf/x86-64-dynamic.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/x86-64-dynamic.test?rev=227666&r1=227665&r2=227666&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/x86-64-dynamic.test?rev=227666&r1=227665&r2=227666&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/x86-64-dynamic.test (original)<br>
+++ lld/trunk/test/elf/x86-64-dynamic.test Fri Jan 30 20:05:01 2015<br>
@@ -8,17 +8,6 @@ RUN: lld -flavor gnu -target x86_64-linu<br>
 RUN:   %p/Inputs/shared.so-x86-64 --output-filetype=yaml --noinhibit-exec \<br>
 RUN: | FileCheck %s --check-prefix=32S<br>
<br>
-// Don't check the GOT and PLT names as they are only present in assert builds.<br>
-CHECK:    type:            got<br>
-CHECK:    content:         [ 00, 00, 00, 00, 00, 00, 00, 00 ]<br>
-CHECK:    section-choice:  custom-required<br>
-CHECK:    section-name:    .got.dyn<br>
-CHECK:    permissions:     rw-<br>
-CHECK:    references:<br>
-CHECK:      - kind:            R_X86_64_GLOB_DAT<br>
-CHECK:        offset:          0<br>
-CHECK:        target:          i<br>
-<br>
 CHECK:  - name:            main<br>
 CHECK:    scope:           global<br>
 CHECK:    references:<br>
@@ -67,7 +56,16 @@ CHECK:        offset:          12<br>
               target:          .PLT0<br>
 CHECK:        addend:          -4<br>
<br>
-<br>
+// Don't check the GOT and PLT names as they are only present in assert builds.<br>
+CHECK:    type:            got<br>
+CHECK:    content:         [ 00, 00, 00, 00, 00, 00, 00, 00 ]<br>
+CHECK:    section-choice:  custom-required<br>
+CHECK:    section-name:    .got.dyn<br>
+CHECK:    permissions:     rw-<br>
+CHECK:    references:<br>
+CHECK:      - kind:            R_X86_64_GLOB_DAT<br>
+CHECK:        offset:          0<br>
+CHECK:        target:          i<br>
<br>
 CHECK:shared-library-atoms:<br>
 CHECK:  - name:            foo<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">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>
</div></div></blockquote></div><br></div>