Common Object File Format
COFF | ||
---|---|---|
Desarrollador | ||
AT&T Corporation | ||
Información general | ||
Extensión de archivo |
none, .o | |
Tipo de MIME | application/x-coff y application/x-coffexec | |
Tipo de formato | Binario, executable, object, shared libraries | |
Extendido a | XCOFF, ECOFF, Portable Executable | |
Formato abierto | ? | |
El formato COFF, también llamado Common Object File Format, es una especificación de formato para archivos ejecutables, código objeto y bibliotecas compartidas, usada en sistemas Unix. Se introdujo en Unix System V, remplazando al formato a.out usado anteriormente, y constituyó la base para especificaciones extendidas como XCOFF y ECOFF, antes de ser reemplazado en gran medida por ELF, introducida por SVR4. COFF y sus variantes siguen siendo usados en algunos sistemas Unix-like, en Microsoft Windows, en entornos EFI y en algunos sistemas de desarrollo embebidos.
Historia
El formato de archivo de objeto original de Unix —a.out— no era capaz de soportar adecuadamente bibliotecas compartidas (shared libraries), identificación de formatos extraños o enlazado explícito de direcciones. Como el desarrollo de los sistemas Unix-like continuaba tanto dentro como fuera de AT&T, surgieron diferentes soluciones a este y otros temas.
COFF fue introducido en UNIX System V de AT&T para las plataformas de 32 bits no-VAX, como el 3B20. COFF implicó mejoras con respecto al formato a.out, incluyendo secciones arbitrarias (de memoria), declaraciones explícitas de procesador, y la vinculación de direcciones explícita.
Sin embargo, el diseño de COFF era limitado e incompleto: había un límite en el número máximo de secciones, un límite en la longitud de los nombres de sección incluyendo archivos fuente, y la información simbólica de depuración era incapaz de soportar lenguajes como C, y mucho menos lenguajes más nuevos como C++ o de soportar nuevos procesadores. Como resultado de esto, en el mundo real, todas las implementaciones de COFF necesariamente fueron violaciones de los estándares. Esto condujo a numerosas extensiones COFF. IBM usó el formato XCOFF en su sistema operativo AIX. DEC, SGI y otros usaron ECOFF; y numerosos puertos de SysV y herramientas de desarrollo embebido crearon sus propias variaciones, usualmente incompatible entre ellas.
Con el lanzamiento de SVR4, AT&T remplaza COFF con ELF.
Mientras que las versiones extendidas de COFF se siguen utilizando en algunas plataformas tipo Unix, principalmente en sistemas embebidos, quizás el uso más extendido del formato COFF hoy en día está en el formato Portable Executable (PE) de Microsoft. Desarrollado para Windows NT, el formato PE (a veces escrito como PE/COFF) usa una cabecera COFF para archivos objeto, y como un componente de la cabecera de PE para archivos ejecutables.[1]
Véase también
Referencias
- ↑ Microsoft Corporation (2006b), Common Object File Format (COFF) (Revision 4.1 edición), consultado el 2 de junio de 2007.