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