RFR: 8304006: jlink should create the jimage file in the native endian for the target platform [v18]

Jaikiran Pai jpai at openjdk.org
Wed Jul 12 10:58:54 UTC 2023


On Mon, 26 Jun 2023 10:51:34 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:

>> Can I please get a review for this change which proposes to fix the issue reported in https://bugs.openjdk.org/browse/JDK-8206890?
>> 
>> The `jlink` command allows a `--endian` option to specify the byte order in the generated image. Before this change, when such a image was being launched, the code would assume the byte order in the image to be the native order of the host where the image is being launched. That would result in failure to launch java, as noted in the linked issue.
>> 
>> The commit in this PR, changes relevant places to not assume native order and instead determine the byte order by reading the magic bytes in the image file's header content.
>> 
>> A new jtreg test has been added which reproduces the issue and verifies the fix.
>
> Jaikiran Pai has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 40 commits:
> 
>  - update jdk.tools.jlink.internal.Platform class to be aware of non-current platform's endianness
>  - remove no longer needed constructor
>  - merge latest from master branch
>  - foo
>  - merge latest from master branch
>  - cleanup test - rename method and update code comment as suggested by Alan
>  - Rename KNOWN_ENDIANNESS to PLATFORM_PROPERTIES
>  - use test.jdk system property in test
>  - don't iterate over the properties file keys and instead do lookup when needed
>  - update CDSPluginTest to correctly "simulate" cross-platform test
>  - ... and 30 more: https://git.openjdk.org/jdk/compare/013367b4...532ea3f6

This PR is now ready for further reviews. I've updated it to now completely rely on the newly introduced `jdk.internal.util.Architecture` APIs instead of the jlink code relying on a `target.properties` for mapping architectures to their endianness.
Existing tests in `test/jdk/tools/jlink` continue to pass with these latest changes. I've introduced a new jtreg test `JLinkEndianTest` to verify one of the possible `--endian` option usage. We can't automate the cross-platform testing of this command, but at least this test should verify that it won't allow creation of images with a `--endian` which doesn't match the target platform's endianness.

tier testing is currently in progress.

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

PR Comment: https://git.openjdk.org/jdk/pull/11943#issuecomment-1632283625


More information about the core-libs-dev mailing list