Move the runtime support function lookup callback to runtime_support_llvm.cc.

Change-Id: I5384543966880742a814cfac398edd30060e06d9
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());