virtualbox: fix build with libxml 2.12 + gcc 13

This commit is contained in:
K900 2024-01-13 10:49:50 +03:00
parent 0ee435ca57
commit 13a6f42687
3 changed files with 84 additions and 0 deletions

View file

@ -101,6 +101,8 @@ in stdenv.mkDerivation {
./qt-dependency-paths.patch
# https://github.com/NixOS/nixpkgs/issues/123851
./fix-audio-driver-loading.patch
./libxml-2.12.patch
./gcc-13.patch
];
postPatch = ''

View file

@ -0,0 +1,35 @@
diff --git a/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibRuntimeXF86.cpp b/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibRuntimeXF86.cpp
index 8a9d15c0..260ebc5c 100644
--- a/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibRuntimeXF86.cpp
+++ b/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibRuntimeXF86.cpp
@@ -46,6 +46,9 @@
#if defined(VBOX_VBGLR3_XFREE86)
extern "C" {
# define XFree86LOADER
+# ifdef RT_GNUC_PREREQ(13,0) /* cmath gets dragged in and the c++/13/cmath header is allergic to -ffreestanding. */
+# define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
+# endif
# include <xf86_ansic.h>
# undef size_t
}
diff --git a/src/libs/dxvk-native-1.9.2a/src/util/util_matrix.cpp b/src/libs/dxvk-native-1.9.2a/src/util/util_matrix.cpp
index 2c5e9314..64890169 100644
--- a/src/libs/dxvk-native-1.9.2a/src/util/util_matrix.cpp
+++ b/src/libs/dxvk-native-1.9.2a/src/util/util_matrix.cpp
@@ -1,3 +1,5 @@
+#include <cstdint>
+
#include "util_matrix.h"
namespace dxvk {
diff --git a/src/libs/dxvk-native-1.9.2a/src/util/util_vector.h b/src/libs/dxvk-native-1.9.2a/src/util/util_vector.h
index 77cdf294..9dcb4bf9 100644
--- a/src/libs/dxvk-native-1.9.2a/src/util/util_vector.h
+++ b/src/libs/dxvk-native-1.9.2a/src/util/util_vector.h
@@ -1,5 +1,6 @@
#pragma once
+#include <cstdint>
#include <iostream>
#include "util_bit.h"

View file

@ -0,0 +1,47 @@
diff --git a/include/iprt/cpp/xml.h b/include/iprt/cpp/xml.h
index 40975e86..7639c281 100644
--- a/include/iprt/cpp/xml.h
+++ b/include/iprt/cpp/xml.h
@@ -113,9 +113,9 @@ public:
class RT_DECL_CLASS XmlError : public RuntimeError
{
public:
- XmlError(xmlErrorPtr aErr);
+ XmlError(const xmlError *aErr);
- static char* Format(xmlErrorPtr aErr);
+ static char* Format(const xmlError *aErr);
};
// Logical errors
diff --git a/src/VBox/Runtime/r3/xml.cpp b/src/VBox/Runtime/r3/xml.cpp
index a6661760..b301a6c6 100644
--- a/src/VBox/Runtime/r3/xml.cpp
+++ b/src/VBox/Runtime/r3/xml.cpp
@@ -131,7 +131,7 @@ LogicError::LogicError(RT_SRC_POS_DECL)
RTStrFree(msg);
}
-XmlError::XmlError(xmlErrorPtr aErr)
+XmlError::XmlError(const xmlError *aErr)
{
if (!aErr)
throw EInvalidArg(RT_SRC_POS);
@@ -145,7 +145,7 @@ XmlError::XmlError(xmlErrorPtr aErr)
* Composes a single message for the given error. The caller must free the
* returned string using RTStrFree() when no more necessary.
*/
-/* static */ char *XmlError::Format(xmlErrorPtr aErr)
+/* static */ char *XmlError::Format(const xmlError *aErr)
{
const char *msg = aErr->message ? aErr->message : "<none>";
size_t msgLen = strlen(msg);
@@ -1856,7 +1856,7 @@ static void xmlParserBaseGenericError(void *pCtx, const char *pszMsg, ...) RT_NO
va_end(args);
}
-static void xmlParserBaseStructuredError(void *pCtx, xmlErrorPtr error) RT_NOTHROW_DEF
+static void xmlParserBaseStructuredError(void *pCtx, const xmlError *error) RT_NOTHROW_DEF
{
NOREF(pCtx);
/* we expect that there is always a trailing NL */