COFF
COFF - tipo "Common Object File Format" ar kažkaip taip būtų - buvo formatas, įvestas UNIX sistemų SVR3 relyze, kuris, savo ruožtu, laikomas istoriniu momentu, kai UNIX sistemos pakliuvo į duobę su šūdais ir tenai vos nepaskendo.
COFF buvo bandymas pakeisti labai jau seną ir kartais per daug primityvų ar ne visada standartiškai naudojamą (daugelis gamintojų turėjo savų, su niekuo nesuderinamų pagerinimų) a.out formatą. Viena iš bėdų buvo tai, kad buvo numatyta per mažai segmentų programai, jos duomenims ir pan.. Taigi, COFF buvo numatyta 65 tūkstančiai segmentų (kas tiesiog absurdas ir neturi prasmės), o taip pat krūva visokių komplikuotų "o kas, jeigu..." tipo fyčerių. Netgi pačioje pradžioje buvo numatyta, kad failas neturi normalaus headerio (nes o ką gali žinoti), tai užtai turi su poslinkiu 3CH pointerį į signatūrą "PE" (tipo "Portable Executable", o jau paskui eina visi tie COFF headeriai, kuriuose privelta belenko.
COFF formatas buvo įvestas 1987 metais SVR3 sistemoje, kuri tiek nepasiteisino, kad didesne dalimi viskas buvo išmesta ir pakeista SVR4 relyze, tuo pačiu nereikalingu pasidarė ir patsai COFF formatas, katrą pakeitė į ELF.
Vienintelis dabar išplitęs COFF palikimas yra Microsoft naudojamas PE formatas (atsiradęs su Windows NT), kuris savo esme yra ne kas kita, kaip labai nežymiai modifikuotas tasai patsai COFF. Kodėl Microsoft pasirinko COFF, o ne ELF - iki šiol niekas gerai nežino. Spėjimas yra toks, kad kai pasirodė ELF, Windows NT jau buvo gerokai prikurta, todėl Microsoft nutarė nieko nebekeisti.
Gal vienintelis rimtas COFF privalumas yra tai, kad šitas formatas leidžia turėti skirtingoms architektūroms ir netgi skirtingoms OS skirtą kompiliuotą kodą viename faile. Jau pakraunant programą, OS naudojamas loaderis, o paskui linkeris išsirenka, ką čia jam konkrečiai iš to failo paimti ir ima tik tai, ko reikia būtent jam, o ne kas skirta kitoms OS ar aparatinėms platformoms. Taigi, gaunasi tokia portabili vykdymoji programa.