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