Date: Mon, 27 Feb 2023 14:58:44 -0800 From: Kevin Oberman <rkoberman@gmail.com> To: Brooks Davis <brooks@freebsd.org> Cc: "freebsd-emulation@freebsd.org" <emulation@freebsd.org> Subject: Re: virtualbon-ose-kmod build fails with 14-CURRENT and llvm15 Message-ID: <CAN6yY1sSD6i85Bc8K409wR4W%2Bperxk-A5OM5KQg8m5yaKfdXxQ@mail.gmail.com> In-Reply-To: <Y/z2AGoKZ5gtu0Ks@spindle.one-eyed-alien.net> References: <CAN6yY1td9cRtj3BzMw-eAHS4HCAv049w3rjOpmjq-fCpmfp2Pw@mail.gmail.com> <Y/z2AGoKZ5gtu0Ks@spindle.one-eyed-alien.net>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
On Mon, Feb 27, 2023 at 10:27 AM Brooks Davis <brooks@freebsd.org> wrote:
> On Sun, Feb 26, 2023 at 09:45:34AM -0800, Kevin Oberman wrote:
> > I updated my system yesterday. I then tried to rebuild
> virtualbox-ose-kmod.
> > This fails under llvm15. The same source code built successfully with
> > llvm14, so I assume that the code has a problem with 15. I suspect that
> 15
> > changed some default and declared this as an error, but may be "fixed"
> with
> > the proper build option.
> >
> > Here is the command and error that I see:
> >
> > cc -O2 -pipe -fno-strict-aliasing -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0
> > -DIN_SUP_R0 -DSUPDRV_WITH_RELEASE_LOGGER -DVBOX -DRT_WITH_VBOX -w
> > -DVBOX_WITH_HARDENING -DVBOX_WITH_64_BITS_GUESTS -DRT_ARCH_AMD64 -Werror
> > -D_KERNEL -DKLD_MODULE -nostdinc -Iinclude -I. -Ir0drv -include
> >
> /usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-6.1.36/out/freebsd.amd64/release/bin/src/vboxdrv/opt_global.h
> > -I. -I/usr/src/sys -I/usr/src/sys/contrib/ck/include -fno-common
> > -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer
> > -fdebug-prefix-map=./machine=/usr/src/sys/amd64/include
> > -fdebug-prefix-map=./x86=/usr/src/sys/x86/include
> > -fdebug-prefix-map=./i386=/usr/src/sys/i386/include -MD
> > -MF.depend.SUPDrv-freebsd.o -MTSUPDrv-freebsd.o -mcmodel=kernel
> > -mno-red-zone -mno-mmx -mno-sse -msoft-float
> > -fno-asynchronous-unwind-tables -ffreestanding -fwrapv -fstack-protector
> > -Wall -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes
> > -Wpointer-arith -Wcast-qual -Wundef -Wno-pointer-sign
> > -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs
> > -fdiagnostics-show-option -Wno-unknown-pragmas
> > -Wno-error=tautological-compare -Wno-error=empty-body
> > -Wno-error=parentheses-equality -Wno-error=unused-function
> > -Wno-error=pointer-sign -Wno-error=shift-negative-value
> > -Wno-address-of-packed-member -Wno-error=array-parameter
> > -Wno-error=deprecated-non-prototype -Wno-error=strict-prototypes
> > -Wno-error=unused-but-set-variable -Wno-format-zero-length -mno-aes
> > -mno-avx -std=iso9899:1999 -c
> >
> /usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-6.1.36/out/freebsd.amd64/release/bin/src/vboxdrv/freebsd/SUPDrv-freebsd.c
> > -o SUPDrv-freebsd.o
> >
> /usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-6.1.36/out/freebsd.amd64/release/bin/src/vboxdrv/freebsd/SUPDrv-freebsd.c:433:50:
> > error: incompatible pointer to integer conversion passing 'void *' to
> > parameter of type 'RTR3PTR' (aka 'unsigned long') [-Wint-conversion]
> > if (RT_FAILURE(RTR0MemUserCopyFrom(&Hdr, pvUser, sizeof(Hdr))))
> > ^~~~~~
> > include/iprt/errcore.h:99:58: note: expanded from macro 'RT_FAILURE'
> >
> > Any help appreciated. I really need virtualbox. I think I may force it to
> > build with llvm14, but I's prefer a fix to build with llvm15.
>
> Assuming the code works in practice, it should just be a matter of
> adding a cast (void *)(uintptr_t)pvUser.
>
> -- Brooks
>
Thanks to both of you. Fixing the code seems preferable to patching and
rebuilding llvm15, so I tried, but it made no difference, other than the
cast, but I may have truncated the error message too soon. Here is the
complete message after the patch:
/usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-6.1.36/out/freebsd.amd64/release/bin/src/vboxdrv/freebsd/SUPDrv-freebsd.c:433:50:
error: incompatible pointer to integer conversion passing 'void *' to
parameter of type 'RTR3PTR' (aka 'unsigned long') [-Wint-conversion]
if (RT_FAILURE(RTR0MemUserCopyFrom(&Hdr, (void *)(uintptr_t)pvUser,
sizeof(Hdr))))
^~~~~~~~~~~~~~~~~~~~~~~~~
include/iprt/errcore.h:99:58: note: expanded from macro 'RT_FAILURE'
#define RT_FAILURE(rc) ( RT_UNLIKELY(!RT_SUCCESS_NP(rc)) )
^~
include/iprt/errcore.h:80:38: note: expanded from macro 'RT_SUCCESS_NP'
# define RT_SUCCESS_NP(rc) ( (int)(rc) >= VINF_SUCCESS )
^~
include/iprt/cdefs.h:1826:53: note: expanded from macro 'RT_UNLIKELY'
# define RT_UNLIKELY(expr) __builtin_expect(!!(expr), 0)
^~~~
include/iprt/mem.h:756:56: note: passing argument to parameter 'R3PtrSrc'
here
RTR0DECL(int) RTR0MemUserCopyFrom(void *pvDst, RTR3PTR R3PtrSrc, size_t cb);
^
Please understand that I am not a C programmer. Looking at this leaves me
a bit lost.
--
Kevin Oberman, Part time kid herder and retired Network Engineer
E-mail: rkoberman@gmail.com
PGP Fingerprint: D03FB98AFA78E3B78C1694B318AB39EF1B055683
[-- Attachment #2 --]
<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif;font-size:small">On Mon, Feb 27, 2023 at 10:27 AM Brooks Davis <<a href="mailto:brooks@freebsd.org">brooks@freebsd.org</a>> wrote:</div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Sun, Feb 26, 2023 at 09:45:34AM -0800, Kevin Oberman wrote:<br>
> I updated my system yesterday. I then tried to rebuild virtualbox-ose-kmod.<br>
> This fails under llvm15. The same source code built successfully with<br>
> llvm14, so I assume that the code has a problem with 15. I suspect that 15<br>
> changed some default and declared this as an error, but may be "fixed" with<br>
> the proper build option.<br>
> <br>
> Here is the command and error that I see:<br>
> <br>
> cc -O2 -pipe -fno-strict-aliasing -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0<br>
> -DIN_SUP_R0 -DSUPDRV_WITH_RELEASE_LOGGER -DVBOX -DRT_WITH_VBOX -w<br>
> -DVBOX_WITH_HARDENING -DVBOX_WITH_64_BITS_GUESTS -DRT_ARCH_AMD64 -Werror<br>
> -D_KERNEL -DKLD_MODULE -nostdinc -Iinclude -I. -Ir0drv -include<br>
> /usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-6.1.36/out/freebsd.amd64/release/bin/src/vboxdrv/opt_global.h<br>
> -I. -I/usr/src/sys -I/usr/src/sys/contrib/ck/include -fno-common<br>
> -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer<br>
> -fdebug-prefix-map=./machine=/usr/src/sys/amd64/include<br>
> -fdebug-prefix-map=./x86=/usr/src/sys/x86/include<br>
> -fdebug-prefix-map=./i386=/usr/src/sys/i386/include -MD<br>
> -MF.depend.SUPDrv-freebsd.o -MTSUPDrv-freebsd.o -mcmodel=kernel<br>
> -mno-red-zone -mno-mmx -mno-sse -msoft-float<br>
> -fno-asynchronous-unwind-tables -ffreestanding -fwrapv -fstack-protector<br>
> -Wall -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes<br>
> -Wpointer-arith -Wcast-qual -Wundef -Wno-pointer-sign<br>
> -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs<br>
> -fdiagnostics-show-option -Wno-unknown-pragmas<br>
> -Wno-error=tautological-compare -Wno-error=empty-body<br>
> -Wno-error=parentheses-equality -Wno-error=unused-function<br>
> -Wno-error=pointer-sign -Wno-error=shift-negative-value<br>
> -Wno-address-of-packed-member -Wno-error=array-parameter<br>
> -Wno-error=deprecated-non-prototype -Wno-error=strict-prototypes<br>
> -Wno-error=unused-but-set-variable -Wno-format-zero-length -mno-aes<br>
> -mno-avx -std=iso9899:1999 -c<br>
> /usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-6.1.36/out/freebsd.amd64/release/bin/src/vboxdrv/freebsd/SUPDrv-freebsd.c<br>
> -o SUPDrv-freebsd.o<br>
> /usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-6.1.36/out/freebsd.amd64/release/bin/src/vboxdrv/freebsd/SUPDrv-freebsd.c:433:50:<br>
> error: incompatible pointer to integer conversion passing 'void *' to<br>
> parameter of type 'RTR3PTR' (aka 'unsigned long') [-Wint-conversion]<br>
> if (RT_FAILURE(RTR0MemUserCopyFrom(&Hdr, pvUser, sizeof(Hdr))))<br>
> ^~~~~~<br>
> include/iprt/errcore.h:99:58: note: expanded from macro 'RT_FAILURE'<br>
> <br>
> Any help appreciated. I really need virtualbox. I think I may force it to<br>
> build with llvm14, but I's prefer a fix to build with llvm15.<br>
<br>
Assuming the code works in practice, it should just be a matter of<br>
adding a cast (void *)(uintptr_t)pvUser.<br>
<br>
-- Brooks<br></blockquote><div> </div></div><div style="font-family:tahoma,sans-serif;font-size:small" class="gmail_default">Thanks to both of you. Fixing the code seems preferable to patching and rebuilding llvm15, so I tried, but it made no difference, other than the cast, but I may have truncated the error message too soon. Here is the complete message after the patch:</div><div style="font-family:tahoma,sans-serif;font-size:small" class="gmail_default">/usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-6.1.36/out/freebsd.amd64/release/bin/src/vboxdrv/freebsd/SUPDrv-freebsd.c:433:50: error: incompatible pointer to integer conversion passing 'void *' to parameter of type 'RTR3PTR' (aka 'unsigned long') [-Wint-conversion]<br> <span style="font-family:monospace"> if (RT_FAILURE(RTR0MemUserCopyFrom(&Hdr, (void *)(uintptr_t)pvUser, sizeof(Hdr))))<br> ^~~~~~~~~~~~~~~~~~~~~~~~~<br>include/iprt/errcore.h:99:58: note: expanded from macro 'RT_FAILURE'<br>#define RT_FAILURE(rc) ( RT_UNLIKELY(!RT_SUCCESS_NP(rc)) )<br> ^~<br>include/iprt/errcore.h:80:38: note: expanded from macro 'RT_SUCCESS_NP'<br># define RT_SUCCESS_NP(rc) ( (int)(rc) >= VINF_SUCCESS )<br> ^~<br>include/iprt/cdefs.h:1826:53: note: expanded from macro 'RT_UNLIKELY'<br># define RT_UNLIKELY(expr) __builtin_expect(!!(expr), 0)<br> ^~~~<br>include/iprt/mem.h:756:56: note: passing argument to parameter 'R3PtrSrc' here<br>RTR0DECL(int) RTR0MemUserCopyFrom(void *pvDst, RTR3PTR R3PtrSrc, size_t cb);</span></div><div style="font-family:tahoma,sans-serif;font-size:small" class="gmail_default"><span style="font-family:monospace"> ^<br></span></div><div style="font-family:tahoma,sans-serif;font-size:small" class="gmail_default"><br></div><div style="font-size:small" class="gmail_default"><span style="font-family:tahoma,sans-serif">Please understand that I am not a C programmer. Looking at this leaves me a bit lost. <br clear="all"></span></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr">Kevin Oberman, Part time kid herder and retired Network Engineer<br>E-mail: <a href="mailto:rkoberman@gmail.com" target="_blank">rkoberman@gmail.com</a><br></div><div>PGP Fingerprint: D03FB98AFA78E3B78C1694B318AB39EF1B055683</div></div></div></div></div></div></div></div></div>
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAN6yY1sSD6i85Bc8K409wR4W%2Bperxk-A5OM5KQg8m5yaKfdXxQ>
