-
Bug
-
Resolution: Fixed
-
P4
-
15
-
b13
- Reproduce
```
bash configure --with-jvm-features=-cds ...
make images
```
- Symptom
```
Undefined symbols for architecture x86_64:
"SystemDictionary::load_shared_class_misc(InstanceKlass*, ClassLoaderData*, Thread*)", referenced from:
SystemDictionary::quick_resolve(InstanceKlass*, ClassLoaderData*, Handle, Thread*) in systemDictionary.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
```
- It might be fixed by
```
diff -r f227e770495f src/hotspot/share/classfile/systemDictionary.cpp
--- a/src/hotspot/share/classfile/systemDictionary.cpp Fri Feb 28 15:30:29 2020 -0800
+++ b/src/hotspot/share/classfile/systemDictionary.cpp Sat Feb 29 08:42:41 2020 +0800
@@ -1941,7 +1941,9 @@
}
klass->restore_unshareable_info(loader_data, domain, THREAD);
+#if INCLUDE_CDS
load_shared_class_misc(klass, loader_data, CHECK);
+#endif
Dictionary* dictionary = loader_data->dictionary();
unsigned int hash = dictionary->compute_hash(klass->name());
dictionary->add_klass(hash, klass->name(), klass);
```
```
bash configure --with-jvm-features=-cds ...
make images
```
- Symptom
```
Undefined symbols for architecture x86_64:
"SystemDictionary::load_shared_class_misc(InstanceKlass*, ClassLoaderData*, Thread*)", referenced from:
SystemDictionary::quick_resolve(InstanceKlass*, ClassLoaderData*, Handle, Thread*) in systemDictionary.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
```
- It might be fixed by
```
diff -r f227e770495f src/hotspot/share/classfile/systemDictionary.cpp
--- a/src/hotspot/share/classfile/systemDictionary.cpp Fri Feb 28 15:30:29 2020 -0800
+++ b/src/hotspot/share/classfile/systemDictionary.cpp Sat Feb 29 08:42:41 2020 +0800
@@ -1941,7 +1941,9 @@
}
klass->restore_unshareable_info(loader_data, domain, THREAD);
+#if INCLUDE_CDS
load_shared_class_misc(klass, loader_data, CHECK);
+#endif
Dictionary* dictionary = loader_data->dictionary();
unsigned int hash = dictionary->compute_hash(klass->name());
dictionary->add_klass(hash, klass->name(), klass);
```
- relates to
-
JDK-8240258 SystemDictionary::quick_resolve need guarded by INCLUDE_CDS
- Resolved
-
JDK-8236604 Optimize SystemDictionary::resolve_well_known_classes for CDS
- Resolved
-
JDK-8240257 Add CDS guard to SystemDictionary::quick_resolve
- Closed