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
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; | ^
Is this still an issue with latest virtualbox-6.1.x releases? I also wonder if this might be hardened related.
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)...
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?
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).
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.