Prefix entrypoints with 0xFF so we can do extra checks.
Add check to ensure we do not read method header from libart.so
Bug: 123510633
Test: m -j40 cts && cts-tradefed run cts \
--test android.jvmti.cts.JvmtiHostTest1927#testJvmti \
--module CtsJvmtiRunTest1927HostTestCases
Change-Id: Ic3e42e3bd4fbda3b11c7e265ed114770139151b9
diff --git a/runtime/oat_quick_method_header.h b/runtime/oat_quick_method_header.h
index 8798c69..e41c7ee 100644
--- a/runtime/oat_quick_method_header.h
+++ b/runtime/oat_quick_method_header.h
@@ -76,6 +76,10 @@
}
uint32_t GetCodeSize() const {
+ // ART compiled method are prefixed with header, but we can also easily
+ // accidentally use a function pointer to one of the stubs/trampolines.
+ // We prefix those with 0xFF in the aseembly so that we can do DCHECKs.
+ CHECK_NE(code_size_, 0xFFFFFFFF) << code_;
return code_size_ & kCodeSizeMask;
}