RFR: JDK-8319516 - Native library suffix impact on the library loading in AIX- Java Class Loader [v2]

Jaikiran Pai jpai at openjdk.org
Thu Mar 21 15:21:22 UTC 2024


On Tue, 19 Mar 2024 10:01:31 GMT, Suchismith Roy <sroy at openjdk.org> wrote:

>>> > In AIX, we have an usecase where shared libraries have certain member objects to be referred to. E.g libclang.a(shr_64.o) .
>>> 
>>> Would you happen to know any official documentation which explains that AIX syntax?
>>> 
>> 
>> https://www.ibm.com/docs/en/aix/7.2?topic=l-ld-command
>> Text : 
>> 
>> **autoload: path/file(member) | Automatically load the archive member.
>> -- | --**
>> Autoload is a  flag used to load archive members. The format of the path is mentioned.
>
>> Do you mean some application code is calling the `System.loadLibrary()` method with such values?
> 
> Yes we are trying to install liblcang and also jextract and it fails with errors.
> 
> Exception in thread "main" java.lang.UnsatisfiedLinkError: no clang in java.library.path
>  
>         at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2439)
>         at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:916)
>         at java.base/java.lang.System.loadLibrary(System.java:2063)
>         at [org.openjdk.jextract at 22/org.openjdk.jextract.clang.libclang.RuntimeHelper.<clinit>(RuntimeHelper.java:65)](mailto:org.openjdk.jextract at 22/org.openjdk.jextract.clang.libclang.RuntimeHelper.%3cclinit%3e(RuntimeHelper.java:65))
>         at [org.openjdk.jextract at 22/org.openjdk.jextract.clang.libclang.constants$17.<clinit>(constants$17.java:46)](mailto:org.openjdk.jextract at 22/org.openjdk.jextract.clang.libclang.constants$17.%3cclinit%3e(constants$17.java:46))
>         at [org.openjdk.jextract at 22/org.openjdk.jextract.clang.libclang.Index_h.clang_getClangVersion$MH(Index_h.java:5690)](mailto:org.openjdk.jextract at 22/org.openjdk.jextract.clang.libclang.Index_h.clang_getClangVersion$MH(Index_h.java:5690))
>         at [org.openjdk.jextract at 22/org.openjdk.jextract.clang.libclang.Index_h.clang_getClangVersion(Index_h.java:5698)](mailto:org.openjdk.jextract at 22/org.openjdk.jextract.clang.libclang.Index_h.clang_getClangVersion(Index_h.java:5698))
>         at [org.openjdk.jextract at 22/org.openjdk.jextract.clang.LibClang.version(LibClang.java:93)](mailto:org.openjdk.jextract at 22/org.openjdk.jextract.clang.LibClang.version(LibClang.java:93))
>         at [org.openjdk.jextract at 22/org.openjdk.jextract.JextractTool.run(JextractTool.java:362)](mailto:org.openjdk.jextract at 22/org.openjdk.jextract.JextractTool.run(JextractTool.java:362))
>         at [org.openjdk.jextract at 22/org.openjdk.jextract.JextractTool.main(JextractTool.java:174)](mailto:org.openjdk.jextract at 22/org.openjdk.jextract.JextractTool.main(JextractTool.java:174))
> 
> 
> The actual member is libclang.a(libclang.so.16)

Hello @suchismith1993, I haven't fully caught up on the necessity of this change. The current proposed change, renames files in the underlying filesystem in the code flow of `System.loadLibrary()` and I don't think is the right thing to do irrespective of whether we do it in AIX specific code or common code.

Could you update the JBS issue description to clearly explain what (application?) code is causing what issue? I know you mentioned about jextract here, but it's not clear whether this is some issue in jextract or something else. Having all those details in the JBS issue will be helpful to decide what changes should be pursued.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/17945#discussion_r1534124561


More information about the core-libs-dev mailing list