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

Reply via email to