Closed Bug 52398 Opened 25 years ago Closed 25 years ago

FreeBSD needs USE_PTHREADS on by default to compile NSS 3.1

Categories

(NSS :: Libraries, defect, P3)

x86
FreeBSD
defect

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: tstromberg, Assigned: wtc)

Details

Attachments

(1 file)

build under FreeBSD 5 breaks because USE_PTHREADS are not defined by default, and it tries to link with pthreads anyways. In BSD, you have to specify a re-entrant libc (-lc_r) to use pthreads. To fix, set USE_PTHREADS=1 build breakage follows: gmake[2]: Entering directory `/usr/src/moz-crypto/mozilla/security/nss/cmd/atob' gcc -o FreeBSD5.0_OPT.OBJ/atob.o -c -O -fPIC -Di386 -ansi -Wall -pipe -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK -DXP_UNIX -DNSPR20 -UDEBUG -DNDEBUG -I/usr/X11R6/include -I../../../../dist/FreeBSD5.0_OPT.OBJ/include -I../../../../dist/public/security -I../../../../dist/private/security -I../../../../dist/public/seccmd -I../../../../dist/public/dbm atob.c gcc -o FreeBSD5.0_OPT.OBJ/atob -O -fPIC -Di386 -ansi -Wall -pipe -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK -DXP_UNIX -DNSPR20 -UDEBUG -DNDEBUG -I/usr/X11R6/include -I../../../../dist/FreeBSD5.0_OPT.OBJ/include -I../../../../dist/public/security -I../../../../dist/private/security -I../../../../dist/public/seccmd -I../../../../dist/public/dbm FreeBSD5.0_OPT.OBJ/atob.o ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libsmime.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libssl.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libjar.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libzlib.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libnss.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libssl.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libsectool.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libpkcs7.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libcerthi.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libpk11wrap.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libcryptohi.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libcerthi.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libpk11wrap.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libsoftoken.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libcertdb.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libswfci.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libfreebl.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libfreebl.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libsecutil.a ../../../../dist/FreeBSD5.0_OPT.OBJ/lib/libdbm.a -L../../../../dist/FreeBSD5.0_OPT.OBJ/lib/ -lplc4 -lplds4 -lnspr4 -lc ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_cond_signal' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_attr_destroy' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_create' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_getspecific' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_attr_init' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_condattr_init' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_equal' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_getschedparam' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_attr_setscope' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_cond_broadcast' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_once' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_attr_setinheritsched' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_setschedparam' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_key_create' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_kill' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_attr_setstacksize' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_cond_init' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_mutex_unlock' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_self' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_mutexattr_init' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_mutex_destroy' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_mutex_lock' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_cond_wait' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_mutex_trylock' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_cond_destroy' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_mutex_init' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_attr_setschedparam' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_attr_setdetachstate' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_join' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_cond_timedwait' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_attr_getschedparam' ../../../../dist/FreeBSD5.0_OPT.OBJ/lib//libnspr4.so: undefined reference to `pthread_setspecific' gmake[2]: *** [FreeBSD5.0_OPT.OBJ/atob] Error 1 gmake[2]: Leaving directory `/usr/src/moz-crypto/mozilla/security/nss/cmd/atob' gmake[1]: *** [libs] Error 2 gmake[1]: Leaving directory `/usr/src/moz-crypto/mozilla/security/nss/cmd' gmake: *** [libs] Error 2
the makefiles should probably use -pthread rather then -lc / -lc_r, this appears to work.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Target Milestone: --- → 3.1
As a preparatory step, I added a new file FreeBSD.mk, which contains the config stuff common to all versions of FreeBSD.mk. FreeBSD2.mk now merely includes FreeBSD.mk.
Status: NEW → ASSIGNED
The other changes I merged from NSPR's FreeBSD.mk are: 1. support for alpha; 2. support for both a.out and ELF shared libraries. The fix is checked into rev. 1.3 of mozilla/security/coreconf/FreeBSD.mk.
URL: -
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: