Closed Bug 284438 Opened 19 years ago Closed 19 years ago

compile on Solaris 10 / SunFire v20z with Opteron 64-Bit faild when using gcc

Categories

(NSS :: Build, defect)

x86
Solaris
defect
Not set
normal

Tracking

(Not tracked)

VERIFIED WORKSFORME

People

(Reporter: ewald.ertl, Assigned: wtc)

Details

User-Agent:       Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.5) Gecko/20041109 Firefox/1.0
Build Identifier: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.5) Gecko/20041109 Firefox/1.0

Configuring the C-SDK using gcc on a SunFire V20z ( Opteron-Processor with
64-bit ) to build a 64-Bit Environment fails. 
gas - the assembler fails, because of the Option -Wa,-P which is supplied. 
The compilation should succed with "-m64 -march=opteron" for 64-Bit. 

After I got this all, the compilation broke, because of a missing Assembler-Modul 
in /nsprpub/pr/src/md/unix/ for the 64-Bit-Part under Solaris. 



Reproducible: Always

Steps to Reproduce:
1. compilation of the c-sdk with 64-Bit support on Solaris 10 with a 64-Bit
AMD-processor by using the gcc
2.
3.
I do not have access to Solaris 10 or an Opteron-based system.  Did the
compilation fail inside NSPR (mozilla/nsprpub) or in the LDAP
(mozilla/directory) code?  Can you provide a patch?
Summary: compile on Solaris 10 / SunFire v20z with Opteron 64-Bit faild when using gcc → compile on Solaris 10 / SunFire v20z with Opteron 64-Bit faild when using gcc
The problem occured during the compile step in security/nss

Here I started with NS_USE_GCC=1 USE_64=1 USE_X86=1 gmake nss_build_all. 

In security/coreconf/SunOS5.10_i86pc.mk  I added to the OS_DEFINES -m64
-march=opteron, but I don't know if this is the right place. 
The Place of the error is appended at the end. 
Sorry, I can not provide a patch, because I've no knowledge about
assembler-programming. 



Here is the extract where the make produced an error: 
gmake[5]: Entering directory
`/entw/tools/MozillaDirectorySDK/mozilla/nsprpub/SunOS5.10_i86pc_gcc_64_DBG.OBJ/pr/src/md/unix'
gcc -o os_SunOS_x86.o   -m64 -march=opteron   -Wall -pthreads -gstabs -Wa,-s
-fPIC  -UNDEBUG -DDEBUG_tools  -DDEBUG=1 -DXP_UNIX=1 -DSVR4=1 -DSYSV=1
-D__svr4=1 -D__svr4__=1 -DSOLARIS=1 -DHAVE_FCNTL_FILE_LOCKING=1 -Di386=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/entw/tools/MozillaDirectorySDK/mozilla/security/nss/../../dist/SunOS5.10_i86pc_gcc_64_DBG.OBJ/include
-I../../../../../pr/include -I../../../../../pr/include/private   -c
../../../../../pr/src/md/unix/os_SunOS_x86.s
../../../../../pr/src/md/unix/os_SunOS_x86.s: Assembler messages:
../../../../../pr/src/md/unix/os_SunOS_x86.s:46: Error: `4(%esp)' is not a valid
64 bit base/index expression
../../../../../pr/src/md/unix/os_SunOS_x86.s:88: Error: `4(%esp)' is not a valid
64 bit base/index expression
Reassigning this bug to NSS for now (there may be issues under mozilla/directory
as well, but NSPR and NSS need to compile first).
Component: LDAP C SDK → Build
Product: Directory → NSS
Version: other → unspecified
Assignee: mcs → wtchang
QA Contact: wtchang
Support for Solaris 10 on AMD Opteron with 64-bit
is only available in NSPR 4.5.1 and NSS 3.9.3 or later.

I suggest you cvs checkout -r NSPR_4_5_1_RTM mozilla/nsprpub
and cvs checkout -r NSS_3_9_5_RTM mozilla/security/coreconf mozilla/security/nss.

By the way, USE_X86 is not used by anything in
the Mozilla cvs repository (including NSPR and
NSS).  So passing USE_X86=1 to
gmake nss_build_all is useless (but also harmless).
Status: NEW → ASSIGNED
NSS 3.10 is going to Public Beta next week (assuming all goes according 
to plan).  It supports AMD64, and even has optimized assembler for it.
I use a v20z as my primary development system and build NSS 3.10 every 
day on it.  I suggest you try it.

Can we mark this bug "works for me"? 
Ewald,

If you don't have access to Solaris 10, you won't be able to build an AMD64
version of NSS, for the simple reason that the NSS build system runs a command
called "shlibsign" , which is a tool it has just built. This requirement
prevents cross-compilation of NSS.

You need to :
1) download and install Solaris 10 on your machine. This is free from sun.com .
On a v20z, the AMD64 kernel will automatically be installed
2) update your source trees to the versions Wan-Teh noted, NSPR 4.5.1 and NSS
3.9.5 .
3) go to mozilla/security/nss and run "gmake nss_build_all USE_64=1 NS_USE_GCC=1"

Note that if you pull the tip of NSS instead of 3.9.5, you will also get several
new optimizations for RSA and RC4 in native AMD64 assembly .

Marking the bug WORKSFORME.
Status: ASSIGNED → RESOLVED
Closed: 19 years ago
Resolution: --- → WORKSFORME
(In reply to comment #6)

Hi!
Sorry for the late answere, but currently I have other things to do. 

I've downloaded the suggestet SOURCES mentioned by Wan-Teh and compiled 
NSS & NSPR successfully. 
The next step for me was  to compile the directory-Part, but here I stuck, but I
will continue, when I've again time. 

But nevertheless, thank you all for your help
Target Milestone: --- → 3.9.5
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.