aboutsummaryrefslogtreecommitdiffstats
path: root/man/man3/end.3
diff options
context:
space:
mode:
authorAlejandro Colomar <alx@kernel.org>2024-04-26 15:06:49 +0200
committerAlejandro Colomar <alx@kernel.org>2024-05-02 01:24:19 +0200
commitdcde2f70372b49ec43efc5db864c9ff585d0a2dd (patch)
tree78b9b7425130e4a5858e4c01a524d802423879ed /man/man3/end.3
parent12aca537ce78a41bbcdaf485209691e10f8002d7 (diff)
downloadman-pages-dcde2f70372b49ec43efc5db864c9ff585d0a2dd.tar.gz
man/, share/mk/: Move man*/ to man/
This is a scripted change: $ mkdir man/; $ mv man* man/; $ ln -st . man/man*; $ find share/mk/ -type f \ | xargs grep -l '^MANDIR *:=' \ | xargs sed -i '/^MANDIR *:=/s,$,/man,'; $ find share/mk/dist/ -type f \ | xargs grep -l man \ | xargs sed -i 's,man%,man/%,g'; Link: <https://lore.kernel.org/linux-man/YxcV4h+Xn7cd6+q2@pevik/T/> Cc: Petr Vorel <pvorel@suse.cz> Cc: Jakub Wilk <jwilk@jwilk.net> Cc: Stefan Puiu <stefan.puiu@gmail.com> Signed-off-by: Alejandro Colomar <alx@kernel.org>
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 0000000000..f0c22ff5d1
--- /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)