RFR: JDK-8317799 : AIX PPC64: FFI symbol lookup doesn't find symbols

David Holmes dholmes at openjdk.org
Tue Nov 14 05:01:29 UTC 2023


On Mon, 13 Nov 2023 07:46:37 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:

>>> For some context: `java.lang.foreign.Linker.nativeLinker().defaultLookup()` returns a `SymbolLookup` that can be used to find symbols from the standard library.
>>> 
>>> We use a shim library that re-exports symbols from the standard library in order to make them accessible through `dlsym`, since on e.g. Linux the standard library .so files might actually be linker scripts which we don't want to mess with. On Windows we use ucrtbase.dll + an auxiliary library that contains the expansions of several 'inline' functions such as `printf`. I'm not surprised to see that another platform like AIX requires more to make this work as well.
>>> 
>>> That said, I think we should limit the exported symbols to only those found in the standard C library header files: https://en.cppreference.com/w/c/header
>> 
>> Currently the symbols are restricted to some parts of libc and the entire math library libm. 
>> Are you suggesting we restrict the list to common math functions such as 
>> https://en.cppreference.com/w/c/numeric/math ?
>
>> > That said, I think we should limit the exported symbols to only those found in the standard C library header files: https://en.cppreference.com/w/c/header
>> 
>> Currently the symbols are restricted to some parts of libc and the entire math library libm. Are you suggesting we restrict the list to common math functions such as https://en.cppreference.com/w/c/numeric/math ?
> 
> I'm suggesting to include things that are defined by the C standard, plus some platform specific extensions. i.e. limit this to what is considered part of the public/supported API of the standard library on AIX.

@JornVernee when I googled for "dlsym equivalent for static libraries it turned up BFD:
https://stackoverflow.com/questions/10279693/dlsym-like-behaviour-for-static-linked-libraries
https://ftp.gnu.org/old-gnu/Manuals/bfd-2.9.1/html_chapter/bfd_1.html
but it seems ancient.

Maybe AIX, given it seems to like/prefer static linking, also provides some tools in this area?

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

PR Comment: https://git.openjdk.org/jdk/pull/16414#issuecomment-1809550596


More information about the build-dev mailing list