Working dex2oat and oatexec
adb shell dex2oatd --dex-file=/system/framework/core.jar --image=/system/framework/boot.oat --base=0x50000000 "'--method=Ljava/lang/System;logI(Ljava/lang/String;)V'" "'--method=Ljava/lang/System;log(CLjava/lang/String;Ljava/lang/Throwable;)V'"
adb shell dex2oatd --boot-dex-file=/system/framework/core.jar --boot=/system/framework/boot.oat --dex-file=/system/framework/art-test-dex-HelloWorld.jar --image=/system/framework/art-test-dex-HelloWorld.oat
adb shell oatexecd -Xbootclasspath:/system/framework/core.jar -Xbootimage:/system/framework/boot.oat -classpath /system/framework/art-test-dex-HelloWorld.jar -Ximage:/system/framework/art-test-dex-HelloWorld.oat HelloWorld
09-05 17:58:18.912 2385 2385 I System : Hello, world!
Change-Id: I53e534068584f0c3a837313e4d517a0e4a7154fc
diff --git a/src/runtime_test.cc b/src/runtime_test.cc
index 65792c9..66c181b 100644
--- a/src/runtime_test.cc
+++ b/src/runtime_test.cc
@@ -14,13 +14,22 @@
void* test_abort = reinterpret_cast<void*>(0xb);
void* test_exit = reinterpret_cast<void*>(0xc);
void* null = reinterpret_cast<void*>(NULL);
- std::vector<const DexFile*> boot_class_path;
- boot_class_path.push_back(java_lang_dex_file_.get());
+
+ std::string lib_core = GetLibCoreDexFileName();
+
+ std::string boot_class_path;
+ boot_class_path += "-Xbootclasspath:";
+ boot_class_path += lib_core;
Runtime::Options options;
- options.push_back(std::make_pair("-Xbootclasspath:class_path_foo:class_path_bar", null));
- options.push_back(std::make_pair("bootclasspath", &boot_class_path));
+ options.push_back(std::make_pair(boot_class_path.c_str(), null));
+ options.push_back(std::make_pair("-classpath", null));
+ options.push_back(std::make_pair(lib_core.c_str(), null));
+ options.push_back(std::make_pair("-cp", null));
+ options.push_back(std::make_pair(lib_core.c_str(), null));
options.push_back(std::make_pair("-Xbootimage:boot_image", null));
+ options.push_back(std::make_pair("-Ximage:image_1", null));
+ options.push_back(std::make_pair("-Ximage:image_2", null));
options.push_back(std::make_pair("-Xcheck:jni", null));
options.push_back(std::make_pair("-Xms2048", null));
options.push_back(std::make_pair("-Xmx4k", null));
@@ -34,8 +43,12 @@
UniquePtr<Runtime::ParsedOptions> parsed(Runtime::ParsedOptions::Create(options, false));
ASSERT_TRUE(parsed.get() != NULL);
- EXPECT_EQ(1U, parsed->boot_class_path_.size()); // bootclasspath overrides -Xbootclasspath
+ EXPECT_EQ(1U, parsed->boot_class_path_.size());
+ EXPECT_EQ(1U, parsed->class_path_.size());
EXPECT_STREQ("boot_image", parsed->boot_image_);
+ EXPECT_EQ(2U, parsed->images_.size());
+ EXPECT_STREQ("image_1", parsed->images_[0]);
+ EXPECT_STREQ("image_2", parsed->images_[1]);
EXPECT_EQ(true, parsed->check_jni_);
EXPECT_EQ(2048U, parsed->heap_initial_size_);
EXPECT_EQ(4 * KB, parsed->heap_maximum_size_);