Closed Bug 288995 Opened 20 years ago Closed 14 years ago

Support XPTCALL for Solaris x86 for AMD64 (x86-64)

Categories

(Core :: XPCOM, enhancement)

x86_64
Solaris
enhancement
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 537071

People

(Reporter: balbertson, Unassigned)

References

Details

User-Agent:       Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.7.6) Gecko/20050301 Firefox/1.0.1
Build Identifier: Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.7.6) Gecko/20050301 Firefox/1.0.1

I am running Solaris 10 x86 on a Sun W1100z workstation.  This is an AMD64 based
system.  It is running in 64bit mode.  When I compile any of the Mozilla Suite
or Firefox, it gives me the following:

configure:4972: checking for 64-bit OS
configure:4982: gcc -o conftest    -I/usr/openwin/include  conftest.c  1>&5
configure: failed program was:
#line 4977 "configure"
#include "confdefs.h"
 int main () {
    if (sizeof(long) == 8) { return 0; } return 1; }

and HAVE_64BIT_OS=1 is never set.

Here's the output of isainfo -v:

dev-zero:{root}# isainfo -v
64-bit amd64 applications
        sse2 sse fxsr amd_3dnowx amd_3dnow amd_mmx mmx cmov amd_sysc cx8 tsc
        fpu
32-bit i386 applications
        sse2 sse fxsr amd_3dnowx amd_3dnow amd_mmx mmx cmov amd_sysc cx8 tsc
        fpu


Reproducible: Always

Steps to Reproduce:
1. run ./configure
2. watch it not detect your system as 64 bit

Actual Results:  
Did not enable 64 bit compile.

Expected Results:  
Should have set HAVE_64BIT_OS=1
What mode does gcc use by default for your machine?  If it uses 32bit mode by
default, then you may need to explicitly pass '-m64' to gcc to get it to pass
that test. And easy way to check is to build a simple hello world program and
run 'file' on it.
OS: SunOS → Solaris
(In reply to comment #1)
> What mode does gcc use by default for your machine?  If it uses 32bit mode by
> default, then you may need to explicitly pass '-m64' to gcc to get it to pass
> that test. And easy way to check is to build a simple hello world program and
> run 'file' on it.

My system does compile 32 bit by default.  I tried to use the flag
--enable-64bit.  That fails because nsprpub is still built in 32 bit mode.  So,
I set CFLAGS and CXXFLAGS to "-m64".  This fails when compiling
xptcinvoke_x86_solaris.cpp with this error:

gmake[7]: Entering directory
`/var/tmp/mozilla_cvs/mozilla/xpcom/reflect/xptcall/src/md/unix'
xptcinvoke_x86_solaris.cpp
c++ -o xptcinvoke_x86_solaris.o -c  -DOSTYPE=\"SunOS5\" -DOSARCH=\"SunOS\"
-DBUILD_ID=0000000000 -DEXPORT_XPTC_API   -I../../../../../../dist/include/xpcom
-I../../../../../../dist/include -I../../../../../../dist/include/nspr   
-I../../../../../../dist/sdk/include -I./../.. -I/usr/openwin/include   -fPIC 
-I/usr/openwin/include -fno-rtti -fno-exceptions -Wno-long-long -m64
-fshort-wchar -pthreads -pipe  -DNDEBUG -DTRIMMED -O3  -I/usr/openwin/include
-DMOZILLA_CLIENT -include ../../../../../../mozilla-config.h
-Wp,-MD,.deps/xptcinvoke_x86_solaris.pp xptcinvoke_x86_solaris.cpp
{standard input}: Assembler messages:
{standard input}:56: Error: suffix or operands invalid for `push'
{standard input}:57: Error: suffix or operands invalid for `push'
{standard input}:58: Error: suffix or operands invalid for `push'
{standard input}:61: Error: suffix or operands invalid for `mov'
{standard input}:62: Error: suffix or operands invalid for `push'
{standard input}:63: Error: `(%ecx)' is not a valid 64 bit base/index
expression{standard input}:65: Error: `(%edx,%eax,4)' is not a valid 64 bit
base/index expression
{standard input}:66: Error: `*(%edx)' is not a valid 64 bit base/index expression
gmake[7]: *** [xptcinvoke_x86_solaris.o] Error 1
gmake[7]: Leaving directory
`/var/tmp/mozilla_cvs/mozilla/xpcom/reflect/xptcall/src/md/unix'
gmake[6]: *** [libs] Error 2
gmake[6]: Leaving directory
`/var/tmp/mozilla_cvs/mozilla/xpcom/reflect/xptcall/src/md'
gmake[5]: *** [libs] Error 2
gmake[5]: Leaving directory `/var/tmp/mozilla_cvs/mozilla/xpcom/reflect/xptcall/src'
gmake[4]: *** [libs] Error 2
gmake[4]: Leaving directory
`/var/tmp/mozilla_cvs/mozilla/xpcom/reflect/xptcall'gmake[3]: *** [libs] Error 2
gmake[3]: Leaving directory `/var/tmp/mozilla_cvs/mozilla/xpcom/reflect'
gmake[2]: *** [libs] Error 2
gmake[2]: Leaving directory `/var/tmp/mozilla_cvs/mozilla/xpcom'
gmake[1]: *** [tier_2] Error 2
gmake[1]: Leaving directory `/var/tmp/mozilla_cvs/mozilla'
gmake: *** [default] Error 2

So, how do I tell mozilla to compile a 64 bit binary???

Brett

 

To compile in 64bit mode, you have to pass in the proper 64bit flags for your
compiler via CFLAGS/CXXFLAGS.  Mozilla's configure should automatically set
--enable-64bit when configuring NSPR when it detects that you're targetting a
64bit build.  

As far as xptcinvoke goes, it looks as though it the x86 solaris port doesn't
support 64bit builds.  See
http://lxr.mozilla.org/seamonkey/source/xpcom/reflect/xptcall/status.html .

Someone will have to implement xptcall for solaris x86_64.  You might be able to
piggy back on the linux x86_64 port but I'm not certain.
Assignee: nobody → dougt
Severity: major → enhancement
Status: UNCONFIRMED → NEW
Component: Build Config → XPCOM
Ever confirmed: true
QA Contact: build-config
Summary: configure does not correctly identify my system as 64bit → Support XPTCALL for Solaris x86 for AMD64 (x86-64)
Assignee: dougt → nobody
QA Contact: xpcom
set correct cpu type
Hardware: x86 → x86_64
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.