864 } else {
865 return _space[idx]._addr._base;
866 }
867 }
868
869 int FileMapInfo::FileMapHeader::compute_crc() {
870 char* header = data();
871 // start computing from the field after _crc
872 char* buf = (char*)&_crc + sizeof(int);
873 size_t sz = data_size() - (buf - header);
874 int crc = ClassLoader::crc32(0, buf, (jint)sz);
875 return crc;
876 }
877
878 bool FileMapInfo::FileMapHeader::validate() {
879 if (VerifySharedSpaces && compute_crc() != _crc) {
880 fail_continue("Header checksum verification failed.");
881 return false;
882 }
883
884 if (Arguments::get_xpatchprefix() != NULL) {
885 FileMapInfo::fail_continue("The shared archive file cannot be used with -Xpatch.");
886 return false;
887 }
888
889 if (_version != current_version()) {
890 FileMapInfo::fail_continue("The shared archive file is the wrong version.");
891 return false;
892 }
893 if (_magic != (int)0xf00baba2) {
894 FileMapInfo::fail_continue("The shared archive file has a bad magic number.");
895 return false;
896 }
897 char header_version[JVM_IDENT_MAX];
898 get_header_version(header_version);
899 if (strncmp(_jvm_ident, header_version, JVM_IDENT_MAX-1) != 0) {
900 log_info(class, path)("expected: %s", header_version);
901 log_info(class, path)("actual: %s", _jvm_ident);
902 FileMapInfo::fail_continue("The shared archive file was created by a different"
903 " version or build of HotSpot");
904 return false;
905 }
|
864 } else {
865 return _space[idx]._addr._base;
866 }
867 }
868
869 int FileMapInfo::FileMapHeader::compute_crc() {
870 char* header = data();
871 // start computing from the field after _crc
872 char* buf = (char*)&_crc + sizeof(int);
873 size_t sz = data_size() - (buf - header);
874 int crc = ClassLoader::crc32(0, buf, (jint)sz);
875 return crc;
876 }
877
878 bool FileMapInfo::FileMapHeader::validate() {
879 if (VerifySharedSpaces && compute_crc() != _crc) {
880 fail_continue("Header checksum verification failed.");
881 return false;
882 }
883
884 if (Arguments::get_patch_mod_prefix() != NULL) {
885 FileMapInfo::fail_continue("The shared archive file cannot be used with --patch-module.");
886 return false;
887 }
888
889 if (_version != current_version()) {
890 FileMapInfo::fail_continue("The shared archive file is the wrong version.");
891 return false;
892 }
893 if (_magic != (int)0xf00baba2) {
894 FileMapInfo::fail_continue("The shared archive file has a bad magic number.");
895 return false;
896 }
897 char header_version[JVM_IDENT_MAX];
898 get_header_version(header_version);
899 if (strncmp(_jvm_ident, header_version, JVM_IDENT_MAX-1) != 0) {
900 log_info(class, path)("expected: %s", header_version);
901 log_info(class, path)("actual: %s", _jvm_ident);
902 FileMapInfo::fail_continue("The shared archive file was created by a different"
903 " version or build of HotSpot");
904 return false;
905 }
|