RFR: 8268129: LibraryLookup::ofDefault leaks symbols from loaded libraries

Cheng Jin duke at openjdk.java.net
Tue Oct 12 15:27:55 UTC 2021


On Tue, 12 Oct 2021 15:04:02 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

> Is libc.a loadable on AIX (e.g. with System.loadLibrary) ?

I tried to load `libc.a` and `libc` this way but neither of them works on AIX.
e.g.

public class StdLibTest {
        private static CLinker clinker = CLinker.getInstance();
        static {
                System.loadLibrary("libc.a"); <-----
        }
        private static final SymbolLookup defaultLibLookup = SymbolLookup.loaderLookup();

        public static void main(String args[]) throws Throwable {
                Addressable strlenSymbol = defaultLibLookup.lookup("strlen").get();
        }
}

$ ./bin/java  --enable-native-access=ALL-UNNAMED  --add-modules jdk.incubator.foreign 
-Dforeign.restricted=permit --enable-native-access=ALL-UNNAMED  StdLibTest
WARNING: Using incubator modules: jdk.incubator.foreign
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load libc.a <-------
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:1822)
        at java.base/java.lang.System.loadLibrary(System.java:694)
        at StdLibTest.<clinit>(StdLibTest.java:23)

and 

public class StdLibTest {
        private static CLinker clinker = CLinker.getInstance();
        static {
                System.loadLibrary("libc"); <-------
        }
        private static final SymbolLookup defaultLibLookup = SymbolLookup.loaderLookup();

        public static void main(String args[]) throws Throwable {
                Addressable strlenSymbol = defaultLibLookup.lookup("strlen").get();
        }
}

$ ./bin/java  --enable-native-access=ALL-UNNAMED  --add-modules jdk.incubator.foreign
-Dforeign.restricted=permit --enable-native-access=ALL-UNNAMED  StdLibTest
WARNING: Using incubator modules: jdk.incubator.foreign
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load libc <------
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:1822)
        at java.base/java.lang.System.loadLibrary(System.java:694)
        at StdLibTest.<clinit>(StdLibTest.java:23)

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

PR: https://git.openjdk.java.net/jdk/pull/4316



More information about the build-dev mailing list