Closed
Bug 233048
Opened 21 years ago
Closed 21 years ago
64bit build does not work on solaris with gcc
Categories
(NSS :: Build, defect, P2)
Tracking
(Not tracked)
RESOLVED
FIXED
3.10
People
(Reporter: Vladimir.Marek, Assigned: wtc)
Details
Attachments
(2 files, 1 obsolete file)
2.50 KB,
patch
|
Details | Diff | Splinter Review | |
3.80 KB,
patch
|
nelson
:
review+
|
Details | Diff | Splinter Review |
User-Agent:
Build Identifier:
after running
CXX=g++ CC=gcc ./configure --enable-64bit
makefiles are not set in order to build 64bit version
Reproducible: Always
Steps to Reproduce:
1. Download and unpack nss-3.9.tar.gz
2. cd nss-3.9/mozilla/nsprpub
3. CXX=g++ CC=gcc ./configure --enable-64bit
4. make
Actual Results:
[...]
gcc -o prfdcach.o -c -Wall -pthreads -g -fPIC -UNDEBUG -DDEBUG_prints
-DDEBUG=1 -DXP_UNIX=1 -DSVR4=1 -DSYSV=1 -D__svr4=1 -D__svr4__=1 -DSOLARIS=1
-DHAVE_FCNTL_FILE_LOCKING=1 -D_PR_HAVE_OFF64_T=1 -D_LARGEFILE64_SOURCE=1
-DHAVE_LCHOWN=1 -DHAVE_STRERROR=1 -D_REENTRANT=1 -DHAVE_POINTER_LOCALTIME_R=1
-DFORCE_PR_LOG -D_PR_PTHREADS -UHAVE_CVAR_BUILT_ON_SEM -D_NSPR_BUILD_
-I../../../dist/include/nspr -I../../../pr/include -I../../../pr/include/private
prfdcach.c
[...]
Expected Results:
64bit build
We can somehow get near to expected result by:
LDFLAGS=-m64 CFLAGS='-m64 -mcpu=ultrasparc' CXX=g++ CC=gcc ./configure
--enable-64bit
object files are then build with 64bit support, but dynamic libraries are still
not linked 64bit wise
Assignee | ||
Updated•21 years ago
|
Status: UNCONFIRMED → NEW
Ever confirmed: true
OS: other → Solaris
Hardware: Other → Sun
Assignee | ||
Comment 1•21 years ago
|
||
Are you trying to build NSPR standalone, or are you trying to
build NSPR as a pre-requisite for NSS?
You need to modify the following code in mozilla/nsprpub/configure.in
so that we use the right compiler flags (-m64 -mcpu=ultrasparc ?)
for gcc if USE_64 is 1:
if test -n "$USE_64" && test -z "$GNU_CC"; then
CC="$CC -xarch=v9"
CXX="$CXX -xarch=v9"
fi
Status: NEW → ASSIGNED
Version: unspecified → 3.9
Comment 2•21 years ago
|
||
Vladimír:
Slighly offtopic: gcc's support for 64bit sparc is still very buggy. It may
compile but I doubt the resulting binaries will work properly (at least Solaris
64bit kernel modules and Xfree86 do not work properly when compiled with gcc in
64bit mode ... ;-( ), additionally shared libraries compiled with gcc cannot be
used from applications compiled with Sun Workshop (that's a gcc bug, shared
libraries compiled with Sun Workshop work with both gcc- and Sun
Workshop-compiled applications (we hit that issue that often with libGTK/libGDK
that it had to be listed in the release notes for Mozilla ;-( )).
Reporter | ||
Comment 3•21 years ago
|
||
As in my previous bug report, I was not following fully build instructions. As
punishment I'm attaching patch which will make building 64bit on solaris using
gcc a bit simplier. The right set of environment variables seems to be:
CC=gcc
CXX=g++
USE_64=1
NO_MDUPDATE=1
NS_USE_GCC=1
LDFLAGS=-m64
CFLAGS='-m64 -mcpu=ultrasparc'
(maybe it could be stated somewhere in documentation ?)
Sorry again for my ignorance with reading build instructions
Reporter | ||
Comment 4•21 years ago
|
||
The patch is tweaking configure instead of configure.in. This is wrong, but I'm
not able to do better, since I'm not able to create new configure from
configure.in.
Assignee | ||
Comment 5•21 years ago
|
||
Thanks for the patch. Our goal is that one should
only need to set two environment variables:
USE_64=1
NS_USE_GCC=1
1. NO_MDUPDATE is obsolete. You don't need it with
NSS 3.9.
2. If NS_USE_GCC is 1, NSS will pass CC=gcc CXX=g++
to nsprpub/configure, so it is not necessary to
set CC and CXX in the environment.
3. I believe that nsprpub/configure does not check
LDFLAGS, so it is not necessary to set LDFLAGS.
Your nsprpub/configure patch already adds -m4 to
the right variable (DSO_LDOPTS).
4. nsprpub/configure does check CFLAGS, but we want
to hardcode the value -m64 -mcpu=ultrasparc in
nsprpub/configure. I believe you just need to modify
the code I pointed out in comment 1.
Let me know if you can make these changes.
Does your 64-bit gcc Solaris build work?
Assignee | ||
Comment 6•21 years ago
|
||
Comment on attachment 140737 [details] [diff] [review]
Easy build of nss 64bit on solaris with gcc
1. Do we really need -mcpu=ultrasparc for a 64-bit build?
2. Why do we need -DHAVE_SVID_GETTOD in
mozilla/security/coreconf/SunOS5.mk?
Reporter | ||
Comment 7•21 years ago
|
||
I remade the patch, so now only two environment variables are needed:
NS_USE_GCC=1
USE_64=1
plus optionally BUILD_OPT=1
To your questions:
1) NO_MDUPDATE not needed now
2) You're right, CC and GXX is set automatically
3,4) CFLAGS, LDFLAGS now not needed
5) I patched also testing suite, now test seems to work well in debug in release
build. How can I find out if they are right ? all.sh returns with return value
0, and I saw no apparent errors. I can send log from the tests, if it will be
usefull.
b1) -mcpu=ultrasparc trully is not needet too, it's just my habbit, I removed it
from patch
b2) -DHAVE_SVID_GETTOD was needed, otherwise gettimeofday was called with wrong
nuber of parameters. However, this patch fixed it somehow, so that it's not
needed anymore :)
Reporter | ||
Comment 8•21 years ago
|
||
This patch is NOT cumulative patch to previous one, it's replacement.
Attachment #140737 -
Attachment is obsolete: true
Assignee | ||
Comment 9•21 years ago
|
||
Our test instructions at
http://www.mozilla.org/projects/security/pki/nss/testnss_32.html
explain where to find the test results and the
test output log file.
Thanks for the patch. Would be interested to
know if the test results are all "Pass".
Assignee | ||
Comment 10•21 years ago
|
||
This is my version of Vladimír Marek's patch,
after some editing.
Vladimír, could you try this patch? After applying
this patch, you need to regenerate NSPR's configure
script:
cd mozilla/nsprpub
autoconf
If you don't have autoconf, you need to manually
modify mozilla/nsprpub/configure the same way I
changed mozilla/nsprpub/configure.in.
Let me know if this patch works for you. Thanks.
Assignee | ||
Comment 11•21 years ago
|
||
Comment on attachment 141178 [details] [diff] [review]
Proposed patch v1.1
Nelson, this patch supports building NSPR and
NSS for 64-bit Solaris SPARC using gcc.
You only need to review the NSS portion of
this patch. The change to tests/common/init.sh
is similar to cmd/shlibsign/sign.sh, rev. 1.13.
Attachment #141178 -
Flags: review?(MisterSSL)
Comment 12•21 years ago
|
||
Comment on attachment 141178 [details] [diff] [review]
Proposed patch v1.1
Wan-Teh,
The patch to mozilla/security/coreconf/SunOS5.mk looks OK to me, but
I would like to discuss the patch to mozilla/security/nss/tests/common/init.sh
with you.
Assignee | ||
Comment 13•21 years ago
|
||
The reason we need to preserve the old LD_LIBRARY_PATH
value is that starting in GCC 3.0, libgcc is a shared
library and gcc compiled programs must add the location
of libgcc.so to their LD_LIBRARY_PATH in order to run.
In order to run a gcc-compiled shlibsign or other
NSS command-line tools, LD_LIBRARY_PATH must contain
the location of libgcc.so, and therefore we must
prepend ${DIST}/${OBJDIR}/lib to the old value of
LD_LIBRARY_PATH, rather than setting LD_LIBRARY_PATH to
${DIST}/${OBJDIR}/lib.
Then, I extended the same change to the equivalent
environment variables for some Unix variants (SHLIB_PATH
for HP-UX, LIBPATH for AIX, and DYLD_LIBRARY_PATH for
Mac OS X).
Finally, it is harmless to have a trailing ':' in
LD_LIBRARY_PATH.
Comment 14•21 years ago
|
||
Comment on attachment 141178 [details] [diff] [review]
Proposed patch v1.1
Once I woke up enough to realize this was a shell script and not a makefile, my
only remaining concern was for the trailing ':'.
r=MisterSSL
Attachment #141178 -
Flags: review?(MisterSSL) → review+
Assignee | ||
Comment 15•21 years ago
|
||
Patch v1.1 has been checked into the NSS tip (NSS 3.10)
and NSPR tip (NSPR 4.5).
It is not in the Mozilla trunk build yet.
Status: ASSIGNED → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
Target Milestone: --- → 3.10
Comment 16•20 years ago
|
||
Setting priorities on unprioritized bugs resolved fixed for NSS 3.10.
Priority: -- → P2
You need to log in
before you can comment on or make changes to this bug.
Description
•