28 #if defined(ENABLE_JRE_LAYOUT)
47 #define LIBJVM_NAME NATIVE_LIBRARY_PREFIX"jvm" NATIVE_LIBRARY_SUFFIX
61 int main(
int argc,
char **argv)
63 #if defined(ENABLE_LIBJVM)
66 # if defined(ENABLE_JRE_LAYOUT)
71 #if defined(ENABLE_LIBJVM)
74 void* libjvm_VM_create;
87 #if defined(ENABLE_LIBJVM)
88 # if defined(ENABLE_JRE_LAYOUT)
91 path = (
char*)
os::malloc(
sizeof(
char) * 4096);
93 if (readlink(
"/proc/self/exe", path, 4095) == -1) {
94 fprintf(stderr,
"main: readlink failed: %s\n", strerror(errno));
100 path = os::dirname(path);
104 fprintf(stderr,
"main: libjvm name to long for buffer\n");
120 if (libjvm_handle == NULL) {
127 if (libjvm_handle == NULL) {
130 fprintf(stderr,
"main: os::dlopen failed: %s\n", lterror);
134 fprintf(stderr,
"main: os::dlopen failed: %s\n",
os::dlerror());
142 libjvm_VM_create =
os::dlsym(libjvm_handle,
"VM_create");
144 if (libjvm_VM_create == NULL) {
145 fprintf(stderr,
"main: lt_dlsym failed: %s\n",
os::dlerror());
149 VM_create = (bool (*)(
JavaVM**,
void**,
void*)) (uintptr_t) libjvm_VM_create;
158 #if defined(ENABLE_LIBJVM)
159 libjvm_vm_run =
os::dlsym(libjvm_handle,
"vm_run");
161 if (libjvm_vm_run == NULL) {
162 fprintf(stderr,
"main: os::dlsym failed: %s\n",
os::dlerror());
182 JavaVMInitArgs* vm_args;
184 vm_args = (JavaVMInitArgs*) malloc(
sizeof(JavaVMInitArgs));
186 vm_args->version = JNI_VERSION_1_2;
187 vm_args->nOptions = argc - 1;
188 vm_args->options = (JavaVMOption*) malloc(
sizeof(JavaVMOption) * argc);
191 for (
int i = 1;
i < argc;
i++)
192 vm_args->options[
i - 1].optionString = argv[
i];
typedef void(JNICALL *jvmtiEventSingleStep)(jvmtiEnv *jvmti_env
bool VM_create(JavaVM **p_vm, void **p_env, void *vm_args)
C wrapper for VM::create.
static void free(void *ptr)
int main(int argc, char **argv)
static JavaVMInitArgs * prepare_options(int argc, char **argv)
Prepare the JavaVMInitArgs structure.
static size_t strlen(const char *s)
static void * dlsym(void *handle, const char *symbol)
void vm_run(JavaVM *vm, JavaVMInitArgs *vm_args)
static void * dlopen(const char *filename, int flag)
static char * dlerror(void)
static void * malloc(size_t size)