emulators/virtualbox-ose: Switch build to USES= compiler:c++14-lang The runtime breakage that started occurring after the LLVM 7 -> 8 transition has been diagnosed, and the attached patch fixes it. The problem ended up being that tail-call optimization was being applied to this function (which should probably be written in assembly instead) and moving the tail-call to later on after some stack manipulations. The problem with this is that this particular function uses alloca() to carefully craft a stack that it's expecting to be used for the function it's calling at the end. The new patch fixes this using a technique that was committed later on in upstream changeset 75061 to address a similar failure with GCC sanitizers enabled. The FreeBSD-specific component of this patch is using the different stack setup if __clang__ is defined as well. The extra hunk in the Config patch has been added because the VirtualBox build system cannot cope with LLVM version numbers in the way it's expecting. Hardcode it to GCC 4.2 for FreeBSD, which is what the clang __GNU* macros describe, to fix build breakage that happens with newer LLVM as the build system decides our LLVM is an even older and more broken version of GCC with a broken regparm. PR: 236616, 244847 Approved by: koobs (mentor) MFH: 2020Q2
Details
Details
- Reviewers
koobs - Group Reviewers
vbox - Commits
- rP531689: emulators/virtualbox-ose: Switch build to USES= compiler:c++14-lang
- portlint: pre-existing issue to be addressed later
- testport: OK (-CURRENT, amd64; 11.3, amd64) [Also tested virtualbox-ose-additions]
Diff Detail
Diff Detail
- Repository
- rP FreeBSD ports repository
- Lint
No Lint Coverage - Unit
No Test Coverage - Build Status
Buildable 30418 Build 28178: arc lint + arc unit
Event Timeline
Comment Actions
So this fixes a runtime issue when built with Clang/LLVM, but that was mitigated with/by USE_GCC ?
While we should merge anything that isn't a feature update, in the default/general case, I'm not sure whether switching toolchains in the quarterly version could have unintended hard-to-measure side-effects