VirtualBox Install Script Fails On 32bit Slackware Current
I have a 32bit Slackware box that I keep on current. After some recent updates I can no longer use the VirtualBox .run script to install. I raised a bug report with VirtualBox but they think it is a problem with libgcc in Slackware.
To reproduce: 1. Install slackware current 32bit. 2. Download VirtualBox-5.1.22-115126-Linux_x86.run (Linux All Distributions i386) 3. Execute VirtualBox-5.1.22-115126-Linux_x86.run as root. Installation will fail: Code:
Verifying archive integrity... All good. Code:
[ 1864.907681] vboxdrv: Unknown symbol __udivmoddi4 (err 0) Spent some time digging and there are differences in the libgcc.a library between 32bit and 64bit possibly pointing to undefined reference but I don't know enough to take this further at the moment. On Slackware current 32 bit Code:
root@slack-current:~# readelf -Ws /usr/lib/gcc/i586-slackware-linux/7.1.0/libgcc.a | grep udiv Code:
root@slack64-current:~# readelf -Ws /usr/lib64/gcc/x86_64-slackware-linux/7.1.0/libgcc.a | grep udiv Anyone have any ideas? |
Not that I can help here, but I'm linking to your bug report and a forum post about this issue... just to consolidate things and hopefully make it easier to find a resolution for 32bit users.
|
We noticed this in an earlier thread:
http://www.linuxquestions.org/questi...9/#post5707211 No solution so far, except to switch to a 64-bit VM. |
A dirty little patch, workaround until a better solution appears:
Code:
File: /usr/src/vboxhost-5.1.22/vboxdrv/linux/SUPDrv-linux.c Code:
--- SUPDrv-linux.c.orig 2016-08-17 11:35:33.000000000 +0300 Code:
Linux vbox 4.9.29-smp #2 SMP Sun May 21 01:13:37 CDT 2017 i686 |
I can confirm that this patch works on my venerable HP desktop running Slackware 32 bit. Virtuals up and running again. Thanks ppencho.
So does VirtualBox not really need __udivmoddi4? Looks like my suspicions about libgcc on 32bit could be correct? I've been trying to build gcc using gcc.Slackbuild myself to dig deeper and hopefully come up with a fix there but the build fails. I'm currently hunting through the build log to find out why. I don't have much time to spend on this so could be a while. |
Maybe the VirtualBox kernel module uses __udivmoddi4 (libgcc) as an inline function (this is my speculation). And for some reason it expects __udivmoddi4 as an external dependency but it does not need that function to run. My stub does not shadow the original libgcc __udivmoddi4, it has different prototype (no parameters and return value).
|
The latest version of VirtualBox 5.1.24 has a fix for this problem. Now installs without issue on 32bit Slackware.
|
All times are GMT -5. The time now is 08:45 AM. |