Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 760887 - app-emulation/virtualbox-modules-6.0.24-r2: missing /usr/src/linux/include/linux/compiler-gcc9.h
Summary: app-emulation/virtualbox-modules-6.0.24-r2: missing /usr/src/linux/include/li...
Status: RESOLVED WORKSFORME
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: AMD64 Linux
: Normal normal (vote)
Assignee: Lars Wendler (Polynomial-C) (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-12-20 14:14 UTC by Matthias Hanft
Modified: 2021-04-30 07:20 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Matthias Hanft 2020-12-20 14:14:06 UTC
When emerging app-emulation/virtualbox-modules, compilation terminates like this:

In file included from /usr/src/linux-4.1.12-gentoo/include/linux/compiler.h:54,
                 from /var/tmp/portage/app-emulation/virtualbox-modules-6.0.24-r2/work/vboxdrv/include/iprt/types. h:150,
                 from /var/tmp/portage/app-emulation/virtualbox-modules-6.0.24-r2/work/vboxdrv/include/VBox/types. h:33,
                 from /var/tmp/portage/app-emulation/virtualbox-modules-6.0.24-r2/work/vboxdrv/linux/../SUPDrvInte rnal.h:38,
                 from /var/tmp/portage/app-emulation/virtualbox-modules-6.0.24-r2/work/vboxdrv/linux/SUPDrv-linux. c:32:
/usr/src/linux-4.1.12-gentoo/include/linux/compiler-gcc.h:121:1: fatal error: linux/compiler-gcc9.h: No such file  or directory
  121 | #include gcc_header(__GNUC__)
      | ^~~~
compilation terminated.

In /usr/src/linux/include/linux/compiler*.h, there is only

compiler-clang.h  compiler-gcc3.h  compiler-gcc4.h  compiler-gcc5.h  compiler-gcc.h  compiler.h  compiler-intel.h

compiler.h includes compiler-gcc.h which tries to include
#include gcc_header(__GNUC__)
which would be compiler-gcc9.h which doesn't exist.

Reproducible: Always

Steps to Reproduce:
emerge virtualbox
Actual Results:  
/usr/src/linux-4.1.12-gentoo/include/linux/compiler-gcc.h:121:1: fatal error: linux/compiler-gcc9.h: No such file  or directory

Expected Results:  
compiling virtualbox-modules

Portage 3.0.9 (python 3.7.9-final-0, default/linux/amd64/17.1/hardened, gcc-9.3.0, glibc-2.32-r3, 4.1.12-gentoo x86_64)
=================================================================
System uname: Linux-4.1.12-gentoo-x86_64-Intel-R-_Xeon-R-_CPU_E3-1231_v3_@_3.40GHz-with-gentoo-2.7
KiB Mem:    32906432 total,    727568 free
KiB Swap:   16777212 total,  16763180 free
Timestamp of repository gentoo: Sat, 19 Dec 2020 08:00:01 +0000
Head commit of repository gentoo: d6aafa248d9eea07392ff465b837bddc439aebe6
sh bash 5.0_p18
ld GNU ld (Gentoo 2.34 p6) 2.34.0
app-shells/bash:          5.0_p18::gentoo
dev-java/java-config:     2.3.1::gentoo
dev-lang/perl:            5.30.3::gentoo
dev-lang/python:          2.7.18-r4::gentoo, 3.6.12::gentoo, 3.7.9::gentoo, 3.8.6::gentoo, 3.9.0::gentoo
dev-util/cmake:           3.17.4-r1::gentoo
dev-util/pkgconfig:       0.29.2::gentoo
sys-apps/baselayout:      2.7::gentoo
sys-apps/openrc:          0.42.1::gentoo
sys-apps/sandbox:         2.20::gentoo
sys-devel/autoconf:       2.69-r5::gentoo
sys-devel/automake:       1.15.1-r2::gentoo, 1.16.2-r1::gentoo
sys-devel/binutils:       2.34-r2::gentoo
sys-devel/gcc:            9.3.0-r2::gentoo
sys-devel/gcc-config:     2.3.2-r1::gentoo
sys-devel/libtool:        2.4.6-r6::gentoo
sys-devel/make:           4.2.1-r4::gentoo
sys-kernel/linux-headers: 5.4-r1::gentoo (virtual/os-headers)
sys-libs/glibc:           2.32-r3::gentoo
Repositories:

gentoo
    location: /usr/portage
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: -1000
    sync-rsync-verify-metamanifest: yes
    sync-rsync-extra-opts:
    sync-rsync-verify-jobs: 1
    sync-rsync-verify-max-age: 24

local_overlay
    location: /usr/local/portage
    masters: gentoo
    priority: 0

vdr-devel
    location: /var/lib/layman/vdr-devel
    masters: gentoo
    priority: 50

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="@FREE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=core-avx2 -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /etc/teamspeak3-server/ts3server.ini /etc/teamspeak3-server/ts3server_mariadb.ini /etc/teamspeak3-server/tsdns_settings.ini /usr/share/gnupg/qualified.txt /var/bind"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php7.3/ext-active/ /etc/php/apache2-php7.4/ext-active/ /etc/php/cgi-php7.3/ext-active/ /etc/php/cgi-php7.4/ext-active/ /etc/php/cli-php7.3/ext-active/ /etc/php/cli-php7.4/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-march=core-avx2 -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LANG="en_US.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
USE="acl amd64 apache2 berkdb bzip2 cacert crypt curl ebics fam firebird flatfile ftp fuse gd geoip hardened headless-awt iconv idn inifile iproute2 ipv6 libglvnd libtirpc logrotate multilib mysql mysqli natspec ncurses nls nptl openmp openssl pam pcntl pcre pdo pie png python readline seccomp soap sockets split-usr sqlite ssl ssp syslog sysvipc threads unicode wddx xattr xmlreader xmlrpc xmlwriter xtpax zip zlib" ABI_X86="64" ADA_TARGET="gnat_2018" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="libinput" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-3" POSTGRES_TARGETS="postgres10 postgres11" PYTHON_SINGLE_TARGET="python3_6" PYTHON_TARGETS="python2_7 python3_8 python3_6 python3_7" RUBY_TARGETS="ruby25 ruby26" USERLAND="GNU" VIDEO_CARDS="amdgpu fbdev intel nouveau radeon radeonsi vesa dummy v4l" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CC, CPPFLAGS, CTARGET, CXX, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 1 Matthias Hanft 2020-12-20 15:23:16 UTC
Note: By softlinking ...gcc9 to ...gcc4 (just in case this means kernel version instead of gcc version), it won't work either:



In file included from /var/tmp/portage/app-emulation/virtualbox-modules-6.0.24-r2/work/vboxdrv/SUPDrvInternal.h:12 ,
                 from /var/tmp/portage/app-emulation/virtualbox-modules-6.0.24-r2/work/vboxdrv/SUPDrvSem.c:33:
/var/tmp/portage/app-emulation/virtualbox-modules-6.0.24-r2/work/vboxdrv/SUPDrvIDC.h:166:22: error: expected ‘:’,  ,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘Out’
  166 |         } __no_const Out;
      |                      ^~~



and



/var/tmp/portage/app-emulation/virtualbox-modules-6.0.24-r2/work/vboxdrv/SUPDrv.c: In function ‘supdrvIDC_LdrGetSymbol’:
/var/tmp/portage/app-emulation/virtualbox-modules-6.0.24-r2/work/vboxdrv/SUPDrv.c:5698:24: error: ‘union <anonymous>’ has no member named ‘Out’
 5698 |                 pReq->u.Out.pfnSymbol = (PFNRT)(uintptr_t)g_aFunctions[i].pfn;
      |                        ^
Comment 2 Lars Wendler (Polynomial-C) (RETIRED) gentoo-dev 2021-04-21 09:32:15 UTC
Is this still an issue with latest virtualbox-6.1.x releases? I also wonder if this might be hardened related.
Comment 3 Matthias Hanft 2021-04-21 11:25:37 UTC
Yes, the problem still persists, but in a "newer version":

Instead of

/usr/src/linux-4.1.12-gentoo/include/linux/compiler-gcc.h:121:1: fatal error: linux/compiler-gcc9.h: No such file or directory

the error message is now

/usr/src/linux-4.1.12-gentoo/include/linux/compiler-gcc.h:121:1: fatal error: linux/compiler-gcc10.h: No such file or directory

since I upgraded to gcc 10 meanwhile.

Is the current VirtualBox version *really* that kernel-and/or-compiler-version-dependant? Ok, kernel 4.1.12 might be a bit old nowadays, but I wouldn't really like to upgrade it because of some weird video driver modules for media-video/vdr which I couldn't get to work with newer kernels.

(This is my kernel 4.1.12:)
home01 /usr/src/linux/include/linux # ls -ald compiler*
-rw-r--r-- 1 root root   320 Jun 22  2015 compiler-clang.h
-rw-r--r-- 1 root root   635 Jun 22  2015 compiler-gcc3.h
-rw-r--r-- 1 root root  3089 Jun 22  2015 compiler-gcc4.h
-rw-r--r-- 1 root root  2484 Jun 22  2015 compiler-gcc5.h
-rw-r--r-- 1 root root  5096 Jun 22  2015 compiler-gcc.h
-rw-r--r-- 1 root root 14324 Jun 22  2015 compiler.h
-rw-r--r-- 1 root root  1156 Nov 28  2015 compiler-intel.h

But the current kernel (gentoo-sources) 5.10.27 wouldn't have this "compiler-gcc10.h" either:
home01 /usr/src/linux-5.10.27-gentoo/include/linux # ls -ald compiler*
-rw-r--r-- 1 root root 11667 Dec 13 23:41 compiler_attributes.h
-rw-r--r-- 1 root root  2341 Apr  3 10:17 compiler-clang.h
-rw-r--r-- 1 root root  5272 Apr  3 10:17 compiler-gcc.h
-rw-r--r-- 1 root root  7677 Dec 13 23:41 compiler.h
-rw-r--r-- 1 root root   949 Dec 13 23:41 compiler-intel.h
-rw-r--r-- 1 root root 10631 Dec 13 23:41 compiler_types.h

I'm no expert at this point, but I wonder why "compiler-gcc.h" seems to include something like "compiler-gcc$MAJOR_VERSION.h" (which doesn't exist) - and why this happens *only* for VirtualBox (and not *any* other package)...
Comment 4 Lars Wendler (Polynomial-C) (RETIRED) gentoo-dev 2021-04-21 11:32:43 UTC
virtualbox has quite an exotic build system so I wouldn't be surprised if they pull such a stunt for some corner configuration.
My problem is that I cannot really reproduce this issue. I neither have any hardened Gentoo at hand nor am I still using such an ancient kernel.
Any chance you can upgrade to some newer kernel release like 4.19.x, 5.4.x or even 5.10.x just to rule out it's the old kernel that causes the issue?
Comment 5 Matthias Hanft 2021-04-25 08:56:17 UTC
Ok, it does work with kernel 5.10.27 so you can close this issue (and https://bugs.gentoo.org/760896 as well). Thank you.

--------------------

If you're interested, here's why it took me that long to answer:

I wanted to try the current 5.10.27 kernel just a few minutes in order to test if virtualbox can be compiled here. But after reverting to 4.1.12, I got tons of messages like

Apr 22 19:19:14 home01 kernel: XFS (sda4): Metadata corruption detected at xfs_agf_read_verify+0x5c/0x100, block 0x7ffffff81
Apr 22 19:19:14 home01 kernel: XFS (sda4): Unmount and run xfs_repair

Obviously, the new kernel brought a newer XFS version (and wrote it to disk) which the older kernel couldn't understand.

After rebooting with the new kernel again, those messages had disappeared, but media-video/vdr didn't work any more because of some kernel module trouble.

So I had to debug (and "try and error") how I should configure and use the kernel modules for vdr. In the old kernel, I had a package called "media-build-experimental" from the "vdr-devel" overlay, but this wouldn't work with the new kernel. But it's at all unnecessary, because everything needed for vdr is, meanwhile, kernel-built-in anyway. However, at first, it didn't work because I included the device drivers (with "make menuconfig") directly in the kernel. The solution was to select "M" here (and build separate driver modules).

Now vdr works again, and virtualbox runs, too... (besides the fact that a guest Windows 10 is slow and the host CPU load is high - but that seems to be a pretty common issue which I will investigate further elsewhere).
Comment 6 Lars Wendler (Polynomial-C) (RETIRED) gentoo-dev 2021-04-30 07:20:07 UTC
Hey Matthias,

thanks for your really thorough reply and sorry that you had such a trouble going on a new kernel release.

Yeah, they changed quite a lot in the XFS filesystem code but for the better. I have started to replace btrfs with xfs because it "feels" much more responsive (and I do not have to defrag xfs once a month).
Ultimately with kernel-5.10 you should now have a top notch release that even is LTS (Long Term Support). I am using that kernel series on most of my systems.
I hope you won't find any annoying regressions while using it.