Closed Bug 190531 Opened 22 years ago Closed 10 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.
How about http://www.gnu.org/software/ac-archive/htmldoc/acx_pthread.html to fix
the configure stuff?
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: 10 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: