The COFF Story

End of Coff Support

COFF (Common Object File Format) is the binary object format of programs compiled under IRIX 4.0.x and earlier.

ELF (Executable and Linking Format) is the binary object format of programs compiled under IRIX 5.x and IRIX 6.x operating systems.

COFF support is the support in the Operating System of the execution and development of COFF Binary object format. COFF support is going away in IRIX releases starting with IRIX 6.1 for two main reasons:

  1. The first and most important one is the run time and extra memory taken up by COFF support. Execution of COFF objects cause IRIX to load into memory in excess of 2MB of additional library support. By removing COFF support that 2MB will be available for other software. It will also result in better performance on almost all systems.
  2. The second reason is the development environment. Intrinsic to the design of the ELF format is a set of structures for the debugging and development of applications such as compilers and debuggers. All development tools designed and implemented over the last 3 years have been targeted to take advantage of these new functionalities.

Beginning with IRIX 6.1, execution and development of IRIX 4.x (COFF) binaries is not being supported. All support of any kind for COFF has been removed from the next IRIX release, including all COFF related functions in the kernel. In IRIX 6.1, some staticly linked COFF programs worked; they will no longer work in the next release. Removal of COFF support means that execution of COFF binaries, run-time linkage of COFF objects and compilation of COFF objects will fail. Error messages can be seen such as this one, "/usr/Wingz/Wingz: Syntax error at line 3: `(' unexpected" when a COFF program is invoked.

The default compiler switches in IRIX 5.2 are such that any user-level program compiled under IRIX 5.2 or later will execute properly under IRIX 6.1 and future releases. This excludes binaries compiled in the IRIX 4.x environment contained in IRIX 5.2.

Some ELF programs might fail for reasons beyond the object file format. These include programs that access /proc or /debug, use kernel data structures, rely on old defects, or use static libraries instead of shared libraries.

The "coff-check" program can be run before installation and after mini-root install. "coff-check" runs the "file" command on all files it can find in the filesystem and determines their nature. "coff-check" produces anywhere from 0 to 4 output files depending on what is installed on the user's system. For example, one lists the files that contain COFF binaries and the second lists the subsystems that contain COFF binaries. Using your favorite file pager like more, view or pg you can view the contents.

Before upgrading to IRIX 6.1 or a future IRIX release, users should contact the vendor of any application that appears in the output from "coff-check" for an ELF version. Customers with specific questions regarding support issues should contact their local support provider.

REFERENCES

MANPAGE 5.3: elf - Executable and Linking Format (ELF) files
MANPAGE 6.2: elf - Executable and Linking Format (ELF) files
MANPAGE 5.3: coff - assembler and link editor COFF output (IRIX 4)
MANPAGE 6.2: coff - assembler and link editor COFF output (IRIX 4)
______________________________________________________________________________
Nithya A. Ruff
Silicon Graphics Inc.
GCS - Product Marketing, 17L, MS 133
Phone: 415-933-6185
Email: nithya@csd.sgi.com