Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 2 Jan 2005 18:58:22 +0300 (MSK)
From:      Oleg Sharoiko <os@rsu.ru>
To:        "David E. O'Brien" <obrien@FreeBSD.org>
Cc:        openoffice@FreeBSD.org
Subject:   lang/gcc32 and pthreads problem
Message-ID:  <20050102182843.N21639@localhost>

next in thread | raw e-mail | index | archive | help
Hello, David!

It looks like your commit 
http://docs.freebsd.org/cgi/getmsg.cgi?fetch=305919+0+archive/2004/cvs-all/20041226.cvs-all 
has broke -pthreads switch in gcc32. Number of people complained about 
editors/openoffice-1.1 not being able to install. It happens because binaries 
link against both libc_r and libpthread. And this happens because gcc32 links 
to c_r instead of pthread:

wolf, ~/src/test > uname -a
FreeBSD wolf.os.rsu.ru 5.3-STABLE FreeBSD 5.3-STABLE #0: Sat Jan  1 21:36:31 
MSK 2005 
os@wolf.os.rsu.ru:/usr/obj/usr/src/sys/wolf.os.i686.RELENG_5.2005-01-01  i386

With system compiler:

wolf, ~/src/test > gcc -v
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.4.2 [FreeBSD] 20040728

wolf, ~/src/test > gcc -Wall -pedantic -pthread test_pth.c -o test_pth

wolf, ~/src/test > ldd test_pth
test_pth:
          libpthread.so.1 => /usr/lib/libpthread.so.1 (0x28081000)
          libc.so.5 => /lib/libc.so.5 (0x280a7000)

With gcc32 from ports

wolf, ~/src/test > gcc32 -v
Reading specs from /usr/local/lib/gcc-lib/i386-portbld-freebsd5.3/3.2.3/specs
Configured with: ./..//gcc-3.2.3/configure --disable-nls 
--with-gxx-include-dir=/usr/local/lib/gcc-lib/i386-portbld-freebsd5.3/3.2.3/include/g++-v3 
--with-system-zlib 
--includedir=/usr/local/lib/gcc-lib/i386-portbld-freebsd5.3/3.2.3/include/Java 
--disable-shared --prefix=/usr/local i386-portbld-freebsd5.3
Thread model: posix
gcc version 3.2.3

wolf, ~/src/test > gcc32 -Wall -pedantic -pthread test_pth.c -o test_pth

wolf, ~/src/test > ldd test_pth
test_pth:
          libc_r.so.5 => /usr/lib/libc_r.so.5 (0x28081000)
          libc.so.5 => /lib/libc.so.5 (0x280a5000)

I suppose __FreeBSD_version is not available in gcc/config/freebsd-spec.h and 
your patch doesn't work. At least in comments above #define FBSD_LIB_SPEC they 
say osreldate.h can not be used as it breaks cross-compiling. Though this is 
just an assumption and I may be mistaken. I do not propose any patches because 
I'm not sure if I correctly identified the source of the problem and I don't 
know in which way exactly should it be fixed. Anyway I think you can do it 
better and it won't take too much of your time.

p.s. Happy New Year and thank you for the great work you are doing for 
FreeBSD.

-- 
Oleg Sharoiko.
Software and Network Engineer
Computer Center of Rostov State University.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050102182843.N21639>