diff options
author | Jari Vetoniemi <mailroxas@gmail.com> | 2018-02-17 23:04:55 +0200 |
---|---|---|
committer | Jari Vetoniemi <mailroxas@gmail.com> | 2018-02-17 23:04:55 +0200 |
commit | f378a448336d4fb3547b53c0712fd7307fc0ba3a (patch) | |
tree | ec1340379c497a1009384b2eb9035f5fc7be53d8 /src/app.c | |
parent | 33a9a63787154facfdaddaf719e727947c159800 (diff) |
Add fake jvm
Diffstat (limited to 'src/app.c')
-rw-r--r-- | src/app.c | 26 |
1 files changed, 17 insertions, 9 deletions
@@ -4,6 +4,7 @@ #include <dlfcn.h> #include <err.h> #include <assert.h> +#include "fakejvm/jvm.h" extern void *apkenv_android_dlopen(const char*, int); extern void *apkenv_android_dlclose(void*); @@ -16,25 +17,32 @@ main(int argc, const char *argv[]) if (argc < 2) errx(EXIT_FAILURE, "usage: so-file"); + printf("loading runtime\n"); dlopen("libpthread.so", RTLD_NOW | RTLD_GLOBAL); - printf("loading: %s\n", argv[1]); + printf("loading module: %s\n", argv[1]); - char path[4096]; - snprintf(path, sizeof(path), "%s", argv[1]); - apkenv_parse_library_path(dirname(path), ";"); + { + char path[4096]; + snprintf(path, sizeof(path), "%s", argv[1]); + apkenv_parse_library_path(dirname(path), ";"); + } void *handle; if (!(handle = apkenv_android_dlopen(argv[1], RTLD_NOW | RTLD_LOCAL))) errx(EXIT_FAILURE, "dlopen failed: %s", dlerror()); - printf("loaded: %s\n", argv[1]); + printf("trying JNI_OnLoad from: %s\n", argv[1]); - void* (*JNI_OnLoad)(void*, void*) = apkenv_android_dlsym(handle, "JNI_OnLoad"); - assert(JNI_OnLoad); + { + struct jvm jvm; + jvm_init(&jvm); - char data[1024]; - JNI_OnLoad(data, NULL); + void* (*JNI_OnLoad)(void*, void*) = apkenv_android_dlsym(handle, "JNI_OnLoad"); + assert(JNI_OnLoad); + + JNI_OnLoad(&jvm.vm, NULL); + } // apkenv_android_dlclose(handle); return EXIT_SUCCESS; |