RFR: 7904115: Fix for AIX test case failures due to incorrect alignment for double and pointer
Jorn Vernee
jvernee at openjdk.org
Thu Nov 20 14:38:46 UTC 2025
On Thu, 20 Nov 2025 11:20:46 GMT, Varada M <varadam at openjdk.org> wrote:
> Total of 10 test failures observed on AIX:
> jtreg/generator/nestedTypes/TestNestedTypesUnsupported.java
> jtreg/generator/test8246400/LibTest8246400Test.java
> jtreg/generator/test8258605/LibTest8258605Test.java
> jtreg/generator/test8261511/Test8261511.java
> jtreg/generator/testStruct/LibStructTest.java
> testng/org/openjdk/jextract/test/toolprovider/ConstantsTest.java
> testng/org/openjdk/jextract/test/toolprovider/IncompleteArrayTest.java
> testng/org/openjdk/jextract/test/toolprovider/Test8240811.java
> testng/org/openjdk/jextract/test/toolprovider/TestClassGeneration.java
> testng/org/openjdk/jextract/test/toolprovider/nestedAnonOffset/TestNestedAnonOffset.java
>
> This PR fixes AIX specific layout generation issues related to incorrect alignment double and pointer types.
> 1. Structs containing double fields fail with:
> i. Unsupported layout: 4%D8
> ii. Invalid alignment constraint for member layout
> double in AIX structs has size 8 but alignment 4 (except as first field). AIX specific handling for C_DOUBLE computes the correct alignment.
>
> 2. Clang was detected as 32-bit due to missing -m64 during macro extraction, causing inconsistent macros. This caused jextract to interpret pointer constants incorrectly, leading to failures like:
> expected [-1] but found [4294967295]
>
> 3. TestNestedAnonOffset.java test failed on AIX because it also expects more padding similar to platforms like windows and linux
>
>
> After the patch jtreg tests passes successfully.
>
> JBS: [CODETOOLS-7904115](https://bugs.openjdk.org/browse/CODETOOLS-7904115)
src/main/java/org/openjdk/jextract/impl/ClassSourceBuilder.java line 269:
> 267: } else {
> 268: yield alignIfNeeded(runtimeHelperName() + ".C_DOUBLE", 4, align);
> 269: }
Why are there 2 cases here?
src/main/java/org/openjdk/jextract/impl/Options.java line 92:
> 90: if (TypeImpl.IS_AIX) {
> 91: clangArgs.add("-m64");
> 92: }
This doesn't look like the right place to add this, as the `-m64` flag would be added for each clang argument.
-------------
PR Review Comment: https://git.openjdk.org/jextract/pull/296#discussion_r2546292527
PR Review Comment: https://git.openjdk.org/jextract/pull/296#discussion_r2546280367
More information about the jextract-dev
mailing list