Integrated: 7903654: Jextract should use library lookup

Maurizio Cimadamore mcimadamore at openjdk.org
Thu Feb 8 15:00:05 UTC 2024


On Wed, 7 Feb 2024 16:18:45 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

> Historically, jextract has always used `System::loadLibrary` and `System::load` to load libraries specified via the `-l` option. This is suboptimal, as in the most common case, such libraries will be installed using e.g. `apt`, in which case `System::load/loadLibrary` is of little use, as it cannot find libraries in path known to the dynamic linker.
> 
> This patch changes the default for library loading to use `SymbolLookup::libraryLookup` instead. That is, in absence of any other options, each library provided via `-l` will create a new `SymbolLookup::loaderLookup`, associated with the library arena.
> 
> The `-l` option also supports a new disambiguation mechanism, borrowed from the gcc linker options - that is, if the library name starts with `:`, what follows is parsed as a path. Otherwise, we assume it's a library name, and we add prefix/suffix, using `System::mapLibraryName` before creating the lookup.
> 
> In cases where the old behavior is preferred (e.g. if libraries to be loaded sit in `java.library.path`) a fallback option has been provided, namely `--use-system-load-library`.
> 
> Regardless of the options used, the header class will feature a composite lookup. Inside this lookup we find:
> 
> 1. one or more library lookup (one for each `-l` option)
> 2. the loader lookup
> 3. the native linker's default lookup
> 
> When `--use-system-load-library` is used, (1) is empty, and a static initializer block with the corresponding calls to `System::load`, `System::loadLibrary` is added instead.

This pull request has now been integrated.

Changeset: 456632df
Author:    Maurizio Cimadamore <mcimadamore at openjdk.org>
URL:       https://git.openjdk.org/jextract/commit/456632df2e0b00a3f0fd5714b020d00f90c41804
Stats:     176 lines in 32 files changed: 91 ins; 18 del; 67 mod

7903654: Jextract should use library lookup

Reviewed-by: jvernee

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

PR: https://git.openjdk.org/jextract/pull/201


More information about the jextract-dev mailing list