Closed Bug 190531 Opened 23 years ago Closed 11 years ago

prlog.c doesn't compile on Tru64Unix

Categories

(NSPR :: NSPR, defect, P2)

4.2.1
DEC
OSF/1
defect

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: mmokrejs, Assigned: wtc)

References

Details

Attachments

(1 file)

User-Agent: Mozilla/4.78 [en] (X11; U; OSF1 V5.1 alpha) Build Identifier: Hi, I've hit another problem: cc -std1 -ieee_with_inexact -readonly_strings -o prlog.o -c -I/software/@sys/usr/include -I/usr/local/include -I/usr/local/openssl/include -O2 -arch ev56 -g -UNDEBUG -DDEBUG_root -DMOZILLA_CLIENT=1 -DDEBUG=1 -DXP_UNIX=1 -DOSF1=1 -D_REENTRANT=1 -D_PR_POLL_WITH_SELECT=1 -DOSF1_HAVE_MACHINE_BUILTINS_H=1 -DHAVE_FCNTL_FILE_LOCKING=1 -DHAVE_POINTER_LOCALTIME_R=1 -DHAVE_LCHOWN=1 -DHAVE_STRERROR=1 -DFORCE_PR_LOG -D_NSPR_BUILD_ -I/usr/local/scratch/mozilla/dist/include/nspr -I../../../pr/include -I../../../pr/include/private prlog.c cc: Info: File not optimized; use -g3 if both optimization and debug wanted. (suppressoptlvl) cc: Warning: prlog.c, line 445: In the initializer for _me, "_MD_CURRENT_THREAD(...)" of type "int", is being converted to "pointer to struct PRThread". (cvtdiftypes) _PR_LOCK_LOG(); ----^ cc: Warning: prlog.c, line 463: In this statement, "_MD_CURRENT_THREAD(...)" of type "int", is being converted to "pointer to struct PRThread". (cvtdiftypes) _PR_UNLOCK_LOG(); ----^ cc: Error: prlog.c, line 463: In this statement, "(_MD_CURRENT_CPU(...))" has a signed int type, but occurs in a context that requires a pointer. (needpointer) _PR_UNLOCK_LOG(); ----^ cc: Warning: prlog.c, line 463: In this statement, "(_MD_CURRENT_CPU(...))" of type "int", is being converted to "pointer to struct _PRCPU". (cvtdiftypes) _PR_UNLOCK_LOG(); ----^ cc: Warning: prlog.c, line 470: In the initializer for _me, "_MD_CURRENT_THREAD(...)" of type "int", is being converted to "pointer to struct PRThread". (cvtdiftypes) _PR_LOCK_LOG(); --------^ cc: Warning: prlog.c, line 475: In this statement, "_MD_CURRENT_THREAD(...)" of type "int", is being converted to "pointer to struct PRThread". (cvtdiftypes) _PR_UNLOCK_LOG(); --------^ cc: Error: prlog.c, line 475: In this statement, "(_MD_CURRENT_CPU(...))" has a signed int type, but occurs in a context that requires a pointer. (needpointer) _PR_UNLOCK_LOG(); --------^ cc: Warning: prlog.c, line 475: In this statement, "(_MD_CURRENT_CPU(...))" of type "int", is being converted to "pointer to struct _PRCPU". (cvtdiftypes) _PR_UNLOCK_LOG(); --------^ make[5]: *** [prlog.o] Error 1 make[5]: Leaving directory `/usr/local/scratch/mozilla/nsprpub/pr/src/io' Another problem is that the *FLAGS from config.status get overriden in some directories, like mozilla/nsprpub/pr/src/io. I've explicitly set "-g3" in CFLAGS and CXXFLAGS, but as you see above, there's -g set only. Reproducible: Always Steps to Reproduce: 1. 2. 3.
-> NSPR
Assignee: seawood → wtc
Component: Build Config → NSPR
Product: Browser → NSPR
QA Contact: granrose → wtc
Version: Trunk → 4.2.1
*** Bug 167960 has been marked as a duplicate of this bug. ***
I need the flags you passed to configure and your generated nsprpub/config/autoconf.mk file. The reason the compilation of prlog.c failed is that -D_PR_THREADS=1 is not in the compile command line. Did you pass --without-pthreads to configure?
$ ./configure --enable-crypto --with-libIDL-prefix=/software/@sys/usr [...] $ cat nsprpub/config/autoconf.mk # -*- Mode: Makefile -*- INCLUDED_AUTOCONF_MK = 1 USE_AUTOCONF = 1 SHELL = /usr/bin/ksh MOZILLA_CLIENT = 1 prefix = /usr/local exec_prefix = ${prefix} bindir = ${exec_prefix}/bin includedir = ${prefix}/include/nspr libdir = ${exec_prefix}/lib datadir = ${prefix}/share dist_prefix = /usr/local/scratch/mozilla/dist dist_bindir = ${dist_prefix}/bin dist_includedir = ${dist_prefix}/include/nspr dist_libdir = ${dist_prefix}/lib DIST = $(dist_prefix) RELEASE_OBJDIR_NAME = OSF1V5.1_64_DBG.OBJ OBJDIR_NAME = . OBJDIR = . OBJ_SUFFIX = o LIB_SUFFIX = a DLL_SUFFIX = so ASM_SUFFIX = s MOD_NAME = nspr20 MOD_MAJOR_VERSION = 4 MOD_MINOR_VERSION = 3 MOD_REVISION_VERSION = 0 LIBNSPR = -L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION) LIBPLC = -L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION) CROSS_COMPILE = BUILD_OPT = USE_CPLUS = USE_IPV6 = USE_N32 = USE_64 = 1 GC_LEAK_DETECTOR = ENABLE_STRIP = USE_PTHREADS = USE_BTHREADS = PTHREADS_USER = CLASSIC_NSPR = AS = $(CC) ASFLAGS = $(CFLAGS) CC = cc -std1 -ieee_with_inexact -readonly_strings CCC = cxx NS_USE_GCC = AR = /usr/bin/ar AR_FLAGS = cr $@ LD = /usr/bin/ld RANLIB = ranlib PERL = /software/@sys/usr/bin/perl RC = RCFLAGS = STRIP = /usr/bin/strip NSINSTALL = $(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall FILTER = IMPLIB = CYGWIN_WRAPPER = OS_CPPFLAGS = -I/software/@sys/usr/include -I/usr/local/include -I/usr/local/openssl/include OS_CFLAGS = $(OS_CPPFLAGS) -O2 -arch ev56 -g $(DSO_CFLAGS) OS_CXXFLAGS = $(OS_CPPFLAGS) -O2 -arch ev56 -g $(DSO_CFLAGS) OS_LIBS = OS_LDFLAGS = OS_DLLFLAGS = DLLFLAGS = EXEFLAGS = OPTIMIZER = MKSHLIB = $(LD) $(DSO_LDOPTS) -o $@ DSO_CFLAGS = DSO_LDOPTS = -shared -all -expect_unresolved "*" -soname $(notdir $@) RESOLVE_LINK_SYMBOLS = HOST_CC = cc HOST_CFLAGS = -O2 -arch ev56 -DXP_UNIX DEFINES = -UNDEBUG -DDEBUG_root -DMOZILLA_CLIENT=1 -DDEBUG=1 -DXP_UNIX=1 -DOSF1=1 -D_REENTRANT=1 -D_PR_POLL_WITH_SELECT=1 -DOSF1_HAVE_MACHINE_BUILTINS_H=1 -DHAVE_FCNTL_FILE_LOCKING=1 -DHAVE_POINTER_LOCALTIME_R=1 -DHAVE_LCHOWN=1 -DHAVE_STRERROR=1 MDCPUCFG_H = _osf1.cfg PR_MD_CSRCS = osf1.c PR_MD_ASFILES = PR_MD_ARCH_DIR = unix CPU_ARCH = OS_TARGET = OSF1 OS_ARCH = OSF1 OS_RELEASE = V5.1 OS_TEST = alpha NOSUCHFILE = /no-such-file AIX_LINK_OPTS = MOZ_OBJFORMAT = ULTRASPARC_LIBRARY = OBJECT_MODE = ifdef OBJECT_MODE export OBJECT_MODE endif $
I found an OSF1 V5.1A machine (mainz.mcom.com) so I have confirmed this bug. Here is the error message from the configure test that should have succeeded: configure:4967: checking for pthread_create in -lpthread cc -std1 -ieee_with_inexact -readonly_strings -o dummy dummy.c -lpthread cc: Error: /usr/include/pthread.h, line 1251: #error "Please compile the module including pthread.h with -pthread" (errormessage) # error "Please compile the module including pthread.h with -pthread" ---^ This means the MOZ_CHECK_PTHREADS function needs to be enhanced to compile the test program with the -pthread compiler flag on OSF1. This is not easy to do, so for now I suggest that you add -pthread to your CFLAGS as a workaround. (I believe you are setting CFLAGS to "-O2 -arch ev56" right now.) This workaround causes a problem that OS_LIBS is incorrectly set to -lpthreads (the correct value is -lpthread) in nsprpub/config/autoconf.mk. Fortunately NSPR makefiles always override OS_LIBS on OSF1. So it'll still work for you.
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
Priority: -- → P1
Target Milestone: --- → 4.3
Yes, adding -pthread to CFLAGS helped. Thanks.
Thank you for the suggestion. I am not sure if we can use that macro, which is licensed only under the GPL, because our configure.in script is dual-licensed under MPL/GPL.
Priority: P1 → P2
Flags: blocking1.4?
Not gonna hold 1.4 for this.
Flags: blocking1.4? → blocking1.4-
I have successfully compiled 1.6a. I attach the nsprpub/config/autoconf.mk file. Unfortunately, mozilla doesn't start, but that's another issue.
I configured as follows: CFLAGS="-O0 -arch ev56 -g2 -pthread" CXXFLAGS="-O0 -arch ev56 -g2" ./configure --enable-crypto --with-libIDL-prefix=/software/@sys/usr --prefix=/software/@sys/usr --enable-debug-modules --enable-debugger-info-modules
The previous snapshot I compiled with cc/cxx. I tried now current snapshot of 1.6a with gcc/g++ (3.3) and it failed: checking for pthread_create in -lpthreads... no checking for pthread_create in -lpthread... no checking for pthread_create in -lc_r... no checking for pthread_create in -lc... no I remember that threads are not supported on Tru64Unix under gcc-3. If threads are required for prlog.c to compiled, configure should take care of that. The conclusion now is: on Tru64Unix gcc-3 cannot be used to compile mozilla prlog.c. cxx can't be used either because of gfx/src/ps/ using freetype2.
The problems on my unix with Freetype2 arise from fact that when freetype1 and freetype2 is installed in same $prefix, some headers get included from freetype2 and some from freetype1. The problem was noted by freetype developers. Maybe, the easiest would be to check in configure if also freetype1 headers are available and if yes, possible exit and ask user to uninstall freetype1. That's anyway what Freetype developers says.
Does configure die when freetype1 headers are included? Note my last comment. The problem is that when freetype1 and freetype2 were installed into same $prefix (mostly as it is default), mozill awill have these problems to build and very difficult to track. Find a way to check for $prefix of freetype1 and $freetype2 specific headers. If $prefix'es same, then die. The problem is that freetype2 install process already overwrote some freetype1 headers. :( .. so you might not be able to get configure test succeeding on freetype1 either because the are not installe dor that were already overwritten. Maybe figuring out $prefix of freetype and then doing "test -f $prefix/some-freetype1_header_file.h" would be just fine.
QA Contact: wtchang → nspr
The target milestone is already released. Resetting target milestone.
Target Milestone: 4.3 → ---
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: