<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 class="" style="white-space:pre"> </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 class="" style="white-space:pre"> </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="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">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>