Page MenuHomeFreeBSD

emulators/virtualbox-ose: Switch build to USES= compiler:c++14-lang
ClosedPublic

Authored by kevans on Apr 8 2020, 2:48 AM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Jan 14, 7:22 AM
Unknown Object (File)
Dec 19 2024, 3:01 PM
Unknown Object (File)
Sep 24 2024, 3:51 AM
Unknown Object (File)
Sep 19 2024, 8:42 PM
Unknown Object (File)
Sep 19 2024, 8:41 PM
Unknown Object (File)
Sep 19 2024, 8:39 PM
Unknown Object (File)
Sep 19 2024, 8:28 PM
Unknown Object (File)
Sep 19 2024, 3:25 PM
Subscribers

Details

Summary
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
Test Plan
  • portlint: pre-existing issue to be addressed later
  • testport: OK (-CURRENT, amd64; 11.3, amd64) [Also tested virtualbox-ose-additions]

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

koobs retitled this revision from emulators/virtualbox-ose: switch build over to devel/llvm10 to emulators/virtualbox-ose: Switch build to devel/llvm10.Apr 8 2020, 5:11 AM
koobs edited the summary of this revision. (Show Details)

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

Approved, please add clear ($reason) to MFH

This revision is now accepted and ready to land.Apr 8 2020, 5:21 AM

Switch back to USES= compiler:c++14-lang, add patch to fix the runtime breakage

This revision now requires review to proceed.Apr 11 2020, 3:27 AM
kevans retitled this revision from emulators/virtualbox-ose: Switch build to devel/llvm10 to emulators/virtualbox-ose: Switch build to USES= compiler:c++14-lang.Apr 11 2020, 3:37 AM
kevans edited the summary of this revision. (Show Details)
kevans edited the test plan for this revision. (Show Details)

Fix the Config patch; it only needed to be one hunk

LGTM, nice root resolution and one less port with specific compiler dependency

Win!

This revision is now accepted and ready to land.Apr 14 2020, 11:00 AM

I forgot the Differential Revision tag; tagged this with the proper commit, closing.