GET_END(3) GET_END(3)
NAME
get_end, get_etext, get_edata - get values of UNIX link editor defined symbols
SYNOPSIS
#include <mach-o/getsect.h>
unsigned long get_end();
unsigned long get_etext();
unsigned long get_edata();
DESCRIPTION
These routines provide a stopgap measure to programs that use the UNIX link-editor defined symbols.
Use of these routines is very strongly discouraged. The problem is that any program that is using
UNIX link editor defined symbols (_end, _etext or _edata) is making assumptions that the program has
the memory layout of a UNIX program.
This is an incorrect assumption for a program built by the Mach-O link editor. The reason that these
routines are provided is that if very minimal assumptions about the layout are used and the default
format and memory layout of the Mach-O link editor is used to build the program, some things may work
by using the values returned by these routines in place of the addresses of their UNIX link-editor
defined symbols. So use at your own risk, and only if you know what your doing. Or better yet, con-vert convert
vert the program to use the appropriate Mach or Mach-O functions. If you are trying to allocate mem-ory memory
ory use vm_allocate(2), if you are trying to find out about your address space use vm_region(2) and
if you are trying to find out where your program is loaded use the dyld(3) functions.
The values of the UNIX link-editor defined symbols _etext, _edata and _end are returned by the rou-tines routines
tines get_etext, get_edata, and get_end respectively. In a Mach-O file they have the following val-ues: values:
ues: get_etext returns the first address after the (__TEXT,__text) section, note this my or may not
be the only section in the __TEXT segment. get_edata returns the first address after the
(__DATA,__data) section, note this my or may not be the last non-zero fill section in the __DATA seg-ment. segment.
ment. get_end returns the first address after the last segment in the executable, note a shared
library may be loaded at this address.
SEE ALSO
ld(1), dyld(3)
Apple Computer, Inc. April 10, 1998 GET_END(3)
|