VirtualBox

Ticket #18917 (closed defect: fixed)

Opened 2 months ago

Last modified 2 months ago

VBox 6.0.10 GAs fail to compile on Red Hat/CentOS/OL 7.7; also Red Hat 8.1 Beta => fixed in SVN/6.0.x/5.2.x

Reported by: paulson Owned by: paulson
Component: guest additions Version: VirtualBox 6.0.12
Keywords: Cc:
Guest type: Linux Host type: all

Description

As discussed in the forums:

Guest Additions 6.0.10 will not compile in RHEL 7.7  https://forums.virtualbox.org/viewtopic.php?f=3&t=94218&start=15

The VirtualBox Guest Additions require further updates to accommodate the latest kernel changes specific to Red Hat 7.7 and 8.1 Beta.

Change History

comment:1 Changed 2 months ago by paulson

  • Status changed from new to accepted

comment:2 Changed 2 months ago by paulson

The Guest Additions build failures as seen on OL 7.7:

=== Building 'vboxvideo' module ===
make[1]: Entering directory `/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo'
make V= CONFIG_MODULE_SIG= -C /lib/modules/3.10.0-1062.1.1.el7.x86_64/build M=/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo SRCROOT=/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo -j1 modules
make[2]: Entering directory `/usr/src/kernels/3.10.0-1062.1.1.el7.x86_64'
  CC [M]  /opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/hgsmi_base.o
In file included from g/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/hgsmi_base.c:27:0g:
g/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_drv.h:187:31:g error: field ‘mem_global_ref’ has incomplete type
   struct drm_global_reference mem_global_ref;
                               ^
g/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_drv.h:188:28:g error: field ‘bo_global_ref’ has incomplete type
   struct ttm_bo_global_ref bo_global_ref;
                            ^
make[3]: *** [/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/hgsmi_base.o] Error 1
make[2]: *** [_module_/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo] Error 2
make[2]: Leaving directory `/usr/src/kernels/3.10.0-1062.1.1.el7.x86_64'
make[1]: *** [vboxvideo] Error 2
make[1]: Leaving directory `/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo'
make: *** [vboxvideo] Error 1

  CC [M]  /opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_main.o
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_main.c:605:13: error: static declaration of ‘ttm_bo_put’ follows non-static declaration
 static void ttm_bo_put(struct ttm_buffer_object *bo)
             ^
In file included from /opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_drv.h:108:0,
                 from /opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_main.c:31:
include/drm/ttm/ttm_bo_api.h:387:6: note: previous declaration of ‘ttm_bo_put’ was here
 void ttm_bo_put(struct ttm_buffer_object *bo);
      ^
make[3]: *** [/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_main.o] Error 1
make[2]: *** [_module_/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo] Error 2

  CC [M]  /opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_mode.o
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_mode.c: In function ‘vbox_set_edid’:
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_mode.c:542:2: error: implicit declaration of function ‘drm_mode_connector_update_edid_property’ [-Werror=implicit-function-declaration]
  drm_mode_connector_update_edid_property(connector, (struct edid *)edid);
  ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_mode.c: In function ‘vbox_connector_init’:
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_mode.c:717:2: error: implicit declaration of function ‘drm_mode_connector_attach_encoder’ [-Werror=implicit-function-declaration]
  drm_mode_connector_attach_encoder(connector, encoder);
  ^
cc1: some warnings being treated as errors
make[3]: *** [/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_mode.o] Error 1
make[2]: *** [_module_/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo] Error 2

  CC [M]  /opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.o
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:46:44:warning: ‘struct drm_global_reference’ declared inside parameter list [enabled by default]
 static int vbox_ttm_mem_global_init(struct drm_global_reference *ref)
                                            ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:46:44:warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c: In function ‘vbox_ttm_mem_global_init’:
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:48:32:error: dereferencing pointer to incomplete type
  return ttm_mem_global_init(ref->object);
                                ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c: At top level:
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:51:48:warning: ‘struct drm_global_reference’ declared inside parameter list [enabled by default]
 static void vbox_ttm_mem_global_release(struct drm_global_reference *ref)
                                                ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c: In function ‘vbox_ttm_mem_global_release’:
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:53:28:error: dereferencing pointer to incomplete type
  ttm_mem_global_release(ref->object);
                            ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c: In function ‘vbox_ttm_global_init’:
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:65:25:error: ‘struct <anonymous>’ has no member named ‘mem_global_ref’
  global_ref = &vbox->ttm.mem_global_ref;
                         ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:66:12:error: dereferencing pointer to incomplete type
  global_ref->global_type = DRM_GLOBAL_TTM_MEM;
            ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:66:28:error: ‘DRM_GLOBAL_TTM_MEM’ undeclared (first use in this function)
  global_ref->global_type = DRM_GLOBAL_TTM_MEM;
                            ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:66:28:note: each undeclared identifier is reported only once for each function it appears in
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:67:12:error: dereferencing pointer to incomplete type
  global_ref->size = sizeof(struct ttm_mem_global);
            ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:68:12:error: dereferencing pointer to incomplete type
  global_ref->init = &vbox_ttm_mem_global_init;
            ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:69:12:error: dereferencing pointer to incomplete type
  global_ref->release = &vbox_ttm_mem_global_release;
            ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:70:2:error: implicit declaration of function ‘drm_global_item_ref’ [-Werror=implicit-function-declaration]
  ret = drm_global_item_ref(global_ref);
  ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:76:11:error: ‘struct <anonymous>’ has no member named ‘bo_global_ref’
  vbox->ttm.bo_global_ref.mem_glob = vbox->ttm.mem_global_ref.object;
           ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:76:46:error: ‘struct <anonymous>’ has no member named ‘mem_global_ref’
  vbox->ttm.bo_global_ref.mem_glob = vbox->ttm.mem_global_ref.object;
                                              ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:78:25:error: ‘struct <anonymous>’ has no member named ‘bo_global_ref’
  global_ref = &vbox->ttm.bo_global_ref.ref;
                         ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:79:12:error: dereferencing pointer to incomplete type
  global_ref->global_type = DRM_GLOBAL_TTM_BO;
            ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:79:28:error: ‘DRM_GLOBAL_TTM_BO’ undeclared (first use in this function)
  global_ref->global_type = DRM_GLOBAL_TTM_BO;
                            ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:80:12:error: dereferencing pointer to incomplete type
  global_ref->size = sizeof(struct ttm_bo_global);
            ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:81:12:error: dereferencing pointer to incomplete type
  global_ref->init = &ttm_bo_global_init;
            ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:81:22:error: ‘ttm_bo_global_init’ undeclared (first use in this function)
  global_ref->init = &ttm_bo_global_init;
                      ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:82:12:error: dereferencing pointer to incomplete type
  global_ref->release = &ttm_bo_global_release;
            ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:82:25:error: ‘ttm_bo_global_release’ undeclared (first use in this function)
  global_ref->release = &ttm_bo_global_release;
                         ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:88:3:error: implicit declaration of function ‘drm_global_item_unref’ [-Werror=implicit-function-declaration]
   drm_global_item_unref(&vbox->ttm.mem_global_ref);
   ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:88:35:error: ‘struct <anonymous>’ has no member named ‘mem_global_ref’
   drm_global_item_unref(&vbox->ttm.mem_global_ref);
                                   ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c: In function ‘vbox_ttm_global_release’:
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:1:34:error: ‘struct <anonymous>’ has no member named ‘bo_global_ref’
  drm_global_item_unref(&vbox->ttm.bo_global_ref.ref);
                                  ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:102:34:error: ‘struct <anonymous>’ has no member named ‘mem_global_ref’
  drm_global_item_unref(&vbox->ttm.mem_global_ref);
                                  ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c: In function ‘vbox_mm_init’:
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:303:15:error: ‘struct <anonymous>’ has no member named ‘bo_global_ref’
      vbox->ttm.bo_global_ref.ref.object,
               ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:310:6:warning: passing argument 3 of ‘ttm_bo_device_init’ from incompatible pointer type [enabled by default]
      DRM_FILE_PAGE_OFFSET, true);
      ^
In file included from /opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_drv.h:109:0,
                 from /opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:31:
include/drm/ttm/ttm_bo_driver.h:587:5:note: expected ‘struct address_space *’ but argument is of type ‘struct ttm_bo_driver *’
 int ttm_bo_device_init(struct ttm_bo_device *bdev,
     ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:310:6:warning: passing argument 4 of ‘ttm_bo_device_init’ makes integer from pointer without a cast [enabled by default]
      DRM_FILE_PAGE_OFFSET, true);
      ^
In file included from /opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_drv.h:109:0,
                 from /opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:31:
include/drm/ttm/ttm_bo_driver.h:587:5:note: expected ‘uint64_t’ but argument is of type ‘struct address_space *’
 int ttm_bo_device_init(struct ttm_bo_device *bdev,
     ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:310:6:error: too many arguments to function ‘ttm_bo_device_init’
      DRM_FILE_PAGE_OFFSET, true);
      ^
In file included from /opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_drv.h:109:0,
                 from /opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.c:31:
include/drm/ttm/ttm_bo_driver.h:587:5:note: declared here
 int ttm_bo_device_init(struct ttm_bo_device *bdev,
     ^
cc1: some warnings being treated as errors
make[3]: *** [/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_ttm.o] Error 1
make[2]: *** [_module_/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo] Error 2
make[2]: Leaving directory `/usr/src/kernels/3.10.0-1062.1.1.el7.x86_64'
make[1]: *** [vboxvideo] Error 2
make[1]: Leaving directory `/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo'
make: *** [vboxvideo] Error 1

comment:3 Changed 2 months ago by paulson

The additional errors from Red Hat 8.1 Beta are primarily as follows:

=== Building 'vboxguest' module ===
make[1]: Entering directory '/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxguest'
make V= CONFIG_MODULE_SIG= -C /lib/modules/4.18.0-107.el8.x86_64/build M=/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxguest SRCROOT=/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxguest -j4 modules
make[2]: Entering directory '/usr/src/kernels/4.18.0-107.el8.x86_64'
  CC [M]  /opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxguest/combined-os-specific.o
In file included from /opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxguest/combined-os-specific.c:34:
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxguest/r0drv/linux/memuserkernel-r0drv-linux.c: In function ‘VBoxGuest_RTR0MemUserIsValidAddr’:
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxguest/r0drv/linux/memuserkernel-r0drv-linux.c:72:55: error: macro "access_ok" passed 3 arguments, but takes just 2
     bool fRc = access_ok(VERIFY_READ, (void *)R3Ptr, 1);
                                                       ^
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxguest/r0drv/linux/memuserkernel-r0drv-linux.c:72:16: error: ‘access_ok’ undeclared (first use in this function)
     bool fRc = access_ok(VERIFY_READ, (void *)R3Ptr, 1);
                ^~~~~~~~~

  CC [M]  /opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_mode.o
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_drv.c: At top level:
/opt/VBoxGuestAdditions-6.0.97/src/vboxguest-6.0.97/vboxvideo/vbox_drv.c:307:6: error: ‘DRIVER_IRQ_SHARED’ undeclared here (not in a function); did you mean ‘TIMER_IRQSAFE’?
 #endif
      ^
      TIMER_IRQSAFE

comment:4 Changed 2 months ago by paulson

  • Status changed from accepted to closed
  • Resolution set to fixed
  • Summary changed from VBox 6.0.10 GAs fail to compile on Red Hat/CentOS/OL 7.7; also Red Hat 8.1 Beta to VBox 6.0.10 GAs fail to compile on Red Hat/CentOS/OL 7.7; also Red Hat 8.1 Beta => fixed in SVN/6.0.x/5.2.x

This has been fixed in trunk and the fix has also been backported to VirtualBox 6.0.x (x > 12) and 5.2.x (x > 32). The fix is also available in any 6.0.x Testbuilds with a revision >= r133264 or any 5.2.x Testbuilds with a revision >= r133285.

Note: See TracTickets for help on using tickets.

www.oracle.com
ContactPrivacy policyTerms of Use