| Summary: | libXThrStub.so.6 has undefined references | ||
|---|---|---|---|
| Product: | Ports & Packages | Reporter: | jimd <jimd> |
| Component: | Individual Port(s) | Assignee: | Eric Anholt <anholt> |
| Status: | Closed FIXED | ||
| Severity: | Affects Only Me | ||
| Priority: | Normal | ||
| Version: | Latest | ||
| Hardware: | Any | ||
| OS: | Any | ||
Responsible Changed From-To: freebsd-ports-bugs->anholt Over to X Maintainer Removed all X430src-x.tgz files. Portupgraded XFree86-Server-4.3.0 along with XFree86-clients-4.3.0, and previously reported libXTHrStub.so.6 undefined references no longer appear. There may have been a change in the X430 source, or perhaps not. At any rate, the problem is "fixed" and the report may be closed. ======= from original problem and report ============== cc -o appres -O3 -mcpu=pentiumpro -march=pentiumpro -ansi -Dasm=__asm -Wall -Wpointer-arith -Wundef -L/usr/ports/x11/XFree86-4-clients/work/xc/exports/lib appres.o -lXt -lSM -lICE -lXext -lX11 -L/usr/X11R6/lib -Wl,-rpath,/usr/X11R6/lib /usr/X11R6/lib/libXt.so: undefined reference to `pthread_cond_signal' /usr/X11R6/lib/libXThrStub.so.6: undefined reference to `_Xthr_zero_stub_' /usr/X11R6/lib/libX11.so: undefined reference to `pthread_cond_broadcast' /usr/X11R6/lib/libXThrStub.so.6: undefined reference to `_Xthr_self_stub_' /usr/X11R6/lib/libXt.so: undefined reference to `pthread_cond_init' /usr/X11R6/lib/libXt.so: undefined reference to `pthread_mutex_unlock' /usr/X11R6/lib/libXt.so: undefined reference to `pthread_self' /usr/X11R6/lib/libXt.so: undefined reference to `pthread_mutex_destroy' /usr/X11R6/lib/libXt.so: undefined reference to `pthread_mutex_lock' /usr/X11R6/lib/libXt.so: undefined reference to `pthread_cond_wait' /usr/X11R6/lib/libXt.so: undefined reference to `pthread_cond_destroy' /usr/X11R6/lib/libXt.so: undefined reference to `pthread_mutex_init' *** Error code 1 Stop in /usr/ports/x11/XFree86-4-clients/work/xc/programs/appres. *** Error code 1 =========== from portupgrade done 23 March 2003 =============== rm -f appres cc -o appres -O3 -mcpu=pentiumpro -march=pentiumpro -ansi -Dasm=__asm -Wall -Wpointer-arith -Wundef -L/usr/ports/x11/XFree86-4-clients/work/xc/exports/lib appres.o -lXt -lSM -lICE -lXext -lX11 -L/usr/X11R6/lib -Wl,-rpath,/usr/X11R6/lib rm -f appres._man /usr/bin/cpp -undef -traditional -D__apploaddir__=/usr/X11R6/lib/X11/app-defaults -D__filemansuffix__=5 -D__libmansuffix__=3 -D__miscmansuffix__=7 -D__drivermansuffix__=4 -D__projectroot__=/usr/X11R6 -D__xorgversion__='"Release 6.6" "X Version 11"' -D__vendorversion__="`echo 4 3 0 | sed -e 's/ /./g' -e 's/^/Version /'` XFree86" <appres.man | sed -e '/^# *[0-9][0-9]* *.*$/d' -e '/^XCOMM$/s//#/' -e '/^XCOMM[^a-zA-Z0-9_]/s/^XCOMM/#/' >appres._man rm -f appres.1.html appres.1-html rman -f HTML < appres._man > appres.1-html && mv -f appres.1-html appres.1.htmlmacro "in" not recognized -- ignoring making all in programs/bdftopcf... Whilst the previous PR update on 23 March 2003 cited build output from XFree86-4-clients instead of Xlockmore, the same error (undefined reference in libXThrStub.so.6) occured with both ports. The 23 March 2003 portupgrade of XFree86-4-clients also included a portupgrade of Xlockmore which was successful. It appears that the resolution was the replacement of the XFree86 source distribution files. The reported problem has not been fully resolved.
On two 4.7 machines, the "remove-and-reinstall" of XFree86-4.3.0 has had
different affects:
1) on the last reported problem, the R & R process worked as noted in
the last, previous PR update
2) on another 4.7 machine, the R & R process failed.
Both hosts have been updated, as much as possible, with cvsup. The
failure or success appears to depend on pth-2.0.0 (lpthread.20). In the
success instance, pthread symbols are found in libXThrStub.so.6. In the
failure instance, NO pthread symbols are found in libXThrStub.so.6, and
the XFree86-4-Server build fails:
- - - - - - - - - - - - - - - - -
rm -f xf86cfg
LD_LIBRARY_PATH=/usr/ports/x11-servers/XFree86-4-Server/work/xc/exports/lib
cc -o xf86cfg -O3 -mcpu=pentiumpro -march=pentiumpro
-I/usr/local/include/pth -ansi -Dasm=__asm -Wall -Wpointer-arith -Wundef
-L/usr/ports/x11-servers/XFree86-4-Server/work/xc/exports/lib
accessx.o cards.o config.o card-cfg.o expert.o
help.o interface.o keyboard-cfg.o libc_wrapper.o loader.o
loadmod.o monitor-cfg.o mouse-cfg.o options.o
screen-cfg.o screen.o startx.o stubs.o text-mode.o
vidmode.o
xf86config.o -lxkbui -lxkbfile -lxf86config -lXxf86misc
-lXxf86vm -lXaw -lXmu -lXt -lSM -lICE -lXext -lX11 -lXt -lSM -lICE
-lXpm
-L../loader -lxloader -L../dummylib -ldummy -rdynamic -lXext -lX11 -lncurses
-lm -L/usr/X11R6/lib -Wl,-rpath,/usr/X11R6/lib
/usr/X11R6/lib/libXt.so: undefined reference to `pthread_cond_signal'
/usr/X11R6/lib/libXThrStub.so.6: undefined reference to `_Xthr_zero_stub_'
/usr/X11R6/lib/libX11.so: undefined reference to `__pthread_connect'
/usr/X11R6/lib/libX11.so: undefined reference to `__pthread_writev'
/usr/X11R6/lib/libX11.so: undefined reference to
`pthread_cond_broadcast'
/usr/X11R6/lib/libXThrStub.so.6:
undefined reference to `_Xthr_self_stub_'
/usr/X11R6/lib/libX11.so: undefined reference to `__pthread_readv'
/usr/X11R6/lib/libXt.so: undefined reference to `pthread_cond_init'
/usr/X11R6/lib/libX11.so: undefined reference to `__pthread_poll'
/usr/X11R6/lib/libXt.so: undefined reference to `pthread_mutex_unlock'
/usr/X11R6/lib/libXt.so: undefined reference to `pthread_self'
/usr/X11R6/lib/libXt.so: undefined reference to `pthread_mutex_destroy'
/usr/X11R6/lib/libXt.so: undefined reference to `pthread_mutex_lock'
/usr/X11R6/lib/libXt.so: undefined reference to `pthread_cond_wait'
/usr/X11R6/lib/libX11.so: undefined reference to `__pthread_read'
/usr/X11R6/lib/libXt.so: undefined reference to `pthread_cond_destroy'
/usr/X11R6/lib/libX11.so: undefined reference to `__pthread_write'
/usr/X11R6/lib/libXt.so: undefined reference to `pthread_mutex_init'
*** Error code 1
Stop in
/usr/ports/x11-servers/XFree86-4-Server/work/xc/programs/Xserver/hw/xfree86/xf86cfg.
*** Error code 1
- - - - - - - - - - - - - -
The "failing XFree86 update" /usr/X11R6/lib/libXThrStub.so.6 shows:
nm -s /usr/X11R6/lib/libXThrStub.so.6
00001590 A _DYNAMIC
00001650 A _GLOBAL_OFFSET_TABLE_
00001684 b _X_no_thread_id.3
U _Xthr_self_stub_
U _Xthr_zero_stub_
00001644 ? __CTOR_END__
00001640 ? __CTOR_LIST__
0000164c ? __DTOR_END__
00001648 ? __DTOR_LIST__
0000158c ? __EH_FRAME_BEGIN__
0000158c ? __FRAME_END__
0000166c A __bss_start
w __deregister_frame_info
00000530 t __do_global_ctors_aux
00000464 t __do_global_dtors_aux
w __register_frame_info
0000166c A _edata
00001688 A _end
0000057c T _fini
00000428 T _init
00001588 d completed.4
000004c8 t fini_dummy
0000158c d force_to_data
0000158c d force_to_data
000004e0 t frame_dummy
00000530 t gcc2_compiled.
00000464 t gcc2_compiled.
00000530 t gcc2_compiled.
00000518 t init_dummy
00000564 t init_dummy
0000166c b object.11
00001584 d p.3
Whereas the "successful R & R" update shows the pthread symbols for
/usr/X11R6/lib/libXThrStub.so.6:
nm -s /usr/X11R6/lib/libXThrStub.so.6
000017b8 A _DYNAMIC
00001878 A _GLOBAL_OFFSET_TABLE_
000018ac b _X_no_thread_id.3
00000734 t _Xthr_self_stub_
00000750 t _Xthr_zero_stub_
0000186c ? __CTOR_END__
00001868 ? __CTOR_LIST__
00001874 ? __DTOR_END__
00001870 ? __DTOR_LIST__
000017b4 ? __EH_FRAME_BEGIN__
000017b4 ? __FRAME_END__
00001894 A __bss_start
w __deregister_frame_info
00000758 t __do_global_ctors_aux
00000668 t __do_global_dtors_aux
w __register_frame_info
00001894 A _edata
000018b0 A _end
000007a4 T _fini
0000062c T _init
000017b0 d completed.4
000006cc t fini_dummy
000017b4 d force_to_data
000017b4 d force_to_data
000006e4 t frame_dummy
00000734 t gcc2_compiled.
00000758 t gcc2_compiled.
00000668 t gcc2_compiled.
0000078c t init_dummy
0000071c t init_dummy
00001894 b object.11
000017ac d p.3
00000750 W pthread_cond_broadcast
00000750 W pthread_cond_destroy
00000750 W pthread_cond_init
00000750 W pthread_cond_signal
00000750 W pthread_cond_wait
00000750 W pthread_getspecific
00000750 W pthread_key_create
00000750 W pthread_mutex_destroy
00000750 W pthread_mutex_init
00000750 W pthread_mutex_lock
00000750 W pthread_mutex_unlock
00000734 W pthread_self
00000750 W pthread_setspecific
I have tried both portupgrade and manual make multiple times, but the
result is the same in the "failing situation". In both cases, I have the
same version of pth-2.0.0 installed, but I can't seem to find
where/how /usr/X11R6/lib/libXThrStub.so.6 gets linked with
/usr/local/lib/pth/libpthread.so.20.
I just did an XFree86-4-library recompile on the host without the pthread
references in libXThrStub.so.6, and said library NOW has the pthread symbols!
ALL that I did was:
ln -s /usr/local/lib/libgthread-2.0.so.200 /usr/local/lib/libgthread-2.0.so.0
Here is what I had beforehand:
ll /usr/local/lib/libgthread*
-rw-r--r-- 1 root wheel 12824 Feb 15 13:26 /usr/local/lib/libgthread-2.0.a
lrwxrwxr-x 1 root wheel 21 Feb 15 13:26 /usr/local/lib/libgthread-2.0.so -> libgthread-2.0.so.200
-rwxr-xr-x 1 root wheel 17766 Feb 15 13:26 /usr/local/lib/libgthread-2.0.so.200
-rw-r--r-- 1 root wheel 5526 Jan 23 10:46 /usr/local/lib/libgthread12.a
lrwxr-xr-x 1 root wheel 17 Jan 23 10:46 /usr/local/lib/libgthread12.so ->
libgthread12.so.3
-rwxr-xr-x 1 root wheel 9712 Jan 23 10:46 /usr/local/lib/libgthread12.so.3
The newly compiled libXThrStub.so.6 now shows a larger filesize:
pwd
/usr/ports/x11/XFree86-4-libraries/work/xc/lib/XThrStub
xxxxx/root: ll
total 100
-rw-rw-r-- 1 root wheel 661 Mar 27 02:58 .depend
-rw-r--r-- 1 root wheel 759 Dec 20 1998 Imakefile
-rw-rw-r-- 1 root wheel 28872 Mar 27 02:57 Makefile
-rw-r--r-- 1 root wheel 6398 Jan 14 20:55 UIThrStubs.c
-rw-rw-r-- 1 root wheel 1384 Mar 27 02:58 UIThrStubs.o
lrwxrwxr-x 1 root wheel 18 Mar 27 02:58 libXThrStub.so -> libXThrStub.so.6.1
lrwxrwxr-x 1 root wheel 18 Mar 27 02:58 libXThrStub.so.6 -> libXThrStub.so.6.1
-rwxrwxr-x 1 root wheel 5243 Mar 27 02:58 libXThrStub.so.6.1
and the library now contains pthread symbols:
nm -s libXThrStub.so.6.1
000017b8 A _DYNAMIC
00001878 A _GLOBAL_OFFSET_TABLE_
000018ac b _X_no_thread_id.3
00000734 t _Xthr_self_stub_
00000750 t _Xthr_zero_stub_
0000186c ? __CTOR_END__
00001868 ? __CTOR_LIST__
00001874 ? __DTOR_END__
00001870 ? __DTOR_LIST__
000017b4 ? __EH_FRAME_BEGIN__
000017b4 ? __FRAME_END__
00001894 A __bss_start
w __deregister_frame_info
00000758 t __do_global_ctors_aux
00000668 t __do_global_dtors_aux
w __register_frame_info
00001894 A _edata
000018b0 A _end
000007a4 T _fini
0000062c T _init
000017b0 d completed.4
000006cc t fini_dummy
000017b4 d force_to_data
000017b4 d force_to_data
000006e4 t frame_dummy
00000734 t gcc2_compiled.
00000758 t gcc2_compiled.
00000668 t gcc2_compiled.
0000078c t init_dummy
0000071c t init_dummy
00001894 b object.11
000017ac d p.3
00000750 W pthread_cond_broadcast
00000750 W pthread_cond_destroy
00000750 W pthread_cond_init
00000750 W pthread_cond_signal
00000750 W pthread_cond_wait
00000750 W pthread_getspecific
00000750 W pthread_key_create
00000750 W pthread_mutex_destroy
00000750 W pthread_mutex_init
00000750 W pthread_mutex_lock
00000750 W pthread_mutex_unlock
00000734 W pthread_self
00000750 W pthread_setspecific
On Wed, 02 Apr 2003 04:06:27 +0000, none wrote:
> It may be that you have an X11 installation that is missing some pthread
> linkage. If your /usr/X11R6/lib/libXThrStub.so.6 file is about 4230 bytes
> then it may not include pthread symbols such as:
>
> 00001894 b object.11
> 000017ac d p.3
> 00000750 W pthread_cond_broadcast
> 00000750 W pthread_cond_destroy
> 00000750 W pthread_cond_init
> 00000750 W pthread_cond_signal
> 00000750 W pthread_cond_wait
> 00000750 W pthread_getspecific
> 00000750 W pthread_key_create
> 00000750 W pthread_mutex_destroy
> 00000750 W pthread_mutex_init
> 00000750 W pthread_mutex_lock
> 00000750 W pthread_mutex_unlock
> 00000734 W pthread_self
> 00000750 W pthread_setspecific
>
> An nm -s on the library will confirm this. If the results end with "d
> p.3", then something failed to link in the appropriate pthread symbols
> (which results in a library file size of about 5243 bytes from what I have
> seen).
>
> IF this is the case, of incomplete thread linkage, THEN Configure test
> compiles which request "-lX11" may/will probably fail NOT because the
> X11.so file can't be found, BUT because the linker step in the test
> compile fails as a result of missing thread symbols in
> /usr/X11R6/lib/libXThrStub.so.6 (or another library). This can be
> confirmed by looking at the "config.log" file in a port's work (build)
> directory.
>
> For reasons that I have yet to figure out, I have had beaucoup problems
> with /usr/X11R6/lib/libXThrStub.so.6 in XFree86-4.3.0 ports. In one X11
> port compile, I did get the thread linkage, but in over a dozen other port
> compiles, I did not. On one system, I finally gave in and went out and
> found a pre-compiled binary of the 4.3.0 XFree86 libraries, clients, and
> server, and installed them. They had thread linkage in
> /usr/X11R6/lib/libXThrStub.so.6, and further port compiles would then
> succeed.
>
>
> On Tue, 01 Apr 2003 13:14:35 +0000, Mike B wrote:
>
>> Yes I have x11 in stalled and it works quite well. I was thinking that
>> perhaps it should be '-l X11'. The only problem is grepping that line
>> out, as I have no clue which source file it belongs to. Thanks.
>>
>> Mike
>>
>> Thierry Herbelot wrote:
>>> Hello,
>>>
>>> Mike B wrote:
>>>
>>>
>>>>I'm having a bit of trouble building jdk1.4.1 on FreeBSD 4.8RC. After
>>>>compiling for about 6-8 hrs on my old machine in stops with this error
>>>>message.
>>>>
>>>>6/lib -lX11 -pthread -pthread
>>>>/usr/libexec/elf/ld: cannot find -lX11
>>>
>>>
>>> -lX11 is most likely a linker command used to link the jdk witk an X11
>>> (X-Windows / XFrre86) library. have you installed the XFree ports ?
>>>
>>> TfH
State Changed From-To: open->closed Submitter had unsupported -O3 optimizations in compiling XFree86, which is known to cause this problem. May I ask whether it is XFree86 that doesn't support -O3 or something else.
GCC-2.95.4 does support this option and other ports/independent applications
have been compiled with -O3 and execute without any noticable problem.
Thank you.
On 6 Apr, Eric Anholt wrote:
> Synopsis: libXThrStub.so.6 has undefined references
>
> State-Changed-From-To: open->closed
> State-Changed-By: anholt
> State-Changed-When: Sun Apr 6 01:04:02 PST 2003
> State-Changed-Why:
> Submitter had unsupported -O3 optimizations in compiling XFree86, which is
> known to cause this problem.
>
> http://www.freebsd.org/cgi/query-pr.cgi?pr=50161
On Sun, 2003-04-06 at 05:35, jimd@siu.edu wrote: > May I ask whether it is XFree86 that doesn't support -O3 or something else. > GCC-2.95.4 does support this option and other ports/independent applications > have been compiled with -O3 and execute without any noticable problem. > > Thank you. I mean that we do not offer support (in terms of fixing things for you) for higher optimization levels. make.conf says it for kernel+world but that should apply even more so to ports: # CFLAGS controls the compiler settings used when compiling C code. # Note that optimization settings above -O (-O2, ...) are not recommended # or supported for compiling the world or the kernel - please revert any # nonstandard optimization settings to "-O" before submitting bug reports # to the developers. # Note also that at this time the -O2 setting is known to produce BROKEN # CODE on the Alpha platform. # #CFLAGS= -O -pipe If you submitted a patch that fixed the problem and explained why the fix was correct, I would probably apply it. -- Eric Anholt eta@lclark.edu http://people.freebsd.org/~anholt/ anholt@FreeBSD.org |
Attempt to compile xlockmore failed with unresolved references: /usr/lib/libc.so.4: warning: tempnam() possibly used unsafely; consider using mk stemp() /usr/X11R6/lib/libXThrStub.so.6: undefined reference to `_Xthr_zero_stub_' /usr/X11R6/lib/libXThrStub.so.6: undefined reference to `_Xthr_self_stub_' *** Error code 1 Stop in /usr/ports/x11/xlockmore/work/xlockmore-5.06/modes. *** Error code 1 nm -s libXThrStub.so.6 | grep _Xthr_zero_stub_ U _Xthr_zero_stub_