Re: git: c00d34566536 - main - Install unwind.h into /usr/include
- In reply to: Don Lewis : "Re: git: c00d34566536 - main - Install unwind.h into /usr/include"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 21 Apr 2022 22:04:50 UTC
On Thu, 21 Apr 2022 13:57:09 -0700 (PDT) Don Lewis <truckman@FreeBSD.org> wrote: > On 21 Apr, Don Lewis wrote: >> On 21 Apr, Tijl Coosemans wrote: >>> On Wed, 20 Apr 2022 18:35:15 -0700 (PDT) Don Lewis >>> <truckman@FreeBSD.org> wrote: >>>> My only remaining question is why the selftest fails before the recent >>>> padding fix. I would expect the tests to pass with the incorrectly >>>> placed padding as long as everything was compiled with the same >>>> structure definition. >>> >>> Are you building with devel/libunwind installed? It installs its own >>> unwind.h which does not have the alignment changes so it does not induce >>> padding in __cxa_exception. So you're not actually compiling with the >>> same structure definition. >> >> Bingo! libunwind is getting pulled in by the gstreamer dependency. Not >> sure how to fix this because some of the other dependencies are not >> getting built with libunwind. There's a patch for devel/libunwind in bug 263370. > ... and in view of the above, why does adding the padding to the system > unwind.h header fix the self test since that will introduce a mismatch? What matters for __cxa_exception are negative offsets from the end of the struct. Adding __aligned__ to _Unwind_Exception induced 8 bytes of padding right before the unwindHeader field in __cxa_exception to make that field 16 byte aligned. That put all the fields above unwindHeader at a different offset from the end. By adding the padding to the beginning unwindHeader is already 16 byte aligned and all the fields are at the same offset again as before.