It was just missing -rdynamic. Patch attached.<br><br>Nick<br><br><div class="gmail_quote">2009/12/11 Jeffrey Yasskin <span dir="ltr"><<a href="mailto:jyasskin@google.com">jyasskin@google.com</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Author: jyasskin<br>
Date: Sat Dec 12 00:18:46 2009<br>
New Revision: 91209<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=91209&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=91209&view=rev</a><br>
Log:<br>
Revert r91208.  Something on Linux prevents the JIT from looking up a symbol<br>
defined in the test, and I don't have time tonight to figure it out.<br>
<br>
Modified:<br>
    llvm/trunk/lib/ExecutionEngine/JIT/JIT.cpp<br>
    llvm/trunk/unittests/ExecutionEngine/JIT/JITTest.cpp<br>
<br>
Modified: llvm/trunk/lib/ExecutionEngine/JIT/JIT.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/JIT/JIT.cpp?rev=91209&r1=91208&r2=91209&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/JIT/JIT.cpp?rev=91209&r1=91208&r2=91209&view=diff</a><br>


<br>
==============================================================================<br>
--- llvm/trunk/lib/ExecutionEngine/JIT/JIT.cpp (original)<br>
+++ llvm/trunk/lib/ExecutionEngine/JIT/JIT.cpp Sat Dec 12 00:18:46 2009<br>
@@ -681,7 +681,7 @@<br>
   if (Ptr) return Ptr;<br>
<br>
   // If the global is external, just remember the address.<br>
-  if (GV->isDeclaration() || GV->hasAvailableExternallyLinkage()) {<br>
+  if (GV->isDeclaration()) {<br>
 #if HAVE___DSO_HANDLE<br>
     if (GV->getName() == "__dso_handle")<br>
       return (void*)&__dso_handle;<br>
<br>
Modified: llvm/trunk/unittests/ExecutionEngine/JIT/JITTest.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ExecutionEngine/JIT/JITTest.cpp?rev=91209&r1=91208&r2=91209&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ExecutionEngine/JIT/JITTest.cpp?rev=91209&r1=91208&r2=91209&view=diff</a><br>


<br>
==============================================================================<br>
--- llvm/trunk/unittests/ExecutionEngine/JIT/JITTest.cpp (original)<br>
+++ llvm/trunk/unittests/ExecutionEngine/JIT/JITTest.cpp Sat Dec 12 00:18:46 2009<br>
@@ -534,31 +534,6 @@<br>
 #endif<br>
 }<br>
<br>
-}  // anonymous namespace<br>
-// This variable is intentionally defined differently in the statically-compiled<br>
-// program from the IR input to the JIT to assert that the JIT doesn't use its<br>
-// definition.<br>
-extern "C" int32_t JITTest_AvailableExternallyGlobal;<br>
-int32_t JITTest_AvailableExternallyGlobal = 42;<br>
-namespace {<br>
-<br>
-TEST_F(JITTest, AvailableExternallyGlobalIsntEmitted) {<br>
-  TheJIT->DisableLazyCompilation(true);<br>
-  LoadAssembly("@JITTest_AvailableExternallyGlobal = "<br>
-               "  available_externally global i32 7 "<br>
-               " "<br>
-               "define i32 @loader() { "<br>
-               "  %result = load i32* @JITTest_AvailableExternallyGlobal "<br>
-               "  ret i32 %result "<br>
-               "} ");<br>
-  Function *loaderIR = M->getFunction("loader");<br>
-<br>
-  int32_t (*loader)() = reinterpret_cast<int32_t(*)()>(<br>
-    (intptr_t)TheJIT->getPointerToFunction(loaderIR));<br>
-  EXPECT_EQ(42, loader()) << "func should return 42 from the external global,"<br>
-                          << " not 7 from the IR version.";<br>
-}<br>
-<br>
 // This code is copied from JITEventListenerTest, but it only runs once for all<br>
 // the tests in this directory.  Everything seems fine, but that's strange<br>
 // behavior.<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>