Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

mach-o(5) [opendarwin man page]

MACH-O(5)							File Formats Manual							 MACH-O(5)

NAME
Mach-O - Mach-O assembler and link editor output SYNOPSIS
#include <mach-o/loader.h> #include <mach-o/nlist.h> #include <mach-o/stab.h> #include <mach-o/reloc.h> DESCRIPTION
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). SEE ALSO
as(1), ld(1), nm(1), gdb(1), stab(5), strip(1) Apple Computer, Inc. October 22, 2001 MACH-O(5)

Check Out this Related Man Page

GETSECTBYNAME(3)					     Library Functions Manual						  GETSECTBYNAME(3)

NAME
getsectbyname, getsectdata - get the section information for the named section SYNOPSIS
#include <mach-o/getsect.h> const struct section *getsectbynamefromheader( const struct mach_header *mhp, const char *segname, const char *sectname) const struct section *getsectbyname( const char *segname, const char *sectname) char *getsectdatafromheader( const struct mach_header *mhp, const char *segname, const char *sectname, unsigned long *size) char *getsectdata( const char *segname, const char *sectname, unsigned long *size) char *getsectdatafromFramework( const char *FrameworkName, const char *segname, const char *sectname, unsigned long *size) DESCRIPTION
Getsectbynamefromheader returns the section structure for the named section in the named segment if it exists in the specified Mach header otherwise it returns NULL. If the specified Mach header comes from a dynamic library as returned by _dyld_get_image_header(3) the addr field in the section structure will have to have _dyld_get_image_vmaddr_slide(3) added to it to make it a valid pointer. Getsectbyname is the same as getsectbynamefromheader with its first argument being the link editor defined symbol _mh_execute_header. Getsectdatafromheader returns the address to the data for the named section in the named segment if it exists in the specified Mach header. Also it returns the size of the section data indirectly through the pointer size. Otherwise it returns NULL for the pointer and zero for the size. If the specified Mach header comes from a dynamic library as returned by _dyld_get_image_header(3) the address to the data returned will have to have _dyld_get_image_vmaddr_slide(3) added to it to make it a valid pointer. Getsectdata is the same as getsectdatafromheader with its first argument being the link editor defined symbol _mh_execute_header. getsectdatafromFramework is used to get the named section data from the named Framework. For example, the framework name ``Appkit'' would be used for /System/Library/Frameworks/Appkit.framework/Versions/C/Appkit. If that Framework isn't being used by the program then it returns NULL for the pointer and zero for the size. SEE ALSO
dyld(3), getsegbyname(3) Apple Computer, Inc. April 10, 1998 GETSECTBYNAME(3)
Man Page