Up: SGI apps Frequently Asked Questions (FAQ)
Next: -56- What are GP-relative and GOT overflows, and how can I fix them?
Previous: -54- Why don't COFF executables run on IRIX 6.1 or 6.2?
Subject:   -55- What object file formats will IRIX 6.2 support?
Date: 04 Aug 1995 00:00:01 EST

  Bruce Karsh <karsh@audio.esd.sgi.com> writes: IRIX 6.2 will support
    
    4 processors:	R4000, R4400, R4600, R8000
    3 ABIs:		-32, -n32, -64
    4 instruction sets:	mips1, mips2, mips3, mips4

  Irix 6.2 will not support R3000 (or earlier) processors.

  Instruction sets:

    mips1:  The old 32 bit R3000 instruction set.  It's mostly for
	    compatibility.  New code probably should not use it.
	    Available on all 4 processors.

    mips2:  Adds more floating point registers Adds some improvements
	    to the floating point instructions.  mips2 code may be a
	    bit smaller than mips3 code.
	    Available on all 4 processors.

    mips3:  General purpose registers are 64 bits wide.  Some new
	    instructions are added to load, store, and manipulate 64
	    bit wide quantities.
	    Available on all 4 processors.
    
    mips4:  Adds some supercomputing-style instructions.
	    Available on the R8000 only, due to hardware restrictions.

    The mips1 and mips2 instruction sets both are available only on the
    -32 ABI.  The mips3 and mips4 instruction sets both are available
    on either the -n32 or -64 ABI, but not on the -32 ABI.

    You may mix -mips1 and -mips2 objects together to make a -mips2
    executable.  You may mix -mips3 and -mips4 objects together to make
    a -mips4 executable.  No other mixing of instruction sets is
    allowed.

  ABIs:

    -32:    Supports the 32 bit instruction sets.  This is just what we
	    are all used to from 5.3.
	    Available on all 4 processors.

    -n32:   Supports the 64 bit instruction sets, but not pointers and
	    longs all remain 32 bits long.  (long longs are 64 bits
	    wide).  The -n32 ABI is source code compatible with -32.
	    Available on all 4 processors.

    -64     Supports 64 bit instruction sets and 64 bit pointers.
	    longs and pointers are all 64 bits wide.  Great for apps
	    which need a LARGE address space.  The -64 ABI is not
	    source code compatible with -n32 and -32 since in -64 longs
	    and pointers are now 64 bit quantities.  This means that
	    casts of ints to/from pointers will not work in most cases
	    and the layout of structs will be different.
            Available on the R8000 and the IP19 (R4400) processors only,
	    due to OS restrictions.  ( -64 requires a large kernel).

  Summary:
  
    Format	 Function                               Processors
    ------	 --------                               ----------
    -32  -mips1  old, 32 bit, mostly for compatibility  ALL
    -32  -mips2  above plus more fp regs, faster fp	ALL
    -n32 -mips3  64 bit regs, 32 bit pointers           ALL
    -n32 -mips4  above plus supercomuter instructions   R8000
    -64  -mips3  64 bit regs, 64 bit pointers           R8000 & IP19 R4400
    -64  -mips4  above plus supercomputer instructions  R8000

  The compiler can produce executables in all supported formats on all
  supported processors, although not all formats will *execute* on all
  processors.  The old 4.x object file format, COFF, will no longer be
  supported.  Only the newer format, ELF, will be supported.

Up: SGI apps Frequently Asked Questions (FAQ)
Next: -56- What are GP-relative and GOT overflows, and how can I fix them?
Previous: -54- Why don't COFF executables run on IRIX 6.1 or 6.2?