Print oat file location for invalid class status
Aim to figure out what oat file is responsible for invalid class
status errors.
Bug: 148412019
Test: make
(cherry-picked from commit 878f7961df1ec867b7dd9f27d382e246ad920d11)
Merged-In: Iff35d478b71c5fcf6b38b8cb0307c9b59521031c
Change-Id: Iff35d478b71c5fcf6b38b8cb0307c9b59521031c
diff --git a/runtime/oat_file.cc b/runtime/oat_file.cc
index 21847d0..8d021aa 100644
--- a/runtime/oat_file.cc
+++ b/runtime/oat_file.cc
@@ -1902,12 +1902,13 @@
const uint8_t* status_pointer = oat_class_pointer;
CHECK_LT(status_pointer, oat_file_->End()) << oat_file_->GetLocation();
ClassStatus status = enum_cast<ClassStatus>(*reinterpret_cast<const int16_t*>(status_pointer));
- CHECK_LE(status, ClassStatus::kLast) << static_cast<uint32_t>(status);
+ CHECK_LE(status, ClassStatus::kLast) << static_cast<uint32_t>(status)
+ << " at " << oat_file_->GetLocation();
const uint8_t* type_pointer = status_pointer + sizeof(uint16_t);
CHECK_LT(type_pointer, oat_file_->End()) << oat_file_->GetLocation();
OatClassType type = static_cast<OatClassType>(*reinterpret_cast<const uint16_t*>(type_pointer));
- CHECK_LT(type, kOatClassMax);
+ CHECK_LT(type, kOatClassMax) << oat_file_->GetLocation();
const uint8_t* after_type_pointer = type_pointer + sizeof(int16_t);
CHECK_LE(after_type_pointer, oat_file_->End()) << oat_file_->GetLocation();