ruby / fiddle

A libffi wrapper for Ruby.
BSD 2-Clause "Simplified" License
158 stars 36 forks source link

fiddle: Use C11 _Alignof to define ALIGN_OF when possible #120

Closed kraj closed 1 year ago

kraj commented 1 year ago

WG14 N2350 made very clear that it is an UB having type definitions within "offsetof" [1]. This patch enhances the implementation of macro ALIGN_OF to use builtin "_Alignof" to avoid undefined behavior when using std=c11 or newer

clang 16+ has started to flag this [2]

Fixes build when using -std >= gnu11 and using clang16+

Older compilers gcc < 4.9 or clang < 8 has buggy _Alignof even though it may support C11, exclude those compiler versions

[1] https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2350.htm [2] https://reviews.llvm.org/D133574

Signed-off-by: Khem Raj raj.khem@gmail.com

kraj commented 1 year ago

@kou FYI as you directed to submit here on ruby-core ml https://ml.ruby-lang.org/mailman3/hyperkitty/list/ruby-core@ml.ruby-lang.org/message/4OBJBAULUMXA6CW42IZKGPLQ7HVDTZ3H/

kou commented 1 year ago

Thanks.