Closed
Bug 233048
Opened 21 years ago
Closed 20 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•20 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: 20 years ago
Resolution: --- → FIXED
Target Milestone: --- → 3.10
Comment 16•19 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
•