Closed Bug 1153610 Opened 9 years ago Closed 9 years ago

MIPS64: Add support for n64 ABI

Categories

(NSPR :: NSPR, defect, P2)

Other
Linux
defect

Tracking

(Not tracked)

RESOLVED FIXED
4.10.9

People

(Reporter: hev, Assigned: hev)

References

Details

Attachments

(2 files)

Currently, The NSPR just only support mips32 o32 ABI. On MIPS 64-bit platform, the long size, word size and pointer size are wrong.
Attachment #8591333 - Flags: review?(wtc)
Attached patch Proposed patchSplinter Review
Heiher,

Thank you for the patch. Could you please try this patch?
The only real difference from your patch is that it also
defines the IS_64 macro. Thanks.
Attachment #8594204 - Flags: feedback?(r)
Attachment #8594204 - Flags: feedback?(r) → feedback+
Comment on attachment 8594204 [details] [diff] [review]
Proposed patch

Thank you. I checked this patch in:
https://hg.mozilla.org/projects/nspr/rev/a270f643385c
Attachment #8594204 - Flags: checked-in+
Assignee: wtc → r
Status: NEW → RESOLVED
Closed: 9 years ago
Priority: -- → P2
Resolution: --- → FIXED
Target Milestone: --- → 4.10.9
This fix is wrong, it breaks non 64-bits mips because _ABI64 is always defined. Please backout.
(or fix)
(In reply to Mike Hommey [:glandium] from comment #4)
> This fix is wrong, it breaks non 64-bits mips because _ABI64 is always
> defined. Please backout.

Hi,

Thanks report. Please tell me which compiler are you used?

I have tested GCC:
[heiher@lemote work]$ gcc -v
Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/mips64el-redhat-linux/4.9.2/lto-wrapper
Target: mips64el-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --enable-languages=c,c++,objc,obj-c++,fortran,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/root/rpmbuild/BUILD/gcc-4.9.2-20141101/obj-mips64el-redhat-linux/isl-install --with-cloog=/root/rpmbuild/BUILD/gcc-4.9.2-20141101/obj-mips64el-redhat-linux/cloog-install --enable-gnu-indirect-function --with-long-double-128 --build=mips64el-redhat-linux
Thread model: posix
gcc version 4.9.2 20141101 (Red Hat 4.9.2-2) (GCC) 

These are GCC/MIPS64 multilib predefined macros in diffenrent ABIs:
[heiher@lemote work]$ gcc -mabi=32 -dM -E - < /dev/null | grep "_ABI"
#define _ABIO32 1
#define __GXX_ABI_VERSION 1002
#define _MIPS_SIM _ABIO32

[heiher@lemote work]$ gcc -mabi=n32 -dM -E - < /dev/null | grep "_ABI"
#define __GXX_ABI_VERSION 1002
#define _MIPS_SIM _ABIN32
#define _ABIN32 2

[heiher@lemote work]$ gcc -mabi=64 -dM -E - < /dev/null | grep "_ABI"
#define _ABI64 3
#define __GXX_ABI_VERSION 1002
#define _MIPS_SIM _ABI64
Depends on: 1199867
(In reply to Heiher [:hev] from comment #6)
> (In reply to Mike Hommey [:glandium] from comment #4)
> > This fix is wrong, it breaks non 64-bits mips because _ABI64 is always
> > defined. Please backout.
> 
> Hi,
> 
> Thanks report. Please tell me which compiler are you used?

It's not a compiler thing. Glibc is what is defining _ABI64.

Filed bug 1199867 with a fix.
(In reply to Mike Hommey [:glandium] from comment #7)
> (In reply to Heiher [:hev] from comment #6)
> > (In reply to Mike Hommey [:glandium] from comment #4)
> > > This fix is wrong, it breaks non 64-bits mips because _ABI64 is always
> > > defined. Please backout.
> > 
> > Hi,
> > 
> > Thanks report. Please tell me which compiler are you used?
> 
> It's not a compiler thing. Glibc is what is defining _ABI64.
> 
> Filed bug 1199867 with a fix.

Got it, Thank you. ;)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: