ADC Home > Reference Library > Reference > Mac OS X > Mac OS X Man Pages


This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

This manual page is associated with the Mac OS X developer tools. The software or headers described may not be present on your Mac OS X installation until you install the developer tools package. This package is available on your Mac OS X installation DVD, and the latest versions can be downloaded from

For more information about the manual page format, see the manual page for manpages(5).

MACH-O(5)                                                                                          MACH-O(5)

       Mach-O - Mach-O assembler and link editor output

       #include <mach-o/loader.h>
       #include <mach-o/nlist.h>
       #include <mach-o/stab.h>
       #include <mach-o/reloc.h>

       The  object  files produced by the assembler and link editor are in Mach-O (Mach object) file format.
       The file name a.out is the default output file name of the assembler as(1) and the link editor  ld(1)
       The  format  of  the  object file however is not 4.3BSD a.out format as the name suggests, but rather
       Mach-O format.  The link editor will make a.out executable if the resulting format is  an  executable
       type and there were no errors and no unresolved external references.

       The  complete  description  of  a Mach-O file is given in a number of include files.  The file <mach-
       o/loader.h> describes the headers, <mach-o/nlist.h> describes the symbol table  entries  with  <mach-
       o/stab.h> supplementing it, and <mach-o/reloc.h> describes the relocation entries.

       The actual instructions and data used by the program represented by a Mach-O file are the contents of
       its sections.  Sections are grouped together in segments.  Each  section  carries  with  it,  in  its
       header,  the  information  as to which segment it belongs in.  When a file type that is executable is
       created the sections are placed in their proper segment and all the segment headers are  created  and
       the segments themselves are padded out to the segment alignment (typically the target pagesize).  For
       the object file type produced by an assembler (or by the link editor for  further  linking)  all  the
       sections are placed in one segment for compactness.

       When the kernel executes a Mach-O file it maps in the object file's segments, the dynamic link editor
       (if used) and creates the thread(s) for execution.  Any part of the object file that is not part of a
       segment is not mapped in for execution.  For executable using the dynamic link editor the headers and
       other link edit information is needed to execute  the  file.   These  parts  include  the  relocation
       entries,  the  symbol table and the string table.  These parts are mapped in with the use of the link
       editor's -seglinkedit option which creates a segment that contains these parts.  These parts  can  be
       stripped down with the -S option to ld(1) or various options to strip(1).

       as(1), ld(1), nm(1), gdb(1), stab(5), strip(1)

Apple Computer, Inc.                          October 22, 2001                                     MACH-O(5)

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.