RFR: JDK-8313616: support loading library members on AIX in os::dll_load

Martin Doerr mdoerr at openjdk.org
Wed Aug 9 13:47:59 UTC 2023


On Wed, 9 Aug 2023 07:54:35 GMT, Matthias Baesken <mbaesken at openjdk.org> wrote:

> AIX dlopen allows loading members of a lib; the syntax for members is libname(member-object) . However this needs an additional flag RTLD_MEMBER passed to dlopen.
> Example from our OpenJDK codebase : dlopen("/usr/lib/libperfstat.a(shr_64.o)", RTLD_MEMBER | RTLD_NOW);
> 
> However, currently we do not support this in os::dll_load, so member loading would fail because of the missing RTLD_MEMBER flag.
> See https://www.ibm.com/docs/en/aix/7.1?topic=d-dlopen-subroutine part about RTLD_MEMBER

src/hotspot/os/aix/os_aix.cpp line 1125:

> 1123:   // RTLD_LAZY has currently the same behavior as RTLD_NOW
> 1124:   // The dl is loaded immediately with all its dependants.
> 1125:   int dflags = RTLD_LAZY;

Looks ok. Maybe it would be safer to use `RTLD_NOW` in case the implementation changes at some point of time.

src/hotspot/os/aix/os_aix.cpp line 1130:

> 1128:   int flen = strlen(filename);
> 1129:   if (flen > 0 && filename[flen - 1] == ')') {
> 1130:     dflags = RTLD_LAZY | RTLD_MEMBER;

Better: `dflags |= RTLD_MEMBER;`

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

PR Review Comment: https://git.openjdk.org/jdk/pull/15204#discussion_r1288491995
PR Review Comment: https://git.openjdk.org/jdk/pull/15204#discussion_r1288489813


More information about the hotspot-runtime-dev mailing list