View previous topic :: View next topic |
Author |
Message |
Vrenn Guru

Joined: 15 Dec 2004 Posts: 300
|
Posted: Fri Aug 24, 2018 5:24 pm Post subject: [solved] xf86-video-nouveau fails at exaDriverAlloc symbol |
|
|
Hello dear Gentoo community!
I just want to share my experience on an problem I haven't found a solution here, just in case somebody gets in trouble too.
I have an old AMD 5200+ Gentoo machine which needed to to the upgrade to gcc and some spectre-fixes.
So I followed the gentoo gcc upgrade guide and took the long road by emerge -e world as I use llvm, mesa and many qt/kde packages.
I even did it two times as emerge -e system didn't work due to dependency problems (okay, that took some time but I love this machine).
After that sddm, or startx didn't load anymore.
/var/log/Xorg.0.log: Code: | [ 40.407] (II) LoadModule: "nouveau"
[ 40.479] (II) Loading /usr/lib64/xorg/modules/drivers/nouveau_drv.so
[ 40.526] (EE) Failed to load /usr/lib64/xorg/modules/drivers/nouveau_drv.so: /usr/lib64/xorg/modules/drivers/nouveau_drv.so: undefined symbol: exaDriverAlloc
[ 40.526] (II) UnloadModule: "nouveau"
[ 40.526] (II) Unloading nouveau
[ 40.526] (EE) Failed to load module "nouveau" (loader failed, 7)
[ 40.526] (II) LoadModule: "nv"
[ 40.527] (WW) Warning, couldn't open module nv
[ 40.527] (II) UnloadModule: "nv"
[ 40.527] (II) Unloading nv
[ 40.527] (EE) Failed to load module "nv" (module does not exist, 0) | The important line is "nouveau_drv.so: undefined symbol: exaDriverAlloc"
That took me to an arch bug complaining about unsafe compiler flags for nouveau.
Okay, my spectre fixes, lets take a look into my /etc/make.conf: Code: | CFLAGS="-march=k8-sse3 -O2 -pipe -fno-plt -mindirect-branch=thunk -mfunction-return=thunk" |
Seems I have overdone it. So just make a file just for the nouveau in your portage-config with safe flags and X will work again.
/etc/portage/env/x11-drivers/xf86-video-nouveau: Code: | CFLAGS="-march=k8-sse3 -O2 -pipe -mindirect-branch=thunk -mfunction-return=thunk"
CXXFLAGS="${CFLAGS} |
(just tried it's the -fno-plt flag) _________________ With nice greetings
Vrenn |
|
Back to top |
|
 |
Anon-E-moose Watchman


Joined: 23 May 2008 Posts: 5055 Location: Dallas area
|
Posted: Fri Aug 24, 2018 6:11 pm Post subject: |
|
|
Code: | -fno-plt
Do not use the PLT for external function calls in position-independent code. Instead, load the callee address at call sites from the GOT and branch to it. This leads to more efficient code by eliminating PLT stubs and exposing GOT loads to optimizations. On architectures such as 32-bit x86 where PLT stubs expect the GOT pointer in a specific register, this gives more register allocation freedom to the compiler. Lazy binding requires use of the PLT; with -fno-plt all external symbols are resolved at load time.
Alternatively, the function attribute noplt can be used to avoid calls through the PLT for specific external functions.
In position-dependent code, a few targets also convert calls to functions that are marked to not use the PLT to use the GOT instead. |
_________________ PRIME x570-pro, 3700x, RX 550 - 5.8 zen kernel
Acer E5-575 (laptop), i3-7100u - i965 - 5.5 zen kernel
---both---
gcc 9.3.0, profile 17.1 (no-pie) amd64-no-multilib, eudev, openrc, openbox
The New OTW |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|