Problem compiling emulators/virtualbox-ose-kmod 4.1.8_2

Mike Clarke jmc-freebsd2 at milibyte.co.uk
Wed Mar 21 23:13:43 UTC 2012


On Wednesday 21 March 2012, Lowell Gilbert wrote:

> > /data1/tmp/usr/ports/emulators/virtualbox-ose-kmod/work/VirtualBox-
> >4.1.10/out/freebsd.x86/                                            
> >                                            
> > release/bin/src/vboxdrv/r0drv/freebsd/memobj-r0drv-freebsd.c:405:
> > error: invalid type argument of '->'
> > *** Error code 1

> That line is supposed to be an assignment in between a VM_OBJECT_LOCK
> and the corresponding VM_OBJECT_UNLOCK. Can you confirm that the
> patches cause this to be the case?

Yes, that's where it is.

    401         if (fContiguous)
    402         {
    403             Assert(enmType == RTR0MEMOBJTYPE_PHYS);
    404             VM_OBJECT_LOCK(pMemFreeBSD->pObject);
    405             pMemFreeBSD->Core.u.Phys.PhysBase = 
VM_PAGE_TO_PHYS(vm_page_find_least(pMemFreeBSD->pObject, 0));
    406             VM_OBJECT_UNLOCK(pMemFreeBSD->pObject);
    407             pMemFreeBSD->Core.u.Phys.fAllocated = true;
    408         }

> It is a little tricky for me to 
> edit files in an i386 environment, but the next step is to track down
> the definition of PRTR0MEMOBJFREEBSD, assuming that is the
> dereference giving the error on your system, and determining whether
> it ought to have the structure entry being dereferenced.

This takes me out of my depth in my very limited experience of C but would it be 
this, also in memobj-r0drv-freebsd.c:

     50 /**
     51  * The FreeBSD version of the memory object structure.
     52  */
     53 typedef struct RTR0MEMOBJFREEBSD
     54 {
     55     /** The core structure. */
     56     RTR0MEMOBJINTERNAL  Core;
     57     /** Type dependent data */
     58     /** The VM object associated with the allocation. */
     59     vm_object_t         pObject;
     60 } RTR0MEMOBJFREEBSD, *PRTR0MEMOBJFREEBSD;

and then:

    109     PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)pMem;

[snip]

> You might want to try updating your system or trying the -legacy
> version of the port.

Version 4.1.8_1 seems to be working OK for me so I'll probably stick with that for 
the time being unless a fix turns up before I upgrade to 9.0-RELEASE which I'm 
planning to do shortly.

-- 
Mike Clarke


More information about the freebsd-questions mailing list