Only JDWP exposes ACC_SUPER.
Also track the use of suppressed exceptions with ClassNotFoundException.
Change-Id: I5349d2e397f94c162cf44435cd36cab71f233480
diff --git a/src/jdwp/jdwp_handler.cc b/src/jdwp/jdwp_handler.cc
index 99916bd..7914aa7 100644
--- a/src/jdwp/jdwp_handler.cc
+++ b/src/jdwp/jdwp_handler.cc
@@ -469,15 +469,17 @@
return ERR_NONE;
}
-/*
- * Return the modifiers (a/k/a access flags) for a reference type.
- */
static JdwpError handleRT_Modifiers(JdwpState* state, const uint8_t* buf, int dataLen, ExpandBuf* pReply) {
RefTypeId refTypeId = ReadRefTypeId(&buf);
uint32_t access_flags;
if (!Dbg::GetAccessFlags(refTypeId, access_flags)) {
return ERR_INVALID_CLASS;
}
+
+ // Set ACC_SUPER; dex files don't contain this flag, but all classes are supposed to have it set.
+ // Class.getModifiers doesn't return it, but JDWP does, so we set it here.
+ access_flags |= kAccSuper;
+
expandBufAdd4BE(pReply, access_flags);
return ERR_NONE;
}