Edit report at https://bugs.php.net/bug.php?id=79356&edit=1
ID: 79356 Updated by: dmi...@php.net Reported by: vibhutisawant18 at gmail dot com Summary: FFI:structure/union alignment [ext/ffi/tests/022.phpt] failure -Status: Assigned +Status: Closed Type: Bug Package: Testing related Operating System: Ubuntu 16.04 PHP Version: master-Git-2020-03-09 (Git) Assigned To: dmitry Block user comment: N Private report: N New Comment: ext/ffi/tests/022.phpt failure is fixed by exporting FFI::__BIGGEST_ALIGNMENT__ constant. Anyway, __attribute__((aligned)) without argument may cause invalid alignment assumption, if library and PHP were compiled with different options. The same situation with C. Previous Comments: ------------------------------------------------------------------------ [2020-03-11 12:34:34] dmi...@php.net @nikic: I don't know, but in case GCC supports this, I would prefer to support this as well. The proposed fix https://github.com/php/php-src/pull/5256 ------------------------------------------------------------------------ [2020-03-11 09:11:56] ni...@php.net @dmitry: Do you know of some particular case where this is being used? ------------------------------------------------------------------------ [2020-03-11 09:07:00] dmi...@php.net I'm not sure, if we should remove support for __attribute__((aligned)) without specified alignment completely. Probably, we should export __BIGGEST_ALIGNMENT__ constant and may be add a warning about dependency. ------------------------------------------------------------------------ [2020-03-09 10:24:04] ni...@php.net @dmitry: I would suggest that we remove support for __attribute__((aligned)) without specified alignment, because it is not interoperable. If PHP was combined with a different target architecture than the library we're linking against, the alignment will be incorrect. We should force an explicit specification of the alignment instead. What do you think? ------------------------------------------------------------------------ [2020-03-09 10:21:18] ni...@php.net Okay, I see now. __attribute__((aligned)) is the same as __attribute__((__BIGGEST_ALIGNMENT__)). I happened to use an -march=sandybridge build, where __BIGGEST_ALIGNMENT__ is 32. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=79356 -- Edit this bug report at https://bugs.php.net/bug.php?id=79356&edit=1