Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-5.10)
Apropos / Subsearch:
optional field

a.out(4)                         File Formats                         a.out(4)

       a.out - Executable and Linking Format (ELF) files

       #include <&lt;elf.h>&gt;

       The  file name a.out is the default output file name from the link edi-
       tor, ld(1). The link editor will make an a.out executable if there were
       no  errors  in  linking.  The output file of the assembler, as(1), also
       follows the format of the a.out file although its default file name  is

       Programs  that  manipulate ELF files may use the library that elf(3ELF)
       describes. An overview of the file format follows.  For  more  complete
       information, see the references given below.

       tab() allbox; cw(2.694444i)| cw(2.805556i).  Linking ViewExecution View
       ELF headerELF header Program header tableProgram header table  optional
       Section 1Segment 1 . . .  Section nSegment 2 . . .  . . .. . .  Section
       header tableSection header table optional

       An ELF header resides  at  the  beginning  and  holds  a  ``road  map''
       describing  the  file's  organization. Sections hold the bulk of object
       file information for the linking view: instructions, data,  symbol  ta-
       ble,  relocation  information, and so on. Segments hold the object file
       information for the program execution view. As  shown,  a  segment  may
       contain one or more sections.

       A  program  header  table, if present, tells the system how to create a
       process image. Files used to build a process image (execute a  program)
       must  have a program header table; relocatable files do not need one. A
       section header table contains information describing  the  file's  sec-
       tions. Every section has an entry in the table; each entry gives infor-
       mation such as the section name, the section  size,  etc.   Files  used
       during linking must have a section header table; other object files may
       or may not have one.

       Although the figure shows the program header  table  immediately  after
       the  ELF  header,  and the section header table following the sections,
       actual files may differ. Moreover, sections and segments have no speci-
       fied order. Only the ELF header has a fixed position in the file.

       When  an  a.out file is loaded into memory for execution, three logical
       segments are set up: the text segment, the  data  segment  (initialized
       data  followed  by uninitialized, the latter actually being initialized
       to all 0's), and a stack. The text segment is not writable by the  pro-
       gram;  if  other  processes are executing the same a.out file, the pro-
       cesses will share a single text segment.

       The data segment starts at the next maximal page boundary past the last
       text  address.  If  the  system  supports  more than one page size, the
       ``maximal page'' is the largest supported size. When the process  image
       is created, the part of the file holding the end of text and the begin-
       ning of data may appear  twice.  The  duplicated  chunk  of  text  that
       appears at the beginning of data is never executed; it is duplicated so
       that the operating system may bring in pieces of the file in  multiples
       of  the actual page size without having to realign the beginning of the
       data section to a page boundary.  Therefore, the first data address  is
       the sum of the next maximal page boundary past the end of text plus the
       remainder of the last text address divided by the maximal page size. If
       the last text address is a multiple of the maximal page size, no dupli-
       cation is necessary. The stack is automatically extended  as  required.
       The data segment is extended as requested by the brk(2) system call.

       as(1), cc(1B), ld(1), brk(2), elf(3ELF)

       ANSI C Programmer's Guide

SunOS 5.10                        3 Jul 1990                          a.out(4)