Index: VirtualBox-5.1.22/configure =================================================================== --- VirtualBox-5.1.22.orig/configure +++ VirtualBox-5.1.22/configure @@ -447,8 +447,8 @@ check_gcc() -o \( $cc_maj -eq 4 -a $cc_min -gt 9 \) \ -o \( $cc_maj -eq 5 -a $cc_min -gt 9 \) \ -o \( $cc_maj -eq 6 -a $cc_min -gt 9 \) \ - -o $cc_maj -gt 6 ]; then - log_failure "gcc version $cc_maj.$cc_min found, expected gcc 4.x, gcc 5.x or gcc 6.x" + -o $cc_maj -gt 7 ]; then + log_failure "gcc version $cc_maj.$cc_min found, expected gcc 4.x, gcc 5.x, gcc 6.x or gcc7.x" fail really else log_success "found version $cc_ver" Index: VirtualBox-5.1.22/src/VBox/Devices/PC/ipxe/src/arch/i386/interface/pxe/pxe_preboot.c =================================================================== --- VirtualBox-5.1.22.orig/src/VBox/Devices/PC/ipxe/src/arch/i386/interface/pxe/pxe_preboot.c +++ VirtualBox-5.1.22/src/VBox/Devices/PC/ipxe/src/arch/i386/interface/pxe/pxe_preboot.c @@ -262,6 +262,7 @@ pxenv_restart_tftp ( struct s_PXENV_TFTP /* Restart NBP */ rmlongjmp ( pxe_restart_nbp, PXENV_RESTART_TFTP ); + return 0; } /* PXENV_START_UNDI Index: VirtualBox-5.1.22/src/VBox/Additions/common/VBoxGuest/linux/files_vboxguest =================================================================== --- VirtualBox-5.1.22.orig/src/VBox/Additions/common/VBoxGuest/linux/files_vboxguest +++ VirtualBox-5.1.22/src/VBox/Additions/common/VBoxGuest/linux/files_vboxguest @@ -54,6 +54,7 @@ FILES_VBOXGUEST_NOBIN=" \ ${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \ ${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \ ${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \ + ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \ ${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \ ${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \ ${PATH_ROOT}/include/iprt/x86.h=>include/iprt/x86.h \ @@ -113,6 +114,7 @@ FILES_VBOXGUEST_NOBIN=" \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>common/math/gcc/qdivrem.c \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>common/math/gcc/quad.h \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>common/math/gcc/udivdi3.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>common/math/gcc/udivmoddi4.c \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>common/math/gcc/umoddi3.c \ ${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg1Weak.cpp=>common/misc/RTAssertMsg1Weak.c \ ${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg2.cpp=>common/misc/RTAssertMsg2.c \ Index: VirtualBox-5.1.22/src/VBox/Additions/common/VBoxGuest/linux/Makefile =================================================================== --- VirtualBox-5.1.22.orig/src/VBox/Additions/common/VBoxGuest/linux/Makefile +++ VirtualBox-5.1.22/src/VBox/Additions/common/VBoxGuest/linux/Makefile @@ -100,6 +100,7 @@ MOD_OBJS += \ common/math/gcc/divdi3.o \ common/math/gcc/moddi3.o \ common/math/gcc/udivdi3.o \ + common/math/gcc/udivmoddi4.o \ common/math/gcc/umoddi3.o \ common/math/gcc/qdivrem.o endif Index: VirtualBox-5.1.22/src/VBox/Additions/linux/sharedfolders/files_vboxsf =================================================================== --- VirtualBox-5.1.22.orig/src/VBox/Additions/linux/sharedfolders/files_vboxsf +++ VirtualBox-5.1.22/src/VBox/Additions/linux/sharedfolders/files_vboxsf @@ -38,6 +38,7 @@ FILES_VBOXSF_NOBIN=" \ ${PATH_ROOT}/include/iprt/string.h=>include/iprt/string.h \ ${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \ ${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \ + ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \ ${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \ ${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \ ${PATH_ROOT}/include/VBox/cdefs.h=>include/VBox/cdefs.h \ @@ -73,6 +74,7 @@ FILES_VBOXSF_NOBIN=" \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>qdivrem.c \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>quad.h \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>udivdi3.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>udivmoddi4.c \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>umoddi3.c \ ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h=>r0drv/linux/the-linux-kernel.h \ ${PATH_ROOT}/src/VBox/Additions/linux/sharedfolders/Makefile.module=>Makefile \ Index: VirtualBox-5.1.22/src/VBox/Additions/linux/sharedfolders/Makefile.module =================================================================== --- VirtualBox-5.1.22.orig/src/VBox/Additions/linux/sharedfolders/Makefile.module +++ VirtualBox-5.1.22/src/VBox/Additions/linux/sharedfolders/Makefile.module @@ -38,6 +38,7 @@ MOD_OBJS += \ divdi3.o \ moddi3.o \ udivdi3.o \ + udivmoddi4.o \ umoddi3.o \ qdivrem.o endif Index: VirtualBox-5.1.22/src/VBox/HostDrivers/Support/linux/files_vboxdrv =================================================================== --- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/Support/linux/files_vboxdrv +++ VirtualBox-5.1.22/src/VBox/HostDrivers/Support/linux/files_vboxdrv @@ -65,6 +65,7 @@ FILES_VBOXDRV_NOBIN=" \ ${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \ ${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \ ${PATH_ROOT}/include/iprt/uint128.h=>include/iprt/uint128.h \ + ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \ ${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \ ${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \ ${PATH_ROOT}/include/iprt/uuid.h=>include/iprt/uuid.h \ @@ -109,6 +110,7 @@ FILES_VBOXDRV_NOBIN=" \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>math/gcc/qdivrem.c \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>math/gcc/quad.h \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>math/gcc/udivdi3.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>math/gcc/udivmoddi4.c \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>math/gcc/umoddi3.c \ ${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg1Weak.cpp=>common/misc/RTAssertMsg1Weak.c \ ${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg2.cpp=>common/misc/RTAssertMsg2.c \ Index: VirtualBox-5.1.22/src/VBox/HostDrivers/Support/linux/Makefile =================================================================== --- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/Support/linux/Makefile +++ VirtualBox-5.1.22/src/VBox/HostDrivers/Support/linux/Makefile @@ -158,6 +158,7 @@ OBJS += math/gcc/divdi3.o \ math/gcc/moddi3.o \ math/gcc/qdivrem.o \ math/gcc/udivdi3.o \ + math/gcc/udivmoddi4.o \ math/gcc/divdi3.o \ math/gcc/umoddi3.o endif Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetAdp/linux/files_vboxnetadp =================================================================== --- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxNetAdp/linux/files_vboxnetadp +++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetAdp/linux/files_vboxnetadp @@ -49,6 +49,7 @@ VBOX_VBOXNETADP_SOURCES=" \ ${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \ ${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \ ${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \ + ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \ ${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \ ${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \ ${PATH_ROOT}/include/iprt/uuid.h=>include/iprt/uuid.h \ @@ -70,6 +71,7 @@ VBOX_VBOXNETADP_SOURCES=" \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>math/gcc/qdivrem.c \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>math/gcc/quad.h \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>math/gcc/udivdi3.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>math/gcc/udivmoddi4.c \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>math/gcc/umoddi3.c \ ${PATH_ROOT}/src/VBox/Runtime/common/string/strformat.cpp=>common/string/strformat.c \ ${PATH_ROOT}/src/VBox/Runtime/common/string/strformatrt.cpp=>common/string/strformatrt.c \ Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile =================================================================== --- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile +++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile @@ -68,6 +68,7 @@ OBJS += math/gcc/divdi3.o \ math/gcc/moddi3.o \ math/gcc/qdivrem.o \ math/gcc/udivdi3.o \ + math/gcc/udivmoddi4.o \ math/gcc/divdi3.o \ math/gcc/umoddi3.o endif Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetFlt/linux/files_vboxnetflt =================================================================== --- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxNetFlt/linux/files_vboxnetflt +++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetFlt/linux/files_vboxnetflt @@ -49,6 +49,7 @@ VBOX_VBOXNETFLT_SOURCES=" \ ${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \ ${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \ ${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \ + ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \ ${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \ ${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \ ${PATH_ROOT}/include/iprt/uuid.h=>include/iprt/uuid.h \ @@ -77,6 +78,7 @@ VBOX_VBOXNETFLT_SOURCES=" \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>math/gcc/qdivrem.c \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>math/gcc/quad.h \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>math/gcc/udivdi3.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>math/gcc/udivmoddi4.c \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>math/gcc/umoddi3.c \ ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h=>r0drv/linux/the-linux-kernel.h \ ${PATH_OUT}/version-generated.h=>version-generated.h \ Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetFlt/linux/Makefile =================================================================== --- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxNetFlt/linux/Makefile +++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetFlt/linux/Makefile @@ -72,6 +72,7 @@ OBJS += math/gcc/divdi3.o \ math/gcc/moddi3.o \ math/gcc/qdivrem.o \ math/gcc/udivdi3.o \ + math/gcc/udivmoddi4.o \ math/gcc/divdi3.o \ math/gcc/umoddi3.o endif Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxPci/linux/files_vboxpci =================================================================== --- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxPci/linux/files_vboxpci +++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxPci/linux/files_vboxpci @@ -48,6 +48,7 @@ VBOX_VBOXPCI_SOURCES=" \ ${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \ ${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \ ${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \ + ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \ ${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \ ${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \ ${PATH_ROOT}/include/iprt/uuid.h=>include/iprt/uuid.h \ @@ -75,6 +76,7 @@ VBOX_VBOXPCI_SOURCES=" \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>math/gcc/qdivrem.c \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>math/gcc/quad.h \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>math/gcc/udivdi3.c \ + ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>math/gcc/udivmoddi4.c \ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>math/gcc/umoddi3.c \ ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h=>r0drv/linux/the-linux-kernel.h \ ${PATH_OUT}/version-generated.h=>version-generated.h \ Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxPci/linux/Makefile =================================================================== --- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxPci/linux/Makefile +++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxPci/linux/Makefile @@ -72,6 +72,7 @@ OBJS += math/gcc/divdi3.o \ math/gcc/moddi3.o \ math/gcc/qdivrem.o \ math/gcc/udivdi3.o \ + math/gcc/udivmoddi4.o \ math/gcc/divdi3.o \ math/gcc/umoddi3.o endif Index: VirtualBox-5.1.22/src/VBox/Runtime/common/math/gcc/udivmoddi4.c =================================================================== --- /dev/null +++ VirtualBox-5.1.22/src/VBox/Runtime/common/math/gcc/udivmoddi4.c @@ -0,0 +1,51 @@ +/* $Id$ */ +/** @file + * IPRT - __udivmoddi4 implementation + */ + +/* + * Copyright (C) 2006-2016 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#include +#include + +/** + * __udivmoddi4() implementation to satisfy external references from 32-bit + * code generated by gcc-7 or later. + * + * @param u64A The divident value. + * @param u64B The divisor value. + * @param pu64R A pointer to the reminder. May be NULL. + * @returns u64A / u64B + */ +uint64_t __udivmoddi4(uint64_t u64A, uint64_t u64B, uint64_t *pu64R) +{ + RTUINT64U Divident; + RTUINT64U Divisor; + RTUINT64U Quotient; + RTUINT64U Reminder; + Divident.u = u64A; + Divisor.u = u64B; + RTUInt64DivRem(&Quotient, &Reminder, &Divident, &Divisor); + if (pu64R) + *pu64R = Reminder.u; + return Quotient.u; +}