First, Linux Mint LMDE x64, which should be equivalent to Debian/testing.
i downloaded rev 88838 and those two plugins didnt seem to load. So i tried with the ones that come in the debian package and they worked, so i took a look at the code and added some printf() to get a better idea of where it failed.
It seems both have a problem with the functions' names or something. I tried but cound't find what caused it.
the thing is: in gui/ConfDlg.c in UpdatePluginsBIOS() at around line 720,
PSE_getLibType = (PSEgetLibType)dlsym(Handle, "PSEgetLibType");
returns 0. I tried adding spu and pad to the names to force them but
PSE_getLibName = (PSEgetLibName) dlsym(Handle, "PSEgetLibName");
also fails. so it will only show the file name for the spu plugin and segfault for the pad one.
At first i thought that maybe SDL2 was the cause but disabling it from the sound plugin did nothing.
The pad plugin segfaults after
PADquery query = (PADquery)dlsym(Handle, "PADquery");
because it will return NULL and there's no check afterwards so when it does query() it segfaults as is obvious. dlerror() says "undefined symbol: PADquery" and the rest of the NULLs are the same.
Anything else i can do to help you with this? or is this something on my side?
edit:
apparently there's a compilation error here, as nm reports these functions are local only instead of global like in the rest of the plugins that do work
edit2:
pcsxr-88838/plugins/dfsound/.libs/libDFSound_la-spu.o:0000000000003f30 T PSEgetLibName
the objects still say global, so i suppose the problem happens when linking?
edit3:
rev 87020 is the culprit, rev 87016 has no problem at all. So apparently it's SDL2's fault.
edit4:
```
$ sdl-config --cflags
-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
```
```
$ sdl2-config --cflags
-I/usr/include/SDL2 -D_REENTRANT -Iinclude -I/tmp/buildd/libsdl2-2.0.0+dfsg1/include -mmmx -m3dnow -msse -msse2 -fvisibility=hidden -D_REENTRANT -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -D_REENTRANT -DHAVE_LINUX_VERSION_H -Wall
```
apparently -fvisibility=hidden is the problem. I removed it from the makefile and now it works. No idea why it is there, but you should add a check or something to override/remove it in case something like this happens.
If anyone else has this problem, as a temporal workaround do the usual autogen, configure, and before make go to the plugins and in the Makefile inside both dfsound and dfinput, search for "-fvisibility=hidden", delete it and save. Then continue as usual.
Comments: ** Comment from web user: dario86 **
i downloaded rev 88838 and those two plugins didnt seem to load. So i tried with the ones that come in the debian package and they worked, so i took a look at the code and added some printf() to get a better idea of where it failed.
It seems both have a problem with the functions' names or something. I tried but cound't find what caused it.
the thing is: in gui/ConfDlg.c in UpdatePluginsBIOS() at around line 720,
PSE_getLibType = (PSEgetLibType)dlsym(Handle, "PSEgetLibType");
returns 0. I tried adding spu and pad to the names to force them but
PSE_getLibName = (PSEgetLibName) dlsym(Handle, "PSEgetLibName");
also fails. so it will only show the file name for the spu plugin and segfault for the pad one.
At first i thought that maybe SDL2 was the cause but disabling it from the sound plugin did nothing.
The pad plugin segfaults after
PADquery query = (PADquery)dlsym(Handle, "PADquery");
because it will return NULL and there's no check afterwards so when it does query() it segfaults as is obvious. dlerror() says "undefined symbol: PADquery" and the rest of the NULLs are the same.
Anything else i can do to help you with this? or is this something on my side?
edit:
apparently there's a compilation error here, as nm reports these functions are local only instead of global like in the rest of the plugins that do work
edit2:
pcsxr-88838/plugins/dfsound/.libs/libDFSound_la-spu.o:0000000000003f30 T PSEgetLibName
the objects still say global, so i suppose the problem happens when linking?
edit3:
rev 87020 is the culprit, rev 87016 has no problem at all. So apparently it's SDL2's fault.
edit4:
```
$ sdl-config --cflags
-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
```
```
$ sdl2-config --cflags
-I/usr/include/SDL2 -D_REENTRANT -Iinclude -I/tmp/buildd/libsdl2-2.0.0+dfsg1/include -mmmx -m3dnow -msse -msse2 -fvisibility=hidden -D_REENTRANT -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -D_REENTRANT -DHAVE_LINUX_VERSION_H -Wall
```
apparently -fvisibility=hidden is the problem. I removed it from the makefile and now it works. No idea why it is there, but you should add a check or something to override/remove it in case something like this happens.
If anyone else has this problem, as a temporal workaround do the usual autogen, configure, and before make go to the plugins and in the Makefile inside both dfsound and dfinput, search for "-fvisibility=hidden", delete it and save. Then continue as usual.
Comments: ** Comment from web user: dario86 **
Does the problem persist in the latest revision?