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 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: @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 Previous Comments: ------------------------------------------------------------------------ [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. ------------------------------------------------------------------------ [2020-03-09 10:09:21] ni...@php.net Something odd is going on here. The test passes for me on 7.4, but fails on master. Adding a bit more debug output I get: FAIL: sizeof(struct {char a; uint32_t b __attribute__((aligned));}) Expected: 32 Actual: 64 FAIL: alignof(struct {char a; uint32_t b __attribute__((aligned));}) Expected: 16 Actual: 32 So I'm seeing a higher size/alignment for some reason. ------------------------------------------------------------------------ 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