summaryrefslogtreecommitdiffstats
path: root/man/man3/end.3
diff options
context:
space:
mode:
Diffstat (limited to 'man/man3/end.3')
-rw-r--r--man/man3/end.396
1 files changed, 96 insertions, 0 deletions
diff --git a/man/man3/end.3 b/man/man3/end.3
new file mode 100644
index 000000000..f0c22ff5d
--- /dev/null
+++ b/man/man3/end.3
@@ -0,0 +1,96 @@
+.\" Copyright (c) 2008, Linux Foundation, written by Michael Kerrisk
+.\" <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH end 3 (date) "Linux man-pages (unreleased)"
+.SH NAME
+etext, edata, end \- end of program segments
+.SH SYNOPSIS
+.nf
+.BI extern " etext" ;
+.BI extern " edata" ;
+.BI extern " end" ;
+.fi
+.SH DESCRIPTION
+The addresses of these symbols indicate the end of various program
+segments:
+.TP
+.I etext
+This is the first address past the end of the text segment
+(the program code).
+.TP
+.I edata
+This is the first address past the end of the
+initialized data segment.
+.TP
+.I end
+This is the first address past the end of the
+uninitialized data segment (also known as the BSS segment).
+.SH STANDARDS
+None.
+.SH HISTORY
+Although these symbols have long been provided on most UNIX systems,
+they are not standardized; use with caution.
+.SH NOTES
+The program must explicitly declare these symbols;
+they are not defined in any header file.
+.P
+On some systems the names of these symbols are preceded by underscores,
+thus:
+.IR _etext ,
+.IR _edata ,
+and
+.IR _end .
+These symbols are also defined for programs compiled on Linux.
+.P
+At the start of program execution,
+the program break will be somewhere near
+.I &end
+(perhaps at the start of the following page).
+However, the break will change as memory is allocated via
+.BR brk (2)
+or
+.BR malloc (3).
+Use
+.BR sbrk (2)
+with an argument of zero to find the current value of the program break.
+.SH EXAMPLES
+When run, the program below produces output such as the following:
+.P
+.in +4n
+.EX
+.RB "$" " ./a.out"
+First address past:
+ program text (etext) 0x8048568
+ initialized data (edata) 0x804a01c
+ uninitialized data (end) 0x804a024
+.EE
+.in
+.SS Program source
+\&
+.\" SRC BEGIN (end.c)
+.EX
+#include <stdio.h>
+#include <stdlib.h>
+\&
+extern char etext, edata, end; /* The symbols must have some type,
+ or "gcc \-Wall" complains */
+\&
+int
+main(void)
+{
+ printf("First address past:\en");
+ printf(" program text (etext) %10p\en", &etext);
+ printf(" initialized data (edata) %10p\en", &edata);
+ printf(" uninitialized data (end) %10p\en", &end);
+\&
+ exit(EXIT_SUCCESS);
+}
+.EE
+.\" SRC END
+.SH SEE ALSO
+.BR objdump (1),
+.BR readelf (1),
+.BR sbrk (2),
+.BR elf (5)