.TH MACH 3
.SH NAME
machbytype, machbyname \- machine-independent access to executables and programs
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.br
.B #include <mach.h>
.PP
.PP
.B
void machbytype(int type)
.PP
.B
int machbyname(char *name)
.PP
.B
extern Mach *mach;
.SH DESCRIPTION
.I Libmach
provides an interface for accessing
the executable files and executing images of various architectures
and operating systems.
The interface is machine-independent, meaning that, for example,
Mac OS X core dumps may be inspected using an x86 Linux machine
and vice versa.
In its current form,
the library is mainly useful for writing debuggers
of one sort or another.
.PP
An architecture is described primarily by a
.B Mach
structure, which contains
data structures and parameters describing the
particular architecture.
Most library functions assume that the global variable
.I mach
points at the structure for the architecture being debugged.
It is set implicitly by
.I crackhdr
(see
.IR mach-file (3))
and can be set explicitly by calling
.I machbyname
or
.IR machbytype .
.PP
There is no operating system-specific structure akin to
.IR mach .
Typically the choice of operating system on a particular
architecture affects only the executable and core dump formats;
the various file parsers deduce the operating system from
information in the binary files themselves and adjust 
accordingly.
.PP
Other manual pages
describe the library functions in detail.
.PP
.I Mach-file (3)
describes the manipulation of binary files.
.PP
.I Mach-map (3)
describes the interface to address spaces and register sets
in executable files and executing programs.
.PP
.I Mach-stack (3)
describes support for unwinding the stack.
.PP
.I Mach-swap (3)
describes helper functions for accessing data
in a particular byte order.
.PP
.I Mach-symbol (3)
describes the interface to debugging symbol information.
.SH SOURCE
.B /usr/local/plan9/src/libmach
.SH "SEE ALSO
.IR mach-file (3),
.IR mach-map (3),
.IR mach-stack (3),
.IR mach-swap (3),
.IR mach-symbol (3)
