*BSD News Article 94887


Return to BSD News archive

Newsgroups: comp.unix.bsd.freebsd.misc
Path: euryale.cc.adfa.oz.au!newshost.carno.net.au!harbinger.cc.monash.edu.au!munnari.OZ.AU!news.mel.connect.com.au!news.mel.aone.net.au!news.netspace.net.au!news.mira.net.au!news.vbc.net!vbcnet-west!bulb.garlic.com!news.scruz.net!noos.hooked.net!www.nntp.primenet.com!nntp.primenet.com!news.mathworks.com!rill.news.pipex.net!pipex!oleane!jussieu.fr!fdn.fr!r2d2.fdn.org!sphynx.fdn.fr!causse
From: causse@sphynx.fdn.fr (Philippe Causse)
Subject: Re: ELF?
X-Newsreader: TIN [version 1.2 PL2]
Organization: individual - paris - france
Message-ID: <E9Hqu3.2tJ@sphynx.fdn.fr>
References: <cmott-2004971630470001@192.168.0.5> <5k8eve$8j@uriah.heep.sax.de>
Date: Thu, 1 May 1997 07:15:39 GMT
Lines: 60
Xref: euryale.cc.adfa.oz.au comp.unix.bsd.freebsd.misc:40104

J Wunsch (j@uriah.heep.sax.de) wrote:
: Joel Ray Holveck <joelh@gnu.ai.mit.edu> wrote:

: > I don't design linkage formats, I just link.  So, what's the
: > difference between a.out, b.out, ELF, and coff?

: I can't explain any and all differences (and i don't even know b.out),
: but in short:

: a.out:

: Oldest, and `classic' unix object format.  Short and compact header,
: with a magic number at the beginning that's often used to characterize
: the format.  Three loaded segments: .text, .data, and .bss, plus a
: symbol table and a string table in the file.

: COFF:

: SVR3 object format.  The header now comprises a section table, so you
: can have more than just .text, .data, and .bss.  IIRC, the section
: length values are 16-bit entities only.

Sorry, but section length values are regular 32-bit longs !
(from /usr/src/sys/i386/ibcs2/coff.h)
struct scnhdr {
        char            s_name[8];      /* name of section (e.g., ".text") */
        long            s_paddr;        /* physical addr, used for standalone */
        long            s_vaddr;        /* virtual address */
        long            s_size;         /* size of section */
        ~~~~~~~~~~~~~~~~~~~~~~~~
        long            s_scnptr;       /* file offset of section */
        long            s_relptr;       /* points to relocs for section */
        long            s_lnnoptr;      /* points to line numbers for section */
        unsigned short  s_nreloc;       /* # of relocs */
        unsigned short  s_nlnno;        /* # of line no's */
        long            s_flags;        /* section flags -- see below */
};

BTW, there's an excellent book on COFF from O'Reilly & Associates,
called "Understanding and Using COFF".
I checked the above information in this book: s_size is a long.

: ELF:

: Successor of COFF.  Multiple sections, and 32-bit or 64-bit numbers
: possible.  Major drawback: ELF has been designed in the assumption
: that there will be only one ABI per architecture.  There isn't
: actually, not even in the commercial SysV world (which has at least
: three ABIs: SVR4, Solaris, SCO).

: -- 
: cheers, J"org

: joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE
: Never trust an operating system you don't have sources for. ;-)

-- 
-------------------------------------------------------------------
P. Causse			http://www.fdn.fr/~pcausse
4.4BSD/X11R6/Motif-2.0/C++	mailto:causse@sphynx.fdn.fr (UUCP)