manpagez: man (manual) pages & more
man end(3)
Home | html | info | man
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 pro-
       gram, some things may work by using the values returned by  these  rou-
       tines  in place of the addresses of their UNIX link-editor defined sym-
       bols.  So use at your own risk, and only if you know what  your  doing.
       Or better yet, convert the program to use the appropriate Mach or Mach-
       O functions.  If you are trying to allocate memory 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 routines  get_etext,  get_edata,  and  get_end
       respectively.   In  a  Mach-O  file  they  have  the  following values:
       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
       segment.  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)

Mac OS X 10.6 - Generated Thu Sep 17 20:20:00 CDT 2009