[info=9a0c938a8f191766a80b02b1ead5a8e2090c3041f8478d34302cb0228225e728]
OBS-URL: https://build.opensuse.org/package/show/Virtualization/virtualbox?expand=0&rev=750
This commit is contained in:
parent
a2a4e0d873
commit
fa4643bc2e
@ -1,4 +1,4 @@
|
||||
mtime: 1727611249
|
||||
commit: e025fac446ecbef0842cc722f451380f4d249ee76f5dae1a384d8d7c7f784449
|
||||
mtime: 1727826113
|
||||
commit: 9a0c938a8f191766a80b02b1ead5a8e2090c3041f8478d34302cb0228225e728
|
||||
url: https://src.opensuse.org/jengelh/virtualbox
|
||||
revision: master
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9b2d0fb674ff92328cdf555b27d9cb87d2494564e48c473cbd34e7e256528648
|
||||
oid sha256:ae1d16b98d6e8d40d372ac0d52305fdb37d0175e09483ec1eb427a4fce439941
|
||||
size 256
|
||||
|
53
cxx17.patch
53
cxx17.patch
@ -1,20 +1,36 @@
|
||||
From: Jan Engelhardt <ej@inai.de>
|
||||
Date: 2024-09-20 22:48:58.758026690 +0200
|
||||
|
||||
The code uses <filesystem>, so ensure we always use -std=c++17 at the very least.
|
||||
The code uses <filesystem>, so ensure we always use -std=c++17 at the
|
||||
very least.
|
||||
|
||||
Prior to C++17, noexcept cannot be part of a type alias, and noexcept is not part of the
|
||||
function signature. So it was ok that FNCONSUMER *didn't* match the function definition.
|
||||
Prior to C++17, noexcept cannot be part of a type alias, and so is
|
||||
not part of the function signature, and so is not part of the ABI.
|
||||
|
||||
In C++17, noexcept is part of the signature, so its absence/presence is significant.
|
||||
In C++17, noexcept is significant. There is a compile error because
|
||||
the FNCONSUMER alias as defined in a .h file does not match the
|
||||
function body in a .cpp file.
|
||||
|
||||
The def file is also wrong, but no one at virtualbox.org noticed for
|
||||
some reason, even though the def mismatch also caused a link/build
|
||||
failure in its own right.
|
||||
|
||||
To resolve the mismatch between .cpp/.h, the function signature is
|
||||
augmented by RT_NOEXCEPT, based upon the function head being the
|
||||
authoritative source as to whether something was meant to be noexcept
|
||||
or not.
|
||||
|
||||
In turn, adding RT_NOEXCEPT causes a change in the ABI of VBoxRT.so.
|
||||
The closed-source VirtualBox extension pack does not expect that and
|
||||
is unable to load [LD_BIND_NOW=1]. To resolve _that_, we add extra
|
||||
symbol aliases.
|
||||
|
||||
The def file is also wrong, but no one at virtualbox.org noticed for some reason even
|
||||
though it also caused a link/build failure.
|
||||
---
|
||||
Config.kmk | 3 +++
|
||||
include/iprt/cpp/restclient.h | 12 ++++++++++--
|
||||
src/VBox/Runtime/VBox/VBoxRTImp-gcc.def | 2 +-
|
||||
3 files changed, 14 insertions(+), 3 deletions(-)
|
||||
Config.kmk | 3 +++
|
||||
include/iprt/cpp/restclient.h | 12 ++++++++++--
|
||||
src/VBox/Runtime/VBox/VBoxRTImp-gcc.def | 2 +-
|
||||
src/VBox/Runtime/common/rest/rest-binary.cpp | 9 +++++++++
|
||||
4 files changed, 23 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: VirtualBox-7.1.0/Config.kmk
|
||||
===================================================================
|
||||
@ -73,3 +89,20 @@ Index: VirtualBox-7.1.0/src/VBox/Runtime/VBox/VBoxRTImp-gcc.def
|
||||
_ZN22RTCRestBinaryParameter19setProducerCallbackEPDoFiPS_PvmyPmES1_y ; after-noexcept int64=llong
|
||||
_ZN22RTCRestBinaryParameterC1Ev
|
||||
_ZN22RTCRestBinaryParameterC2Ev
|
||||
Index: VirtualBox-7.1.0/src/VBox/Runtime/common/rest/rest-binary.cpp
|
||||
===================================================================
|
||||
--- VirtualBox-7.1.0.orig/src/VBox/Runtime/common/rest/rest-binary.cpp
|
||||
+++ VirtualBox-7.1.0/src/VBox/Runtime/common/rest/rest-binary.cpp
|
||||
@@ -706,3 +706,12 @@ void RTCRestBinaryResponse::receiveCompl
|
||||
AssertRC(rc);
|
||||
}
|
||||
|
||||
+// extpack was built with wrong -std=, add a redirect
|
||||
+extern "C" void DECLEXPORT_CLASS __attribute__((weak,
|
||||
+alias("_ZN21RTCRestBinaryResponse19setConsumerCallbackEPDoFiPS_PKvmjmmEPv"))) // T symbol that exists
|
||||
+ _ZN21RTCRestBinaryResponse19setConsumerCallbackEPFiPS_PKvmjmmEPv( // W symbol to make
|
||||
+ RTCRestBinaryResponse::PFNCONSUMER, void *);
|
||||
+extern "C" void DECLEXPORT_CLASS __attribute__((weak,
|
||||
+alias("_ZN22RTCRestBinaryParameter19setProducerCallbackEPDoFiPS_PvmmPmES1_m"))) // T
|
||||
+ _ZN22RTCRestBinaryParameter19setProducerCallbackEPFiPS_PvmmPmES1_m( // W
|
||||
+ RTCRestBinaryParameter::PFNPRODUCER, void *, uint64_t);
|
||||
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 1 23:30:00 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
|
||||
|
||||
- Edit cxx17.patch to make the Extension Pack work with our
|
||||
compiler flags and RT_NOEXCEPT choices. [boo#1231255]
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Sep 29 12:00:17 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user