Move super class verification to class linker
Verify super classes in the class linker and chain exceptions when super
class verification fails. Add support for dumping chained exceptions to
Throwable::Dump. Improve verifier error detail messages.
Fixes problem where super class verification would leave a pending
exception that would be tripped over elsewhere.
Change-Id: I3ca850fc66674c8601132d7ec40bebbf9c108ae3
diff --git a/src/dex_verifier_test.cc b/src/dex_verifier_test.cc
index 379e8c4..51fb1bc 100644
--- a/src/dex_verifier_test.cc
+++ b/src/dex_verifier_test.cc
@@ -33,7 +33,8 @@
Class* klass = class_linker_->FindSystemClass(descriptor.c_str());
// Verify the class
- ASSERT_TRUE(DexVerifier::VerifyClass(klass));
+ std::string error_msg;
+ ASSERT_TRUE(DexVerifier::VerifyClass(klass, error_msg)) << error_msg;
}
void VerifyDexFile(const DexFile* dex, ClassLoader* class_loader) {
@@ -55,7 +56,8 @@
TEST_F(DexVerifierTest, IntMath) {
SirtRef<ClassLoader> class_loader(LoadDex("IntMath"));
Class* klass = class_linker_->FindClass("LIntMath;", class_loader.get());
- ASSERT_TRUE(DexVerifier::VerifyClass(klass));
+ std::string error_msg;
+ ASSERT_TRUE(DexVerifier::VerifyClass(klass, error_msg)) << error_msg;
}
TEST_F(DexVerifierTest, RegTypes_Primitives) {