On 4/26/2011 8:07 AM, Mika N wrote:
Robert Holmes wrote:
./.libs/libxorg.a(udev.o): In function `device_added':
udev.c:(.text+0x4e): undefined reference to `udev_device_get_devnode'
udev.c:(.text+0x59): undefined reference to `udev_device_get_syspath'
udev.c:(.text+0x85): undefined reference to `udev_device_get_property_value'
udev.c:(.text+0x11b): undefined reference to `udev_device_get_parent'
udev.c:(.text+0x12e): undefined reference to `udev_device_get_devnode'
udev.c:(.text+0x149): undefined reference to `udev_device_get_property_value'
udev.c:(.text+0x164): undefined reference to `udev_device_get_sysattr_value'
I am building a T2-trunk r38855 Desktop for x86 at the i686 level. Any advice 
would be appreciated.
I have also tried few options to fix this problem with the lastest xorg-server 
version in T2 SVN trunk.

The above shown errors are coming from linker, so I edited 
xorg-server/hw/xfree86/libxorg.la file and added -ludev library entry just 
before -lcrypt entry. After this change linker succeesully linked xorg-server 
to libudev library, but there was new linker error.

Now I'm getting following linker error from xorg-server package :

Entering directory src.xxxxx-x/xorg-server-1.10.1/hw/xfree86"
/usr/lib/gcc/i686-t2-linux-gnu/4.5.2/../../../../i686-t2-linux-gnu/bin/ld: 
errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS 
reference in /lib/libudev.a(libudev-monitor.o)
/lib/libc.so.6: could not read symbols: Bad value
collect2: ld returned 1 exit status

I know that the above shown error is usually shown if one module uses something like "extern int 
errno" line instead of #include<errno.h>  line to initialize errno reference. But, I'm a 
bit lost here because xfree86 sources seem to use include<errno.h>  and extern int errno is 
nowhere (I would be surprised to see it there because this thread-safe errno logic has been in libc 
files for years already).

As an additional check I checked udev-167 sources also and every file using errno 
"variable" had #include<errno.h>  in the beginnin of the C file.

So, the usual fix to errno TLS error by adding #include<errno.h>  didn't apply 
here. And if libudev would be broken with errno references then probably some other 
toolchain and basetool would have complained about the same error. But everything 
else but xorg-server compiles in generic desktop target (well, not everything but 
those other failing packages are unrelated to this case).

Anyone with any ideas to fix this TLS errno error if missing include<errno.h>  
is not the problem (maybe, can't be 100% sure)? At this point I'm not even sure if 
this is udev (and libudev library there) or xorg-server problem. Probably xorg-server 
problem because it had missing reference to libudev linker library anyway.
Just a guess here:
Udev is built with dietlibc, and xorg is built with glibc. perhaps there is an incompatibility with mixing dietlibc libraries with glibc libraries during the final link.

Jan

Thx in advance for any ideas.

Mika N
                                        



----------------------------------------------------------- If you wish to unsubscribe from this mailing, send mail to
[email protected] with a subject of: unsubscribe t2

Reply via email to