Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ a.out(4) — UnixWare 2.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

as(1)

brk(2)

cc(1)

elf(3E)

ld(1)






       a.out(4)                                                    a.out(4)


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

       SYNOPSIS
             #include <elf.h>

       DESCRIPTION
             The file name a.out is the default output file name from the
             link editor, 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 different.

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

                         Linking View             Execution View
                    ______________________    ______________________
                          ELF header                ELF header
                   |_____________________|  | _____________________|
                   | Program header table|  |  Program header table|
                   |       optional      |  |                      |
                   |_____________________|  | _____________________|
                   |      Section 1      |  |                      |
                   |_____________________|  |                      |
                   |        . . .        |  |       Segment 1      |
                   |                     |  |                      |
                   |_____________________|  | _____________________|
                   |      Section n      |  |                      |
                   |_____________________|  |                      |
                   |        . . .        |  |       Segment 2      |
                   |                     |  |                      |
                   |_____________________|  | _____________________|
                   |        . . .        |  |         . . .        |
                   |_____________________|  | _____________________|
                   | Section header table|  |  Section 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 table, 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.



                           Copyright 1994 Novell, Inc.               Page 1













      a.out(4)                                                    a.out(4)


            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 sections.  Every
            section has an entry in the table; each entry gives
            information such as the section name, the section size, and so
            on.  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 specified 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 program; if other
            processes are executing the same a.out file, the processes
            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 beginning 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 duplication is necessary.  The stack is automatically
            extended as required.  The data segment is extended as
            requested by the brk(2) system call.

      REFERENCES
            as(1), brk(2), cc(1), elf(3E), ld(1)




                          Copyright 1994 Novell, Inc.               Page 2







Typewritten Software • bear@typewritten.org • Edmonds, WA 98026