On Tue, 8 Dec 2020 23:10:08 GMT, Phil Race <p...@openjdk.org> wrote: >> The following PR fixes https://bugs.openjdk.java.net/browse/JDK-8254024 >> >> Starting from version 11.0.9, all JDK libraries also build as static >> libraries (JEP 178: Statically-Linked JNI Libraries). >> The purpose of using static libraries is to build GraalVM Native image >> statically linked with Java native libraries, to shipping single executable >> without runtime dependencies from JRE. >> >> For some static libraries, it leads to an issue: if one static library is >> trying to load another static library in runtime using `dlopen` (and then >> uses `dlsym` to find symbols). With static libraries, this is not possible >> and all dynamic calls should be replaced. >> >> This happens in `libawt` while it loads `awt-xawt` or `awt_headless` and in >> `mlib_image`. >> >> Current PR fixes this issue for AWT libraries that allow building Swing/AWT >> applications as a Native image and have no runtime dependencies from JRE. > >> This happens in libawt while it loads awt-xawt or awt_headless and in >> mlib_image. > > So I am supposing this means you are producing two different static images ? > - either all the time or based on a build flag ? > One is linking in the X11 lib, the other the headless stub lib ?? > > Can you confirm that understanding ? > This of course doesn't scale very well - meaning you are lucky we don't do > this more often as you may need more combinations.
No, we produce only one image. The headless/non-headless mode is defined by the system property `-Djava.awt.headless=...`. Here is a command example for native image generation: `$ ~/graalvm-ce-java11-21.0.0-dev/bin/native-image -H:ConfigurationFileDirectories=./configs -Djava.awt.headless=true AWTFixExample` With `-Djava.awt.headless=false` to the gcc linker we pass `libawt.a` and `libawt_headless.a` With `-Djava.awt.headless=true` to the gcc linker we pass `libawt.a` and `libawt-xawt.a` If the generated image demands `libmlib_image.a` it will be also linked. ------------- PR: https://git.openjdk.java.net/jdk/pull/562