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());