END(III) 4/28/75 END(III) NAME end, etext, edata - last locations in program SYNOPSIS extern end; extern etext; extern edata; DESCRIPTION These names refer neither to routines nor to locations with interesting contents. Instead, their addresses coincide with the first address above the program text region (etext), above the initialized data region (edata), or uninitialized data region (end). The last is the same as the program break. Values are given to these symbols by the link editor ld(I) when, and only when, they are referred to but not defined in the set of programs loaded. The usage of these symbols is rather specialized, but one plausible possibility is extern end; ... ... = brk(&end+...); (see break(II)). The problem with this is that it ignores any other subroutines which may want to extend core for their purposes; these include sbrk (see break(II)), alloc (III), and also secret subroutines invoked by the profile (-p) option of cc. Of course it was for the benefit of such systems that the symbols were invented, and user programs, unless they are in firm control of their environment, are wise not to refer to the absolute symbols directly. One technique sometimes useful is to call sbrk(0), which re- turns the value of the current program break, instead of re- ferring to &end, which yields the program break at the in- stant execution started. These symbols are accessible from assembly language if it is remembered that they should be prefixed by `_' SEE ALSO break(II), alloc(III) BUGS - 1 -