VirtualBox

Opened 4 years ago

Last modified 4 years ago

#19287 new defect

gcc10 problems

Reported by: Frank Batschulat (Oracle) Owned by:
Component: other Version: VirtualBox 6.1.2
Keywords: gcc10 Cc:
Guest type: other Host type: other

Description (last modified by Frank Batschulat (Oracle))

We've got reports of probelsm compiling the vbox code base with the newest GCC version 10. See below:

https://www.virtualbox.org/pipermail/vbox-dev/2020-February/015411.html

From: "Sérgio Basto" <>
To: vbox-dev@virtualbox.org
Cc:
Subject: [vbox-dev] problem with new GCC 10
Date: Wed, 05 Feb 2020 02:06:27 +0100

Hi,
Now seems to me, GCC10 forbids multiple definitions , I got at least  3  
packages with this
problem (of multiple definitions [1])  but in Virtual Box we have thousand  
of lines this these [2]

Best regards,

[1]
https://github.com/telmich/gpm/pull/37

[2]
ld:  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/relocate.o:(.bss+0x0):  
multiple definition of `__licence_public_domain';  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/basemem_packet.o:(.bss+0x0):  
first defined here
ld:  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/relocate.o:(.bss+0x1):  
multiple definition of `__licence_gpl2_only';  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/basemem_packet.o:(.bss+0x1):  
first defined here
ld:  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/relocate.o:(.bss+0x2):  
multiple definition of `__licence_gpl2_or_later';  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/basemem_packet.o:(.bss+0x2):  
first defined here
ld:  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/timer2.o:(.bss+0x0):  
multiple definition of `__licence_public_domain';  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/basemem_packet.o:(.bss+0x0):  
first defined here
ld:  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/timer2.o:(.bss+0x1):  
multiple definition of `__licence_gpl2_only';  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/basemem_packet.o:(.bss+0x1):  
first defined here
ld:  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/timer2.o:(.bss+0x2):  
multiple definition of `__licence_gpl2_or_later';  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/basemem_packet.o:(.bss+0x2):  
first defined here
ld:  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/firmware/pcbios/basemem.o:(.bss+0x0):  
multiple definition of `__licence_public_domain';  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/basemem_packet.o:(.bss+0x0):  
first defined here
ld:  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/firmware/pcbios/basemem.o:(.bss+0x1):  
multiple definition of `__licence_gpl2_only';  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/basemem_packet.o:(.bss+0x1):  
first defined here
ld:  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/firmware/pcbios/basemem.o:(.bss+0x2):  
multiple definition of `__licence_gpl2_or_later';  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/basemem_packet.o:(.bss+0x2):  
first defined here
ld:  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/firmwarel2_or_later';  
/builddir/build/BUILD/VirtualBox-6.1.2/obj/obj/iPxeBaseBin/src/arch/i386/core/basemem_packet.o:(.bss+0x2):  
first defined here

refer to:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85678
https://gcc.gnu.org/gcc-10/porting_to.html#common

THe complains are about:

trunk/src/VBox/Devices/PC/ipxe/src/include/compiler.h

653 #define FILE_LICENCE_PUBLIC_DOMAIN \
654         PROVIDE_SYMBOL ( __licence_public_domain )

662 #define FILE_LICENCE_GPL2_OR_LATER \
663         PROVIDE_SYMBOL ( __licence_gpl2_or_later )

671 #define FILE_LICENCE_GPL2_ONLY \
672         PROVIDE_SYMBOL ( __licence_gpl2_only )

683 #define FILE_LICENCE_GPL_ANY \
684         PROVIDE_SYMBOL ( __licence_gpl_any )

[...]
 60 /** Provide a symbol within this object file */
 61 #ifdef ASSEMBLY
 62 #define PROVIDE_SYMBOL( _sym )                          \
 63         .globl  _sym ;                                  \
 64         .comm   _sym, 0
 65 #else /* ASSEMBLY */
 66 #define PROVIDE_SYMBOL( _sym )                          \
 67         char _sym[0]
 68 #endif /* ASSEMBLY */

Change History (3)

comment:1 by Frank Batschulat (Oracle), 4 years ago

Description: modified (diff)

comment:2 by Frank Batschulat (Oracle), 4 years ago

fwiw, following changeset may fix it:

r135995 set -fcommon

trunk/src/VBox/Devices/PC/ipxe/Makefile.kmk

112  TEMPLATE_iPxe_CFLAGS  = \
113         -fno-pie \
114         -fcommon \

comment:3 by sergiomb, 4 years ago

Thanks it worked

Note: See TracTickets for help on using tickets.

© 2023 Oracle
ContactPrivacy policyTerms of Use