RFR: 7904115: Fix for AIX test case failures due to incorrect alignment for double and pointer [v5]

Maurizio Cimadamore mcimadamore at openjdk.org
Thu Dec 18 12:56:47 UTC 2025


On Thu, 18 Dec 2025 11:36:52 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)
>
> Varada M has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - 7904115: Fix for AIX test case failures due to incorrect alignment for double and pointer
>  - restoring the changes

src/main/java/org/openjdk/jextract/impl/StructBuilder.java line 463:

> 461:         boolean isStruct = scoped.kind() == Scoped.Kind.STRUCT;
> 462: 
> 463:         long scopedTypeAlign = ClangAlignOf.getOrThrow(scoped) / 8;

I think the changes in this class should be reverted while we wait for a more general fix. If your goal is to allow support for AIX with natural alignment, let this PR do just that -- other issues will be addressed in followup changes.

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

PR Review Comment: https://git.openjdk.org/jextract/pull/296#discussion_r2630962601


More information about the jextract-dev mailing list