jextract and bit fields
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Wed Feb 1 11:26:01 UTC 2023
Hi Remy,
We have fixed a related issue here:
https://github.com/openjdk/jextract/pull/101
Hopefully this addresses your problem.
Cheers
Maurizio
On 30/01/2023 16:39, Maurizio Cimadamore wrote:
>
> Hey Remi,
> while jextract does not support bitfields, it should also not crash
> when seeing them :-)
>
> I have tried extracting a simple header containing the struct in your
> email using the jextract binary at [1].
>
> I could successfully extract it, and obtain a |my_struct| Java
> wrapper, with this layout:
>
> |static final GroupLayout $struct$LAYOUT = MemoryLayout.structLayout(
> MemoryLayout.structLayout(
> MemoryLayout.paddingLayout(1).withName("foo"),
> MemoryLayout.paddingLayout(31) ) ).withName("my_struct"); |
>
> As expected, the contents of the struct are just padding.
>
> That said, I’m beginnin to suspect that you are seeing this issue with
> a more recent version of jextract, perhaps the one for the “panama”
> branch? We have made recent changes to how padding layouts are defined
> - e.g. so that their size/alignment must be a multiple of 8. This
> would cause the issue you are seeing.
>
> Maurizio
>
> On 30/01/2023 13:25, Rémy Maucherat wrote:
>
>> Hi,
>>
>> When processing certain bit-fields, jextract produces an error:
>> "Invalid bitSize: 1"
>> In addition to not being really helpful (it took me some time to find
>> out what the problem was since no reference to a location is given,
>> nor that this is about a bit-field).
>>
>> A typical example causing the error is something like:
>> struct my_struct {
>> unsigned int foo : 1;
>> };
>>
>> Obviously we don't have these sort of memory saving "smart" fancy
>> tricks in Java (which is probably good since they can cause serious
>> problems when misused ...).
>>
>> Is support for this planned eventually, or should bit-fields be
>> avoided for Panama compatibility ?
>>
>> Thanks !
>>
>> Rémy
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/jextract-dev/attachments/20230201/f3572929/attachment.htm>
More information about the jextract-dev
mailing list