diff --git a/src/compiler_llvm/runtime_support_llvm.cc b/src/compiler_llvm/runtime_support_llvm.cc
index e3a981e..6dd0733 100644
--- a/src/compiler_llvm/runtime_support_llvm.cc
+++ b/src/compiler_llvm/runtime_support_llvm.cc
@@ -142,4 +142,58 @@
 void art_set_current_thread_from_code(void* thread_object_addr) {
 }
 
+
+//----------------------------------------------------------------------------
+// Runtime Support Function Lookup Callback
+//----------------------------------------------------------------------------
+
+void* art_find_runtime_support_func(void* context, char const* name) {
+  struct func_entry_t {
+    char const* name;
+    size_t name_len;
+    void* addr;
+  };
+
+  static struct func_entry_t const tab[] = {
+#define DEF(NAME, ADDR) \
+    { NAME, sizeof(NAME) - 1, (void *)(&(ADDR)) },
+
+    DEF("art_push_shadow_frame_from_code", art_push_shadow_frame_from_code)
+    DEF("art_pop_shadow_frame_from_code", art_pop_shadow_frame_from_code)
+    DEF("art_is_exception_pending_from_code", art_is_exception_pending_from_code)
+    DEF("art_throw_div_zero_from_code", art_throw_div_zero_from_code)
+    DEF("art_throw_array_bounds_from_code", art_throw_array_bounds_from_code)
+    DEF("art_throw_no_such_method_from_code", art_throw_no_such_method_from_code)
+    DEF("art_throw_null_pointer_exception_from_code", art_throw_null_pointer_exception_from_code)
+    DEF("art_throw_stack_overflow_from_code", art_throw_stack_overflow_from_code)
+    DEF("art_throw_exception_from_code", art_throw_exception_from_code)
+    DEF("art_find_catch_block_from_code", art_find_catch_block_from_code)
+    DEF("art_test_suspend_from_code", art_test_suspend_from_code)
+    DEF("art_set_current_thread_from_code", art_set_current_thread_from_code)
+    DEF("printf", printf)
+    DEF("scanf", scanf)
+    DEF("__isoc99_scanf", scanf)
+    DEF("rand", rand)
+    DEF("time", time)
+    DEF("srand", srand)
+#undef DEF
+  };
+
+  static size_t const tab_size = sizeof(tab) / sizeof(struct func_entry_t);
+
+  // Note: Since our table is small, we are using trivial O(n) searching
+  // function.  For bigger table, it will be better to use binary
+  // search or hash function.
+  size_t i;
+  size_t name_len = strlen(name);
+  for (i = 0; i < tab_size; ++i) {
+    if (name_len == tab[i].name_len && strcmp(name, tab[i].name) == 0) {
+      return tab[i].addr;
+    }
+  }
+
+  LOG(FATAL) << "Error: Can't find symbol " << name;
+  return 0;
+}
+
 }  // namespace art
diff --git a/src/compiler_llvm/runtime_support_llvm.h b/src/compiler_llvm/runtime_support_llvm.h
index c21cd7e..0b38bb7 100644
--- a/src/compiler_llvm/runtime_support_llvm.h
+++ b/src/compiler_llvm/runtime_support_llvm.h
@@ -39,6 +39,13 @@
 
 void art_set_current_thread_from_code(void* thread_object_addr);
 
+
+//----------------------------------------------------------------------------
+// Runtime Support Function Lookup Callback
+//----------------------------------------------------------------------------
+
+void* art_find_runtime_support_func(void* context, char const* name);
+
 }  // namespace art
 
 #endif  // ART_SRC_COMPILER_LLVM_RUNTIME_SUPPORT_LLVM_H_
diff --git a/src/compiler_llvm/utils_llvm.cc b/src/compiler_llvm/utils_llvm.cc
index ca50f6f..bc2a7f8 100644
--- a/src/compiler_llvm/utils_llvm.cc
+++ b/src/compiler_llvm/utils_llvm.cc
@@ -107,56 +107,6 @@
   return stub_name;
 }
 
-// Linker's call back function. Added some for debugging.
-void* find_sym(void* context, char const* name) {
-  struct func_entry_t {
-    char const* name;
-    size_t name_len;
-    void* addr;
-  };
-
-  static struct func_entry_t const tab[] = {
-#define DEF(NAME, ADDR) \
-    { NAME, sizeof(NAME) - 1, (void *)(&(ADDR)) },
-
-    DEF("art_push_shadow_frame_from_code", art_push_shadow_frame_from_code)
-    DEF("art_pop_shadow_frame_from_code", art_pop_shadow_frame_from_code)
-    DEF("art_is_exception_pending_from_code", art_is_exception_pending_from_code)
-    DEF("art_throw_div_zero_from_code", art_throw_div_zero_from_code)
-    DEF("art_throw_array_bounds_from_code", art_throw_array_bounds_from_code)
-    DEF("art_throw_no_such_method_from_code", art_throw_no_such_method_from_code)
-    DEF("art_throw_null_pointer_exception_from_code", art_throw_null_pointer_exception_from_code)
-    DEF("art_throw_stack_overflow_from_code", art_throw_stack_overflow_from_code)
-    DEF("art_throw_exception_from_code", art_throw_exception_from_code)
-    DEF("art_find_catch_block_from_code", art_find_catch_block_from_code)
-    DEF("art_test_suspend_from_code", art_test_suspend_from_code)
-    DEF("art_set_current_thread_from_code", art_set_current_thread_from_code)
-    DEF("printf", printf)
-    DEF("scanf", scanf)
-    DEF("__isoc99_scanf", scanf)
-    DEF("rand", rand)
-    DEF("time", time)
-    DEF("srand", srand)
-#undef DEF
-  };
-
-  static size_t const tab_size = sizeof(tab) / sizeof(struct func_entry_t);
-
-  // Note: Since our table is small, we are using trivial O(n) searching
-  // function.  For bigger table, it will be better to use binary
-  // search or hash function.
-  size_t i;
-  size_t name_len = strlen(name);
-  for (i = 0; i < tab_size; ++i) {
-    if (name_len == tab[i].name_len && strcmp(name, tab[i].name) == 0) {
-      return tab[i].addr;
-    }
-  }
-
-  LOG(FATAL) << "Error: Can't find symbol " << name;
-  return 0;
-}
-
 void LLVMLinkLoadMethod(const std::string& file_name, Method* method) {
   CHECK(method != NULL);
 
@@ -170,7 +120,8 @@
       mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
   CHECK(image != MAP_FAILED) << "Error: Unable to mmap ELF: " << file_name;
 
-  RSExecRef relocatable = rsloaderCreateExec(image, sb.st_size, find_sym, 0);
+  RSExecRef relocatable =
+    rsloaderCreateExec(image, sb.st_size, art_find_runtime_support_func, 0);
   CHECK(relocatable) << "Error: Unable to load ELF: " << file_name;
 
   const void *addr = rsloaderGetSymbolAddress(relocatable, LLVMLongName(method).c_str());
