msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2012-03-19 23:50+0900\n"
+"POT-Creation-Date: 2015-02-04 23:32+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: TH
-#: build/C/man3/dl_iterate_phdr.3:24
+#: build/C/man3/dl_iterate_phdr.3:25
#, no-wrap
msgid "DL_ITERATE_PHDR"
msgstr ""
#. type: TH
-#: build/C/man3/dl_iterate_phdr.3:24
+#: build/C/man3/dl_iterate_phdr.3:25
#, no-wrap
msgid "2007-05-18"
msgstr ""
#. type: TH
-#: build/C/man3/dl_iterate_phdr.3:24 build/C/man3/end.3:25 build/C/man8/ld.so.8:2 build/C/man8/ldconfig.8:22
+#: build/C/man3/dl_iterate_phdr.3:25 build/C/man3/end.3:26 build/C/man8/ld.so.8:5 build/C/man8/ldconfig.8:22 build/C/man1/memusage.1:24 build/C/man1/memusagestat.1:23 build/C/man1/mtrace.1:23 build/C/man1/pldd.1:25 build/C/man8/sln.8:25
#, no-wrap
msgid "GNU"
msgstr ""
#. type: TH
-#: build/C/man3/dl_iterate_phdr.3:24 build/C/man3/dlopen.3:35 build/C/man5/elf.5:33 build/C/man3/end.3:25 build/C/man8/ld.so.8:2 build/C/man8/ldconfig.8:22 build/C/man1/ldd.1:10 build/C/man7/rtld-audit.7:26
+#: build/C/man3/dl_iterate_phdr.3:25 build/C/man3/dlopen.3:35 build/C/man5/elf.5:35 build/C/man3/end.3:26 build/C/man8/ld.so.8:5 build/C/man8/ldconfig.8:22 build/C/man1/ldd.1:14 build/C/man7/rtld-audit.7:28 build/C/man8/sln.8:25
#, no-wrap
msgid "Linux Programmer's Manual"
msgstr ""
#. type: SH
-#: build/C/man3/dl_iterate_phdr.3:25 build/C/man3/dlopen.3:36 build/C/man5/elf.5:34 build/C/man3/end.3:26 build/C/man8/ld.so.8:3 build/C/man8/ldconfig.8:23 build/C/man1/ldd.1:11 build/C/man7/rtld-audit.7:27
+#: build/C/man3/dl_iterate_phdr.3:26 build/C/man3/dlopen.3:36 build/C/man5/elf.5:36 build/C/man3/end.3:27 build/C/man8/ld.so.8:6 build/C/man8/ldconfig.8:23 build/C/man1/ldd.1:15 build/C/man1/memusage.1:25 build/C/man1/memusagestat.1:24 build/C/man1/mtrace.1:24 build/C/man1/pldd.1:26 build/C/man7/rtld-audit.7:29 build/C/man8/sln.8:26 build/C/man1/sprof.1:26
#, no-wrap
msgid "NAME"
msgstr ""
#. type: Plain text
-#: build/C/man3/dl_iterate_phdr.3:27
+#: build/C/man3/dl_iterate_phdr.3:28
msgid "dl_iterate_phdr - walk through list of shared objects"
msgstr ""
#. type: SH
-#: build/C/man3/dl_iterate_phdr.3:27 build/C/man3/dlopen.3:39 build/C/man5/elf.5:36 build/C/man3/end.3:28 build/C/man8/ld.so.8:5 build/C/man8/ldconfig.8:25 build/C/man1/ldd.1:13 build/C/man7/rtld-audit.7:29
+#: build/C/man3/dl_iterate_phdr.3:28 build/C/man3/dlopen.3:39 build/C/man5/elf.5:38 build/C/man3/end.3:29 build/C/man8/ld.so.8:8 build/C/man8/ldconfig.8:25 build/C/man1/ldd.1:17 build/C/man1/memusage.1:27 build/C/man1/memusagestat.1:26 build/C/man1/mtrace.1:26 build/C/man1/pldd.1:28 build/C/man7/rtld-audit.7:31 build/C/man8/sln.8:28 build/C/man1/sprof.1:28
#, no-wrap
msgid "SYNOPSIS"
msgstr ""
#. type: Plain text
-#: build/C/man3/dl_iterate_phdr.3:31
+#: build/C/man3/dl_iterate_phdr.3:32
#, no-wrap
msgid ""
"B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
#, no-wrap
msgid ""
"B<int dl_iterate_phdr(>\n"
-" B<int (*>callbackB<) (struct dl_phdr_info *>infoB<,>\n"
-" B<size_t> sizeB<, void *>dataB<),>\n"
-" B<void *>dataB<);>\n"
+"B< int (*>I<callback>B<) (struct dl_phdr_info *>I<info>B<,>\n"
+"B< size_t >I<size>B<, void *>I<data>B<),>\n"
+"B< void *>I<data>B<);>\n"
msgstr ""
#. type: SH
-#: build/C/man3/dl_iterate_phdr.3:38 build/C/man3/dlopen.3:51 build/C/man5/elf.5:41 build/C/man3/end.3:34 build/C/man8/ld.so.8:15 build/C/man8/ldconfig.8:54 build/C/man1/ldd.1:15 build/C/man7/rtld-audit.7:33
+#: build/C/man3/dl_iterate_phdr.3:38 build/C/man3/dlopen.3:51 build/C/man5/elf.5:43 build/C/man3/end.3:35 build/C/man8/ld.so.8:18 build/C/man8/ldconfig.8:54 build/C/man1/ldd.1:19 build/C/man1/memusage.1:29 build/C/man1/memusagestat.1:28 build/C/man1/mtrace.1:28 build/C/man1/pldd.1:33 build/C/man7/rtld-audit.7:35 build/C/man8/sln.8:32 build/C/man1/sprof.1:33
#, no-wrap
msgid "DESCRIPTION"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man3/dl_iterate_phdr.3:154
+#: build/C/man3/dl_iterate_phdr.3:154 build/C/man1/pldd.1:50
#, no-wrap
msgid "VERSIONS"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man3/dl_iterate_phdr.3:157 build/C/man3/dlopen.3:381 build/C/man3/end.3:49 build/C/man7/rtld-audit.7:459
+#: build/C/man3/dl_iterate_phdr.3:157 build/C/man3/dlopen.3:381 build/C/man3/end.3:50 build/C/man1/pldd.1:53 build/C/man7/rtld-audit.7:461 build/C/man1/sprof.1:75
#, no-wrap
msgid "CONFORMING TO"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man3/dl_iterate_phdr.3:161 build/C/man3/dlopen.3:446 build/C/man3/end.3:75 build/C/man7/rtld-audit.7:490
+#: build/C/man3/dl_iterate_phdr.3:161 build/C/man3/dlopen.3:446 build/C/man3/end.3:76 build/C/man1/memusage.1:201 build/C/man1/memusagestat.1:81 build/C/man1/pldd.1:71 build/C/man7/rtld-audit.7:502 build/C/man1/sprof.1:79
#, no-wrap
msgid "EXAMPLE"
msgstr ""
msgstr ""
#. type: Plain text
-#: build/C/man3/dl_iterate_phdr.3:194 build/C/man3/end.3:106
+#: build/C/man3/dl_iterate_phdr.3:194 build/C/man3/end.3:107
#, no-wrap
msgid ""
" exit(EXIT_SUCCESS);\n"
msgstr ""
#. type: SH
-#: build/C/man3/dl_iterate_phdr.3:195 build/C/man3/dlopen.3:507 build/C/man5/elf.5:1934 build/C/man3/end.3:107 build/C/man8/ld.so.8:370 build/C/man8/ldconfig.8:175 build/C/man1/ldd.1:75 build/C/man7/rtld-audit.7:600
+#: build/C/man3/dl_iterate_phdr.3:195 build/C/man3/dlopen.3:521 build/C/man5/elf.5:1939 build/C/man3/end.3:108 build/C/man8/ld.so.8:489 build/C/man8/ldconfig.8:175 build/C/man1/ldd.1:108 build/C/man1/memusage.1:271 build/C/man1/memusagestat.1:88 build/C/man1/mtrace.1:61 build/C/man1/pldd.1:91 build/C/man7/rtld-audit.7:602 build/C/man8/sln.8:60 build/C/man1/sprof.1:299
#, no-wrap
msgid "SEE ALSO"
msgstr ""
#. type: Plain text
-#: build/C/man3/dl_iterate_phdr.3:205
+#: build/C/man3/dl_iterate_phdr.3:202
msgid ""
"B<ldd>(1), B<objdump>(1), B<readelf>(1), B<dlopen>(3), B<elf>(5), "
-"B<ld.so>(8), and the I<Executable and Linking Format Specification> "
-"available at various locations online."
+"B<ld.so>(8)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/dl_iterate_phdr.3:205
+msgid ""
+"I<Executable and Linking Format Specification>, available at various "
+"locations online."
msgstr ""
#. type: SH
-#: build/C/man3/dl_iterate_phdr.3:205 build/C/man3/dlopen.3:515 build/C/man5/elf.5:1958 build/C/man3/end.3:112 build/C/man8/ld.so.8:380 build/C/man8/ldconfig.8:178 build/C/man1/ldd.1:78 build/C/man7/rtld-audit.7:605
+#: build/C/man3/dl_iterate_phdr.3:205 build/C/man3/dlopen.3:531 build/C/man5/elf.5:1963 build/C/man3/end.3:113 build/C/man8/ld.so.8:505 build/C/man8/ldconfig.8:178 build/C/man1/ldd.1:113 build/C/man1/memusage.1:275 build/C/man1/memusagestat.1:91 build/C/man1/mtrace.1:64 build/C/man1/pldd.1:96 build/C/man7/rtld-audit.7:607 build/C/man8/sln.8:64 build/C/man1/sprof.1:303
#, no-wrap
msgid "COLOPHON"
msgstr ""
#. type: Plain text
-#: build/C/man3/dl_iterate_phdr.3:212 build/C/man3/dlopen.3:522 build/C/man5/elf.5:1965 build/C/man3/end.3:119 build/C/man8/ld.so.8:387 build/C/man8/ldconfig.8:185 build/C/man1/ldd.1:85 build/C/man7/rtld-audit.7:612
+#: build/C/man3/dl_iterate_phdr.3:213 build/C/man3/dlopen.3:539 build/C/man5/elf.5:1971 build/C/man3/end.3:121 build/C/man8/ld.so.8:513 build/C/man8/ldconfig.8:186 build/C/man1/ldd.1:121 build/C/man1/memusage.1:283 build/C/man1/memusagestat.1:99 build/C/man1/mtrace.1:72 build/C/man1/pldd.1:104 build/C/man7/rtld-audit.7:615 build/C/man8/sln.8:72 build/C/man1/sprof.1:311
msgid ""
-"This page is part of release 3.35 of the Linux I<man-pages> project. A "
-"description of the project, and information about reporting bugs, can be "
-"found at http://man7.org/linux/man-pages/."
+"This page is part of release 3.79 of the Linux I<man-pages> project. A "
+"description of the project, information about reporting bugs, and the latest "
+"version of this page, can be found at "
+"\\%http://www.kernel.org/doc/man-pages/."
msgstr ""
#. type: TH
msgstr ""
#. type: TH
-#: build/C/man3/dlopen.3:35
+#: build/C/man3/dlopen.3:35 build/C/man1/ldd.1:14
#, no-wrap
-msgid "2008-12-06"
+msgid "2014-10-02"
msgstr ""
#. type: TH
-#: build/C/man3/dlopen.3:35 build/C/man5/elf.5:33 build/C/man7/rtld-audit.7:26
+#: build/C/man3/dlopen.3:35 build/C/man5/elf.5:35 build/C/man7/rtld-audit.7:28 build/C/man1/sprof.1:25
#, no-wrap
msgid "Linux"
msgstr ""
#. type: Plain text
#: build/C/man3/dlopen.3:71
msgid ""
-"The function B<dlerror>() returns a human readable string describing the "
+"The function B<dlerror>() returns a human-readable string describing the "
"most recent error that occurred from B<dlopen>(), B<dlsym>() or "
"B<dlclose>() since the last call to B<dlerror>(). It returns NULL if no "
"errors have occurred since initialization or since it was last called."
msgstr ""
#. type: IP
-#: build/C/man3/dlopen.3:89 build/C/man3/dlopen.3:93 build/C/man3/dlopen.3:100 build/C/man3/dlopen.3:104 build/C/man3/dlopen.3:111 build/C/man8/ld.so.8:45 build/C/man8/ld.so.8:50 build/C/man8/ld.so.8:55 build/C/man8/ld.so.8:59 build/C/man8/ld.so.8:67
+#: build/C/man3/dlopen.3:89 build/C/man3/dlopen.3:93 build/C/man3/dlopen.3:100 build/C/man3/dlopen.3:104 build/C/man3/dlopen.3:111 build/C/man8/ld.so.8:56 build/C/man8/ld.so.8:61 build/C/man8/ld.so.8:66 build/C/man8/ld.so.8:70 build/C/man8/ld.so.8:80
#, no-wrap
msgid "o"
msgstr ""
msgid ""
"Perform lazy binding. Only resolve symbols as the code that references them "
"is executed. If the symbol is never referenced, then it is never resolved. "
-"(Lazy binding is only performed for function references; references to "
+"(Lazy binding is performed only for function references; references to "
"variables are always immediately bound when the library is loaded.)"
msgstr ""
#. type: Plain text
#: build/C/man3/dlopen.3:204
msgid ""
-"If I<filename> is a NULL pointer, then the returned handle is for the main "
-"program. When given to B<dlsym>(), this handle causes a search for a symbol "
-"in the main program, followed by all shared libraries loaded at program "
-"startup, and then all shared libraries loaded by B<dlopen>() with the flag "
+"If I<filename> is NULL, then the returned handle is for the main program. "
+"When given to B<dlsym>(), this handle causes a search for a symbol in the "
+"main program, followed by all shared libraries loaded at program startup, "
+"and then all shared libraries loaded by B<dlopen>() with the flag "
"B<RTLD_GLOBAL>."
msgstr ""
#. type: Plain text
#: build/C/man3/dlopen.3:232
msgid ""
-"If the same library is loaded again with B<dlopen>(), the same file handle "
-"is returned. The dl library maintains reference counts for library handles, "
-"so a dynamic library is not deallocated until B<dlclose>() has been called "
-"on it as many times as B<dlopen>() has succeeded on it. The B<_init>() "
-"routine, if present, is only called once. But a subsequent call with "
-"B<RTLD_NOW> may force symbol resolution for a library earlier loaded with "
-"B<RTLD_LAZY>."
+"If the same library is loaded again with B<dlopen>(), the same library "
+"handle is returned. The dl library maintains reference counts for library "
+"handles, so a dynamic library is not deallocated until B<dlclose>() has "
+"been called on it as many times as B<dlopen>() has succeeded on it. The "
+"B<_init>() routine, if present, is called only once. But a subsequent call "
+"with B<RTLD_NOW> may force symbol resolution for a library earlier loaded "
+"with B<RTLD_LAZY>."
msgstr ""
#. type: Plain text
" contains address */\n"
" void *dli_fbase; /* Address at which shared object\n"
" is loaded */\n"
-" const char *dli_sname; /* Name of nearest symbol with address\n"
-" lower than I<addr> */\n"
+" const char *dli_sname; /* Name of symbol whose definition\n"
+" overlaps I<addr> */\n"
" void *dli_saddr; /* Exact address of symbol named\n"
" in I<dli_sname> */\n"
"} Dl_info;\n"
msgstr ""
#. type: SH
-#: build/C/man3/dlopen.3:388 build/C/man5/elf.5:1907 build/C/man3/end.3:52 build/C/man8/ld.so.8:364 build/C/man1/ldd.1:42 build/C/man7/rtld-audit.7:465
+#: build/C/man3/dlopen.3:388 build/C/man5/elf.5:1912 build/C/man3/end.3:53 build/C/man8/ld.so.8:483 build/C/man1/pldd.1:84 build/C/man7/rtld-audit.7:467
#, no-wrap
msgid "NOTES"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man3/dlopen.3:418 build/C/man1/ldd.1:59 build/C/man7/rtld-audit.7:590
+#: build/C/man3/dlopen.3:418 build/C/man1/ldd.1:91 build/C/man1/memusage.1:267 build/C/man1/memusagestat.1:84 build/C/man1/mtrace.1:58 build/C/man7/rtld-audit.7:492
#, no-wrap
msgid "BUGS"
msgstr ""
msgstr ""
#. type: Plain text
+#: build/C/man3/dlopen.3:470
+#, no-wrap
+msgid " cosine = (double (*)(double)) dlsym(handle, \"cos\");\n"
+msgstr ""
+
+#. type: Plain text
#: build/C/man3/dlopen.3:475
#, no-wrap
msgid ""
-" /* Writing: cosine = (double (*)(double)) dlsym(handle, \"cos\");\n"
-" would seem more natural, but the C99 standard leaves\n"
-" casting from \"void *\" to a function pointer undefined.\n"
-" The assignment used below is the POSIX.1-2003 (Technical\n"
-" Corrigendum 1) workaround; see the Rationale for the\n"
-" POSIX specification of dlsym(). */\n"
+" /* According to the ISO C standard, casting between function\n"
+" pointers and 'void *', as done above, produces undefined results.\n"
+" POSIX.1-2003 and POSIX.1-2008 accepted this state of affairs and\n"
+" proposed the following workaround:\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/dlopen.3:477
+#, no-wrap
+msgid " *(void **) (&cosine) = dlsym(handle, \"cos\");\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/dlopen.3:480
+#, no-wrap
+msgid ""
+" This (clumsy) cast conforms with the ISO C standard and will\n"
+" avoid any compiler warnings.\n"
msgstr ""
-#. But in fact "gcc -O2 -Wall" will complain about the preceding cast.
+#. http://pubs.opengroup.org/onlinepubs/009695399/functions/dlsym.html#tag_03_112_08
+#. http://pubs.opengroup.org/onlinepubs/9699919799/functions/dlsym.html#tag_16_96_07
+#. http://austingroupbugs.net/view.php?id=74
#. type: Plain text
-#: build/C/man3/dlopen.3:478
+#: build/C/man3/dlopen.3:489
#, no-wrap
-msgid " *(void **) (&cosine) = dlsym(handle, \"cos\");\n"
+msgid ""
+" The 2013 Technical Corrigendum to POSIX.1-2008 (a.k.a.\n"
+" POSIX.1-2013) improved matters by requiring that conforming\n"
+" implementations support casting 'void *' to a function pointer.\n"
+" Nevertheless, some compilers (e.g., gcc with the '-pedantic'\n"
+" option) may complain about the cast used in this program. */\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/dlopen.3:483
+#: build/C/man3/dlopen.3:495
#, no-wrap
msgid ""
-" if ((error = dlerror()) != NULL) {\n"
+" error = dlerror();\n"
+" if (error != NULL) {\n"
" fprintf(stderr, \"%s\\en\", error);\n"
" exit(EXIT_FAILURE);\n"
" }\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/dlopen.3:488
+#: build/C/man3/dlopen.3:500
#, no-wrap
msgid ""
" printf(\"%f\\en\", (*cosine)(2.0));\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/dlopen.3:492
+#: build/C/man3/dlopen.3:504
msgid ""
"If this program were in a file named \"foo.c\", you would build the program "
"with the following command:"
msgstr ""
#. type: Plain text
-#: build/C/man3/dlopen.3:495
+#: build/C/man3/dlopen.3:507
#, no-wrap
msgid " gcc -rdynamic -o foo foo.c -ldl\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/dlopen.3:503
+#: build/C/man3/dlopen.3:517
msgid ""
"Libraries exporting B<_init>() and B<_fini>() will want to be compiled as "
"follows, using I<bar.c> as the example name:"
msgstr ""
#. type: Plain text
-#: build/C/man3/dlopen.3:506
+#: build/C/man3/dlopen.3:520
#, no-wrap
msgid " gcc -shared -nostartfiles -o bar bar.c\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/dlopen.3:515
+#: build/C/man3/dlopen.3:529
msgid ""
-"B<ld>(1), B<ldd>(1), B<dl_iterate_phdr>(3), B<rtld-audit>(7), B<ld.so>(8), "
-"B<ldconfig>(8), ld.so info pages, gcc info pages, ld info pages"
+"B<ld>(1), B<ldd>(1), B<pldd>(1), B<dl_iterate_phdr>(3), B<rtld-audit>(7), "
+"B<ld.so>(8), B<ldconfig>(8)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/dlopen.3:531
+msgid "ld.so info pages, gcc info pages, ld info pages"
msgstr ""
#. type: TH
-#: build/C/man5/elf.5:33
+#: build/C/man5/elf.5:35
#, no-wrap
msgid "ELF"
msgstr ""
#. type: TH
-#: build/C/man5/elf.5:33
+#: build/C/man5/elf.5:35
#, no-wrap
-msgid "2010-06-19"
+msgid "2013-04-17"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:36
+#: build/C/man5/elf.5:38
msgid "elf - format of Executable and Linking Format (ELF) files"
msgstr ""
#. .B #include <elf_abi.h>
#. type: Plain text
-#: build/C/man5/elf.5:40
+#: build/C/man5/elf.5:42
#, no-wrap
msgid "B<#include E<lt>elf.hE<gt>>\n"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:48
+#: build/C/man5/elf.5:50
msgid ""
"The header file I<E<lt>elf.hE<gt>> defines the format of ELF executable "
"binary files. Amongst these files are normal executable files, relocatable "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:57
+#: build/C/man5/elf.5:59
msgid ""
"An executable file using the ELF file format consists of an ELF header, "
"followed by a program header table or a section header table, or both. The "
#. "ELF64_xxx".
#. .PP
#. type: Plain text
-#: build/C/man5/elf.5:84
+#: build/C/man5/elf.5:86
msgid ""
"This header file describes the above mentioned headers as C structures and "
"also includes structures for dynamic sections, relocation sections and "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:96
+#: build/C/man5/elf.5:98
msgid ""
"The following types are used for N-bit architectures (N=32,64, I<ElfN> "
"stands for I<Elf32> or I<Elf64>, I<uintN_t> stands for I<uint32_t> or "
#. Elf32_Size Unsigned object size
#. type: Plain text
-#: build/C/man5/elf.5:110
+#: build/C/man5/elf.5:112
#, no-wrap
msgid ""
"ElfN_Addr Unsigned program address, uintN_t\n"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:125
+#: build/C/man5/elf.5:127
msgid ""
"(Note: The *BSD terminology is a bit different. There I<Elf64_Half> is "
"twice as large as I<Elf32_Half>, and I<Elf64Quarter> is used for "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:132
+#: build/C/man5/elf.5:134
msgid ""
"All data structures that the file format defines follow the \"natural\" size "
"and alignment guidelines for the relevant class. If necessary, data "
"structures contain explicit padding to ensure 4-byte alignment for 4-byte "
-"objects, to force structure sizes to a multiple of 4, etc."
+"objects, to force structure sizes to a multiple of 4, and so on."
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:137
+#: build/C/man5/elf.5:139
msgid "The ELF header is described by the type I<Elf32_Ehdr> or I<Elf64_Ehdr>:"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:141
+#: build/C/man5/elf.5:143
#, no-wrap
msgid "#define EI_NIDENT 16\n"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:158
+#: build/C/man5/elf.5:160
#, no-wrap
msgid ""
"typedef struct {\n"
#. .Bl -tag -width "e_phentsize"
#. type: Plain text
-#: build/C/man5/elf.5:163
+#: build/C/man5/elf.5:165
msgid "The fields have the following meanings:"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:163
+#: build/C/man5/elf.5:165
#, no-wrap
msgid "I<e_ident>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:173
+#: build/C/man5/elf.5:175
msgid ""
"This array of bytes specifies to interpret the file, independent of the "
"processor or the file's remaining contents. Within this array everything is "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:175
+#: build/C/man5/elf.5:177
#, no-wrap
msgid "B<EI_MAG0>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:181
+#: build/C/man5/elf.5:183
msgid ""
"The first byte of the magic number. It must be filled with B<ELFMAG0>. (0: "
"0x7f)"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:181
+#: build/C/man5/elf.5:183
#, no-wrap
msgid "B<EI_MAG1>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:187
+#: build/C/man5/elf.5:189
msgid ""
"The second byte of the magic number. It must be filled with B<ELFMAG1>. "
"(1: \\(aqE\\(aq)"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:187
+#: build/C/man5/elf.5:189
#, no-wrap
msgid "B<EI_MAG2>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:193
+#: build/C/man5/elf.5:195
msgid ""
"The third byte of the magic number. It must be filled with B<ELFMAG2>. (2: "
"\\(aqL\\(aq)"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:193
+#: build/C/man5/elf.5:195
#, no-wrap
msgid "B<EI_MAG3>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:199
+#: build/C/man5/elf.5:201
msgid ""
"The fourth byte of the magic number. It must be filled with B<ELFMAG3>. "
"(3: \\(aqF\\(aq)"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:199
+#: build/C/man5/elf.5:201
#, no-wrap
msgid "B<EI_CLASS>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:202
+#: build/C/man5/elf.5:204
msgid "The fifth byte identifies the architecture for this binary:"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:204
+#: build/C/man5/elf.5:206
#, no-wrap
msgid "B<ELFCLASSNONE>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:208
+#: build/C/man5/elf.5:210
msgid "This class is invalid."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:208
+#: build/C/man5/elf.5:210
#, no-wrap
msgid "B<ELFCLASS32>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:213
+#: build/C/man5/elf.5:215
msgid ""
"This defines the 32-bit architecture. It supports machines with files and "
"virtual address spaces up to 4 Gigabytes."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:213
+#: build/C/man5/elf.5:215
#, no-wrap
msgid "B<ELFCLASS64>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:216
+#: build/C/man5/elf.5:218
msgid "This defines the 64-bit architecture."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:219
+#: build/C/man5/elf.5:221
#, no-wrap
msgid "B<EI_DATA>"
msgstr ""
#. .Bl -tag -width "ELFDATA2LSB" -compact
#. type: Plain text
-#: build/C/man5/elf.5:225
+#: build/C/man5/elf.5:227
msgid ""
"The sixth byte specifies the data encoding of the processor-specific data in "
"the file. Currently these encodings are supported:"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:226
+#: build/C/man5/elf.5:228
#, no-wrap
msgid "B<ELFDATANONE>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:230
+#: build/C/man5/elf.5:232
msgid "Unknown data format."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:230
+#: build/C/man5/elf.5:232
#, no-wrap
msgid "B<ELFDATA2LSB>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:233
+#: build/C/man5/elf.5:235
msgid "Two's complement, little-endian."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:233
+#: build/C/man5/elf.5:235
#, no-wrap
msgid "B<ELFDATA2MSB>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:236
+#: build/C/man5/elf.5:238
msgid "Two's complement, big-endian."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:239
+#: build/C/man5/elf.5:241
#, no-wrap
msgid "B<EI_VERSION>"
msgstr ""
#. .Bl -tag -width "EV_CURRENT" -compact
#. type: Plain text
-#: build/C/man5/elf.5:244
-msgid "The version number of the ELF specification:"
+#: build/C/man5/elf.5:246
+msgid "The seventh byte is the version number of the ELF specification:"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:245 build/C/man5/elf.5:498
+#: build/C/man5/elf.5:247 build/C/man5/elf.5:501
#, no-wrap
msgid "B<EV_NONE>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:248 build/C/man5/elf.5:502
+#: build/C/man5/elf.5:250 build/C/man5/elf.5:505
msgid "Invalid version."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:248 build/C/man5/elf.5:502
+#: build/C/man5/elf.5:250 build/C/man5/elf.5:505
#, no-wrap
msgid "B<EV_CURRENT>"
msgstr ""
#. .El
#. type: Plain text
-#: build/C/man5/elf.5:251 build/C/man5/elf.5:506
+#: build/C/man5/elf.5:253 build/C/man5/elf.5:509
msgid "Current version."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:254
+#: build/C/man5/elf.5:256
#, no-wrap
msgid "B<EI_OSABI>"
msgstr ""
#. .Bl -tag -width "ELFOSABI_STANDALONE" -compact
#. type: Plain text
-#: build/C/man5/elf.5:263
+#: build/C/man5/elf.5:265
msgid ""
-"This byte identifies the operating system and ABI to which the object is "
-"targeted. Some fields in other ELF structures have flags and values that "
+"The eighth byte identifies the operating system and ABI to which the object "
+"is targeted. Some fields in other ELF structures have flags and values that "
"have platform-specific meanings; the interpretation of those fields is "
-"determined by the value of this byte. E.g.:"
+"determined by the value of this byte. For example:"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:264
+#: build/C/man5/elf.5:266
#, no-wrap
msgid "B<ELFOSABI_NONE>"
msgstr ""
#. 0
#. type: Plain text
-#: build/C/man5/elf.5:269
+#: build/C/man5/elf.5:271
msgid "Same as ELFOSABI_SYSV"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:269
+#: build/C/man5/elf.5:271
#, no-wrap
msgid "B<ELFOSABI_SYSV>"
msgstr ""
#. 0
#. synonym: ELFOSABI_NONE
#. type: Plain text
-#: build/C/man5/elf.5:274
+#: build/C/man5/elf.5:276
msgid "UNIX System V ABI."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:274
+#: build/C/man5/elf.5:276
#, no-wrap
msgid "B<ELFOSABI_HPUX>"
msgstr ""
#. 1
#. type: Plain text
-#: build/C/man5/elf.5:278
+#: build/C/man5/elf.5:280
msgid "HP-UX ABI."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:278
+#: build/C/man5/elf.5:280
#, no-wrap
msgid "B<ELFOSABI_NETBSD>"
msgstr ""
#. 2
#. type: Plain text
-#: build/C/man5/elf.5:282
+#: build/C/man5/elf.5:284
msgid "NetBSD ABI."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:282
+#: build/C/man5/elf.5:284
#, no-wrap
msgid "B<ELFOSABI_LINUX>"
msgstr ""
#. 86Open Common IA32 ABI.
#. 5
#. type: Plain text
-#: build/C/man5/elf.5:294
+#: build/C/man5/elf.5:296
msgid "Linux ABI."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:294
+#: build/C/man5/elf.5:296
#, no-wrap
msgid "B<ELFOSABI_SOLARIS>"
msgstr ""
#. 6
#. .TP
#. .BR ELFOSABI_MONTEREY
-#. Monterey project ABI. Now replaced by
+#. Monterey project ABI.
+#. Now replaced by
#. ELFOSABI_AIX
#. 7
#. type: Plain text
-#: build/C/man5/elf.5:303
+#: build/C/man5/elf.5:306
msgid "Solaris ABI."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:303
+#: build/C/man5/elf.5:306
#, no-wrap
msgid "B<ELFOSABI_IRIX>"
msgstr ""
#. 8
#. type: Plain text
-#: build/C/man5/elf.5:307
+#: build/C/man5/elf.5:310
msgid "IRIX ABI."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:307
+#: build/C/man5/elf.5:310
#, no-wrap
msgid "B<ELFOSABI_FREEBSD>"
msgstr ""
#. 9
#. type: Plain text
-#: build/C/man5/elf.5:311
+#: build/C/man5/elf.5:314
msgid "FreeBSD ABI."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:311
+#: build/C/man5/elf.5:314
#, no-wrap
msgid "B<ELFOSABI_TRU64>"
msgstr ""
#. ELFOSABI_OPENBSD
#. 12
#. type: Plain text
-#: build/C/man5/elf.5:319
+#: build/C/man5/elf.5:322
msgid "TRU64 UNIX ABI."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:319
+#: build/C/man5/elf.5:322
#, no-wrap
msgid "B<ELFOSABI_ARM>"
msgstr ""
#. 97
#. type: Plain text
-#: build/C/man5/elf.5:323
+#: build/C/man5/elf.5:326
msgid "ARM architecture ABI."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:323
+#: build/C/man5/elf.5:326
#, no-wrap
msgid "B<ELFOSABI_STANDALONE>"
msgstr ""
#. 255
#. .El
#. type: Plain text
-#: build/C/man5/elf.5:328
+#: build/C/man5/elf.5:331
msgid "Stand-alone (embedded) ABI."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:330
+#: build/C/man5/elf.5:333
#, no-wrap
msgid "B<EI_ABIVERSION>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:340
+#: build/C/man5/elf.5:343
msgid ""
-"This byte identifies the version of the ABI to which the object is "
+"The ninth byte identifies the version of the ABI to which the object is "
"targeted. This field is used to distinguish among incompatible versions of "
"an ABI. The interpretation of this version number is dependent on the ABI "
"identified by the B<EI_OSABI> field. Applications conforming to this "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:340
+#: build/C/man5/elf.5:343
#, no-wrap
msgid "B<EI_PAD>"
msgstr ""
#. .BR EI_BRAND
#. Start of architecture identification.
#. type: Plain text
-#: build/C/man5/elf.5:356
+#: build/C/man5/elf.5:359
msgid ""
"Start of padding. These bytes are reserved and set to zero. Programs which "
"read them should ignore them. The value for B<EI_PAD> will change in the "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:356
+#: build/C/man5/elf.5:359
#, no-wrap
msgid "B<EI_NIDENT>"
msgstr ""
#. .El
#. type: Plain text
-#: build/C/man5/elf.5:362
+#: build/C/man5/elf.5:365
msgid "The size of the I<e_ident> array."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:363
+#: build/C/man5/elf.5:366
#, no-wrap
msgid "I<e_type>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:366
+#: build/C/man5/elf.5:369
msgid "This member of the structure identifies the object file type:"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:368
+#: build/C/man5/elf.5:371
#, no-wrap
msgid "B<ET_NONE>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:372
+#: build/C/man5/elf.5:375
msgid "An unknown type."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:372
+#: build/C/man5/elf.5:375
#, no-wrap
msgid "B<ET_REL>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:375
+#: build/C/man5/elf.5:378
msgid "A relocatable file."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:375
+#: build/C/man5/elf.5:378
#, no-wrap
msgid "B<ET_EXEC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:378
+#: build/C/man5/elf.5:381
msgid "An executable file."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:378
+#: build/C/man5/elf.5:381
#, no-wrap
msgid "B<ET_DYN>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:381
+#: build/C/man5/elf.5:384
msgid "A shared object."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:381
+#: build/C/man5/elf.5:384
#, no-wrap
msgid "B<ET_CORE>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:384
+#: build/C/man5/elf.5:387
msgid "A core file."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:387
+#: build/C/man5/elf.5:390
#, no-wrap
msgid "I<e_machine>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:391
+#: build/C/man5/elf.5:394
msgid ""
-"This member specifies the required architecture for an individual file. "
-"E.g.:"
+"This member specifies the required architecture for an individual file. For "
+"example:"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:393
+#: build/C/man5/elf.5:396
#, no-wrap
msgid "B<EM_NONE>"
msgstr ""
#. 0
#. type: Plain text
-#: build/C/man5/elf.5:398
+#: build/C/man5/elf.5:401
msgid "An unknown machine."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:398
+#: build/C/man5/elf.5:401
#, no-wrap
msgid "B<EM_M32>"
msgstr ""
#. 1
#. type: Plain text
-#: build/C/man5/elf.5:402
+#: build/C/man5/elf.5:405
msgid "AT&T WE 32100."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:402
+#: build/C/man5/elf.5:405
#, no-wrap
msgid "B<EM_SPARC>"
msgstr ""
#. 2
#. type: Plain text
-#: build/C/man5/elf.5:406
+#: build/C/man5/elf.5:409
msgid "Sun Microsystems SPARC."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:406
+#: build/C/man5/elf.5:409
#, no-wrap
msgid "B<EM_386>"
msgstr ""
#. 3
#. type: Plain text
-#: build/C/man5/elf.5:410
+#: build/C/man5/elf.5:413
msgid "Intel 80386."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:410
+#: build/C/man5/elf.5:413
#, no-wrap
msgid "B<EM_68K>"
msgstr ""
#. 4
#. type: Plain text
-#: build/C/man5/elf.5:414
+#: build/C/man5/elf.5:417
msgid "Motorola 68000."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:414
+#: build/C/man5/elf.5:417
#, no-wrap
msgid "B<EM_88K>"
msgstr ""
#. Intel 80486.
#. 6
#. type: Plain text
-#: build/C/man5/elf.5:422
+#: build/C/man5/elf.5:425
msgid "Motorola 88000."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:422
+#: build/C/man5/elf.5:425
#, no-wrap
msgid "B<EM_860>"
msgstr ""
#. 7
#. type: Plain text
-#: build/C/man5/elf.5:426
+#: build/C/man5/elf.5:429
msgid "Intel 80860."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:426
+#: build/C/man5/elf.5:429
#, no-wrap
msgid "B<EM_MIPS>"
msgstr ""
#. EM_MIPS_RS3_LE (MIPS R3000 little-endian)
#. 10
#. type: Plain text
-#: build/C/man5/elf.5:438
+#: build/C/man5/elf.5:441
msgid "MIPS RS3000 (big-endian only)."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:438
+#: build/C/man5/elf.5:441
#, no-wrap
msgid "B<EM_PARISC>"
msgstr ""
#. 15
#. type: Plain text
-#: build/C/man5/elf.5:442
+#: build/C/man5/elf.5:445
msgid "HP/PA."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:442
+#: build/C/man5/elf.5:445
#, no-wrap
msgid "B<EM_SPARC32PLUS>"
msgstr ""
#. 18
#. type: Plain text
-#: build/C/man5/elf.5:446
+#: build/C/man5/elf.5:449
msgid "SPARC with enhanced instruction set."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:446
+#: build/C/man5/elf.5:449
#, no-wrap
msgid "B<EM_PPC>"
msgstr ""
#. 20
#. type: Plain text
-#: build/C/man5/elf.5:450
+#: build/C/man5/elf.5:453
msgid "PowerPC."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:450
+#: build/C/man5/elf.5:453
#, no-wrap
msgid "B<EM_PPC64>"
msgstr ""
#. 21
#. type: Plain text
-#: build/C/man5/elf.5:454
+#: build/C/man5/elf.5:457
msgid "PowerPC 64-bit."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:454
+#: build/C/man5/elf.5:457
#, no-wrap
msgid "B<EM_S390>"
msgstr ""
#. 22
#. type: Plain text
-#: build/C/man5/elf.5:458
+#: build/C/man5/elf.5:461
msgid "IBM S/390"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:458
+#: build/C/man5/elf.5:461
#, no-wrap
msgid "B<EM_ARM>"
msgstr ""
#. 40
#. type: Plain text
-#: build/C/man5/elf.5:462
+#: build/C/man5/elf.5:465
msgid "Advanced RISC Machines"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:462
+#: build/C/man5/elf.5:465
#, no-wrap
msgid "B<EM_SH>"
msgstr ""
#. 42
#. type: Plain text
-#: build/C/man5/elf.5:466
+#: build/C/man5/elf.5:469
msgid "Renesas SuperH"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:466
+#: build/C/man5/elf.5:469
#, no-wrap
msgid "B<EM_SPARCV9>"
msgstr ""
#. 43
#. type: Plain text
-#: build/C/man5/elf.5:470
+#: build/C/man5/elf.5:473
msgid "SPARC v9 64-bit."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:470
+#: build/C/man5/elf.5:473
#, no-wrap
msgid "B<EM_IA_64>"
msgstr ""
#. 50
#. type: Plain text
-#: build/C/man5/elf.5:474
+#: build/C/man5/elf.5:477
msgid "Intel Itanium"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:474
+#: build/C/man5/elf.5:477
#, no-wrap
msgid "B<EM_X86_64>"
msgstr ""
#. 62
#. type: Plain text
-#: build/C/man5/elf.5:478
+#: build/C/man5/elf.5:481
msgid "AMD x86-64"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:478
+#: build/C/man5/elf.5:481
#, no-wrap
msgid "B<EM_VAX>"
msgstr ""
#. .BR EM_ALPHA_EXP
#. Compaq [DEC] Alpha with enhanced instruction set.
#. type: Plain text
-#: build/C/man5/elf.5:490
+#: build/C/man5/elf.5:493
msgid "DEC Vax."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:493
+#: build/C/man5/elf.5:496
#, no-wrap
msgid "I<e_version>"
msgstr ""
#. .Bl -tag -width "EV_CURRENT" -compact
#. type: Plain text
-#: build/C/man5/elf.5:497
+#: build/C/man5/elf.5:500
msgid "This member identifies the file version:"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:508
+#: build/C/man5/elf.5:511
#, no-wrap
msgid "I<e_entry>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:514
+#: build/C/man5/elf.5:517
msgid ""
"This member gives the virtual address to which the system first transfers "
"control, thus starting the process. If the file has no associated entry "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:514
+#: build/C/man5/elf.5:517
#, no-wrap
msgid "I<e_phoff>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:519
+#: build/C/man5/elf.5:522
msgid ""
"This member holds the program header table's file offset in bytes. If the "
"file has no program header table, this member holds zero."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:519
+#: build/C/man5/elf.5:522
#, no-wrap
msgid "I<e_shoff>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:524
+#: build/C/man5/elf.5:527
msgid ""
"This member holds the section header table's file offset in bytes. If the "
-"file has no section header table this member holds zero."
+"file has no section header table, this member holds zero."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:524
+#: build/C/man5/elf.5:527
#, no-wrap
msgid "I<e_flags>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:529
+#: build/C/man5/elf.5:532
msgid ""
"This member holds processor-specific flags associated with the file. Flag "
"names take the form EF_`machine_flag'. Currently no flags have been "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:529
+#: build/C/man5/elf.5:532
#, no-wrap
msgid "I<e_ehsize>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:532
+#: build/C/man5/elf.5:535
msgid "This member holds the ELF header's size in bytes."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:532
+#: build/C/man5/elf.5:535
#, no-wrap
msgid "I<e_phentsize>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:536
+#: build/C/man5/elf.5:539
msgid ""
"This member holds the size in bytes of one entry in the file's program "
"header table; all entries are the same size."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:536
+#: build/C/man5/elf.5:539
#, no-wrap
msgid "I<e_phnum>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:549
+#: build/C/man5/elf.5:552
msgid ""
"This member holds the number of entries in the program header table. Thus "
"the product of I<e_phentsize> and I<e_phnum> gives the table's size in "
#. This is a Linux extension, added in Linux 2.6.34.
#. .Bl -tag -width "PN_XNUM"
#. type: Plain text
-#: build/C/man5/elf.5:563
+#: build/C/man5/elf.5:566
msgid ""
"If the number of entries in the program header table is larger than or equal "
"to B<PN_XNUM> (0xffff), this member holds B<PN_XNUM> (0xffff) and the real "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:564
+#: build/C/man5/elf.5:567
#, no-wrap
msgid "B<PN_XNUM>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:569
+#: build/C/man5/elf.5:572
msgid ""
"This is defined as 0xffff, the largest number I<e_phnum> can have, "
"specifying where the actual number of program headers is assigned."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:573
+#: build/C/man5/elf.5:576
#, no-wrap
msgid "I<e_shentsize>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:578
+#: build/C/man5/elf.5:581
msgid ""
"This member holds a sections header's size in bytes. A section header is "
"one entry in the section header table; all entries are the same size."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:578
+#: build/C/man5/elf.5:581
#, no-wrap
msgid "I<e_shnum>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:591
+#: build/C/man5/elf.5:594
msgid ""
"This member holds the number of entries in the section header table. Thus "
"the product of I<e_shentsize> and I<e_shnum> gives the section header "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:603
+#: build/C/man5/elf.5:606
msgid ""
"If the number of entries in the section header table is larger than or equal "
"to B<SHN_LORESERVE> (0xff00), I<e_shnum> holds the value zero and the real "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:603
+#: build/C/man5/elf.5:606
#, no-wrap
msgid "I<e_shstrndx>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:610
+#: build/C/man5/elf.5:613
msgid ""
"This member holds the section header table index of the entry associated "
"with the section name string table. If the file has no section name string "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:621
+#: build/C/man5/elf.5:625
msgid ""
"If the index of section name string table section is larger than or equal to "
"B<SHN_LORESERVE> (0xff00), this member holds B<SHN_XINDEX> (0xffff) and the "
"real index of the section name string table section is held in the "
-"I<sh_link> member of the initial entry in section header table. Otherwise, "
+"I<sh_link> member of the initial entry in section header table. Otherwise, "
"the I<sh_link> member of the initial entry in section header table contains "
"the value zero."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:623 build/C/man5/elf.5:909
+#: build/C/man5/elf.5:627 build/C/man5/elf.5:914
#, no-wrap
msgid "B<SHN_UNDEF>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:632
+#: build/C/man5/elf.5:636
msgid ""
"This value marks an undefined, missing, irrelevant, or otherwise meaningless "
"section reference. For example, a symbol \"defined\" relative to section "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:632 build/C/man5/elf.5:913
+#: build/C/man5/elf.5:636 build/C/man5/elf.5:918
#, no-wrap
msgid "B<SHN_LORESERVE>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:635 build/C/man5/elf.5:916
+#: build/C/man5/elf.5:639 build/C/man5/elf.5:921
msgid "This value specifies the lower bound of the range of reserved indices."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:635 build/C/man5/elf.5:916
+#: build/C/man5/elf.5:639 build/C/man5/elf.5:921
#, no-wrap
msgid "B<SHN_LOPROC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:640 build/C/man5/elf.5:921
+#: build/C/man5/elf.5:644 build/C/man5/elf.5:926
msgid ""
"Values greater than or equal to B<SHN_HIPROC> are reserved for "
"processor-specific semantics."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:640 build/C/man5/elf.5:921
+#: build/C/man5/elf.5:644 build/C/man5/elf.5:926
#, no-wrap
msgid "B<SHN_HIPROC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:645 build/C/man5/elf.5:926
+#: build/C/man5/elf.5:649 build/C/man5/elf.5:931
msgid ""
"Values less than or equal to B<SHN_LOPROC> are reserved for "
"processor-specific semantics."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:645 build/C/man5/elf.5:926
+#: build/C/man5/elf.5:649 build/C/man5/elf.5:931
#, no-wrap
msgid "B<SHN_ABS>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:652
+#: build/C/man5/elf.5:656
msgid ""
"This value specifies absolute values for the corresponding reference. For "
"example, symbols defined relative to section number B<SHN_ABS> have absolute "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:652 build/C/man5/elf.5:933
+#: build/C/man5/elf.5:656 build/C/man5/elf.5:938
#, no-wrap
msgid "B<SHN_COMMON>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:656
+#: build/C/man5/elf.5:660
msgid ""
"Symbols defined relative to this section are common symbols, such as Fortran "
"COMMON or unallocated C external variables."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:656 build/C/man5/elf.5:937
+#: build/C/man5/elf.5:660 build/C/man5/elf.5:942
#, no-wrap
msgid "B<SHN_HIRESERVE>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:669
+#: build/C/man5/elf.5:673
msgid ""
"This value specifies the upper bound of the range of reserved indices "
"between B<SHN_LORESERVE> and B<SHN_HIRESERVE>, inclusive; the values do not "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:691
+#: build/C/man5/elf.5:695
msgid ""
"An executable or shared object file's program header table is an array of "
"structures, each describing a segment or other information the system needs "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:704
+#: build/C/man5/elf.5:708
#, no-wrap
msgid ""
"typedef struct {\n"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:719
+#: build/C/man5/elf.5:723
#, no-wrap
msgid ""
"typedef struct {\n"
#. .Bl -tag -width "p_offset"
#. type: Plain text
-#: build/C/man5/elf.5:727
+#: build/C/man5/elf.5:731
msgid ""
"The main difference between the 32-bit and the 64-bit program header lies in "
"the location of the I<p_flags> member in the total struct."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:727
+#: build/C/man5/elf.5:731
#, no-wrap
msgid "I<p_type>"
msgstr ""
#. .Bl -tag -width "PT_DYNAMIC"
#. type: Plain text
-#: build/C/man5/elf.5:732
+#: build/C/man5/elf.5:736
msgid ""
"This member of the Phdr struct tells what kind of segment this array element "
"describes or how to interpret the array element's information."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:733
+#: build/C/man5/elf.5:737
#, no-wrap
msgid "B<PT_NULL>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:737
+#: build/C/man5/elf.5:741
msgid ""
"The array element is unused and the other members' values are undefined. "
"This lets the program header have ignored entries."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:737
+#: build/C/man5/elf.5:741
#, no-wrap
msgid "B<PT_LOAD>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:758
+#: build/C/man5/elf.5:762
msgid ""
"The array element specifies a loadable segment, described by I<p_filesz> and "
"I<p_memsz>. The bytes from the file are mapped to the beginning of the "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:758
+#: build/C/man5/elf.5:762
#, no-wrap
msgid "B<PT_DYNAMIC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:761
+#: build/C/man5/elf.5:765
msgid "The array element specifies dynamic linking information."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:761
+#: build/C/man5/elf.5:765
#, no-wrap
msgid "B<PT_INTERP>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:769
+#: build/C/man5/elf.5:773
msgid ""
"The array element specifies the location and size of a null-terminated "
"pathname to invoke as an interpreter. This segment type is meaningful only "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:769
+#: build/C/man5/elf.5:773
#, no-wrap
msgid "B<PT_NOTE>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:772
+#: build/C/man5/elf.5:776
msgid "The array element specifies the location and size for auxiliary information."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:772
+#: build/C/man5/elf.5:776
#, no-wrap
msgid "B<PT_SHLIB>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:777
+#: build/C/man5/elf.5:781
msgid ""
"This segment type is reserved but has unspecified semantics. Programs that "
"contain an array element of this type do not conform to the ABI."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:777
+#: build/C/man5/elf.5:781
#, no-wrap
msgid "B<PT_PHDR>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:786
+#: build/C/man5/elf.5:790
msgid ""
"The array element, if present, specifies the location and size of the "
"program header table itself, both in the file and in the memory image of the "
"program. This segment type may not occur more than once in a file. "
-"Moreover, it may only occur if the program header table is part of the "
+"Moreover, it may occur only if the program header table is part of the "
"memory image of the program. If it is present, it must precede any loadable "
"segment entry."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:786
+#: build/C/man5/elf.5:790
#, no-wrap
msgid "B<PT_LOPROC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:791
+#: build/C/man5/elf.5:795
msgid ""
"Values greater than or equal to B<PT_HIPROC> are reserved for "
"processor-specific semantics."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:791
+#: build/C/man5/elf.5:795
#, no-wrap
msgid "B<PT_HIPROC>"
msgstr ""
-#. .El
#. type: Plain text
-#: build/C/man5/elf.5:802
+#: build/C/man5/elf.5:800
msgid ""
"Values less than or equal to B<PT_LOPROC> are reserved for "
-"processor-specific semantics. B<PT_GNU_STACK> GNU extension which is used "
-"by the Linux kernel to control the state of the stack via the flags set in "
-"the I<p_flags> member."
+"processor-specific semantics."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:803
+#: build/C/man5/elf.5:800
#, no-wrap
-msgid "I<p_offset>"
+msgid "B<PT_GNU_STACK>"
msgstr ""
+#. .El
#. type: Plain text
#: build/C/man5/elf.5:807
msgid ""
+"GNU extension which is used by the Linux kernel to control the state of the "
+"stack via the flags set in the I<p_flags> member."
+msgstr ""
+
+#. type: TP
+#: build/C/man5/elf.5:808
+#, no-wrap
+msgid "I<p_offset>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man5/elf.5:812
+msgid ""
"This member holds the offset from the beginning of the file at which the "
"first byte of the segment resides."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:807
+#: build/C/man5/elf.5:812
#, no-wrap
msgid "I<p_vaddr>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:811
+#: build/C/man5/elf.5:816
msgid ""
"This member holds the virtual address at which the first byte of the segment "
"resides in memory."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:811
+#: build/C/man5/elf.5:816
#, no-wrap
msgid "I<p_paddr>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:819
+#: build/C/man5/elf.5:824
msgid ""
"On systems for which physical addressing is relevant, this member is "
"reserved for the segment's physical address. Under BSD this member is not "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:819
+#: build/C/man5/elf.5:824
#, no-wrap
msgid "I<p_filesz>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:823
+#: build/C/man5/elf.5:828
msgid ""
"This member holds the number of bytes in the file image of the segment. It "
"may be zero."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:823
+#: build/C/man5/elf.5:828
#, no-wrap
msgid "I<p_memsz>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:827
+#: build/C/man5/elf.5:832
msgid ""
"This member holds the number of bytes in the memory image of the segment. "
"It may be zero."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:827
+#: build/C/man5/elf.5:832
#, no-wrap
msgid "I<p_flags>"
msgstr ""
#. .Bl -tag -width "PF_X" -compact
#. type: Plain text
-#: build/C/man5/elf.5:831
-msgid "This member holds a bitmask of flags relevant to the segment:"
+#: build/C/man5/elf.5:836
+msgid "This member holds a bit mask of flags relevant to the segment:"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:832
+#: build/C/man5/elf.5:837
#, no-wrap
msgid "B<PF_X>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:836
+#: build/C/man5/elf.5:841
msgid "An executable segment."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:836
+#: build/C/man5/elf.5:841
#, no-wrap
msgid "B<PF_W>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:839
+#: build/C/man5/elf.5:844
msgid "A writable segment."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:839
+#: build/C/man5/elf.5:844
#, no-wrap
msgid "B<PF_R>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:842
+#: build/C/man5/elf.5:847
msgid "A readable segment."
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:855
+#: build/C/man5/elf.5:860
msgid ""
"A text segment commonly has the flags B<PF_X> and B<PF_R>. A data segment "
"commonly has B<PF_X>, B<PF_W> and B<PF_R>."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:855
+#: build/C/man5/elf.5:860
#, no-wrap
msgid "I<p_align>"
msgstr ""
#. .El
#. type: Plain text
-#: build/C/man5/elf.5:874
+#: build/C/man5/elf.5:879
msgid ""
"This member holds the value to which the segments are aligned in memory and "
"in the file. Loadable process segments must have congruent values for "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:891
+#: build/C/man5/elf.5:896
msgid ""
"A file's section header table lets one locate all the file's sections. The "
"section header table is an array of I<Elf32_Shdr> or I<Elf64_Shdr> "
#. .Bl -tag -width "SHN_LORESERVE"
#. type: Plain text
-#: build/C/man5/elf.5:908
+#: build/C/man5/elf.5:913
msgid ""
"A section header table index is a subscript into this array. Some section "
"header table indices are reserved: the initial entry and the indices between "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:913
+#: build/C/man5/elf.5:918
msgid ""
-"This value marks an undefined, missing, irrelevant or otherwise meaningless "
+"This value marks an undefined, missing, irrelevant, or otherwise meaningless "
"section reference."
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:933
+#: build/C/man5/elf.5:938
msgid ""
"This value specifies the absolute value for the corresponding reference. "
"For example, a symbol defined relative to section number B<SHN_ABS> has an "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:937
+#: build/C/man5/elf.5:942
msgid ""
"Symbols defined relative to this section are common symbols, such as FORTRAN "
"COMMON or unallocated C external variables."
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:948
+#: build/C/man5/elf.5:953
msgid ""
"This value specifies the upper bound of the range of reserved indices. The "
"system reserves indices between B<SHN_LORESERVE> and B<SHN_HIRESERVE>, "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:952
+#: build/C/man5/elf.5:957
msgid "The section header has the following structure:"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:967
+#: build/C/man5/elf.5:972
#, no-wrap
msgid ""
"typedef struct {\n"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:984
+#: build/C/man5/elf.5:989
#, no-wrap
msgid ""
"typedef struct {\n"
#. .Bl -tag -width "sh_addralign"
#. type: Plain text
-#: build/C/man5/elf.5:989
+#: build/C/man5/elf.5:994
msgid "No real differences exist between the 32-bit and 64-bit section headers."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:989
+#: build/C/man5/elf.5:994
#, no-wrap
msgid "I<sh_name>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:995
+#: build/C/man5/elf.5:1000
msgid ""
"This member specifies the name of the section. Its value is an index into "
"the section header string table section, giving the location of a "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:995
+#: build/C/man5/elf.5:1000
#, no-wrap
msgid "I<sh_type>"
msgstr ""
#. .Bl -tag -width "SHT_PROGBITS"
#. type: Plain text
-#: build/C/man5/elf.5:999
+#: build/C/man5/elf.5:1004
msgid "This member categorizes the section's contents and semantics."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1000
+#: build/C/man5/elf.5:1005
#, no-wrap
msgid "B<SHT_NULL>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1007
+#: build/C/man5/elf.5:1012
msgid ""
"This value marks the section header as inactive. It does not have an "
"associated section. Other members of the section header have undefined "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1007
+#: build/C/man5/elf.5:1012
#, no-wrap
msgid "B<SHT_PROGBITS>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1011
+#: build/C/man5/elf.5:1016
msgid ""
"This section holds information defined by the program, whose format and "
"meaning are determined solely by the program."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1011
+#: build/C/man5/elf.5:1016
#, no-wrap
msgid "B<SHT_SYMTAB>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1024
+#: build/C/man5/elf.5:1029
msgid ""
"This section holds a symbol table. Typically, B<SHT_SYMTAB> provides "
"symbols for link editing, though it may also be used for dynamic linking. "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1024
+#: build/C/man5/elf.5:1029
#, no-wrap
msgid "B<SHT_STRTAB>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1029
+#: build/C/man5/elf.5:1034
msgid ""
"This section holds a string table. An object file may have multiple string "
"table sections."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1029
+#: build/C/man5/elf.5:1034
#, no-wrap
msgid "B<SHT_RELA>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1037
+#: build/C/man5/elf.5:1042
msgid ""
"This section holds relocation entries with explicit addends, such as type "
"I<Elf32_Rela> for the 32-bit class of object files. An object may have "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1037
+#: build/C/man5/elf.5:1042
#, no-wrap
msgid "B<SHT_HASH>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1044
+#: build/C/man5/elf.5:1049
msgid ""
"This section holds a symbol hash table. An object participating in dynamic "
"linking must contain a symbol hash table. An object file may have only one "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1044
+#: build/C/man5/elf.5:1049
#, no-wrap
msgid "B<SHT_DYNAMIC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1049
+#: build/C/man5/elf.5:1054
msgid ""
"This section holds information for dynamic linking. An object file may have "
"only one dynamic section."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1049
+#: build/C/man5/elf.5:1054
#, no-wrap
msgid "B<SHT_NOTE>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1052
+#: build/C/man5/elf.5:1057
msgid "This section holds information that marks the file in some way."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1052
+#: build/C/man5/elf.5:1057
#, no-wrap
msgid "B<SHT_NOBITS>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1060
+#: build/C/man5/elf.5:1065
msgid ""
"A section of this type occupies no space in the file but otherwise resembles "
"B<SHT_PROGBITS>. Although this section contains no bytes, the I<sh_offset> "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1060
+#: build/C/man5/elf.5:1065
#, no-wrap
msgid "B<SHT_REL>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1068
+#: build/C/man5/elf.5:1073
msgid ""
"This section holds relocation offsets without explicit addends, such as type "
"I<Elf32_Rel> for the 32-bit class of object files. An object file may have "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1068
+#: build/C/man5/elf.5:1073
#, no-wrap
msgid "B<SHT_SHLIB>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1071
+#: build/C/man5/elf.5:1076
msgid "This section is reserved but has unspecified semantics."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1071
+#: build/C/man5/elf.5:1076
#, no-wrap
msgid "B<SHT_DYNSYM>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1078
+#: build/C/man5/elf.5:1083
msgid ""
"This section holds a minimal set of dynamic linking symbols. An object file "
"can also contain a B<SHT_SYMTAB> section."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1078
+#: build/C/man5/elf.5:1083
#, no-wrap
msgid "B<SHT_LOPROC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1083
+#: build/C/man5/elf.5:1088
msgid ""
"This value up to and including B<SHT_HIPROC> is reserved for "
"processor-specific semantics."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1083
+#: build/C/man5/elf.5:1088
#, no-wrap
msgid "B<SHT_HIPROC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1088
+#: build/C/man5/elf.5:1093
msgid ""
"This value down to and including B<SHT_LOPROC> is reserved for "
"processor-specific semantics."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1088
+#: build/C/man5/elf.5:1093
#, no-wrap
msgid "B<SHT_LOUSER>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1092
+#: build/C/man5/elf.5:1097
msgid ""
"This value specifies the lower bound of the range of indices reserved for "
"application programs."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1092
+#: build/C/man5/elf.5:1097
#, no-wrap
msgid "B<SHT_HIUSER>"
msgstr ""
#. .El
#. type: Plain text
-#: build/C/man5/elf.5:1103
+#: build/C/man5/elf.5:1108
msgid ""
"This value specifies the upper bound of the range of indices reserved for "
"application programs. Section types between B<SHT_LOUSER> and B<SHT_HIUSER> "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1104
+#: build/C/man5/elf.5:1109
#, no-wrap
msgid "I<sh_flags>"
msgstr ""
#. .Bl -tag -width "SHF_EXECINSTR" -compact
#. type: Plain text
-#: build/C/man5/elf.5:1117
+#: build/C/man5/elf.5:1122
msgid ""
"Sections support one-bit flags that describe miscellaneous attributes. If a "
"flag bit is set in I<sh_flags>, the attribute is \"on\" for the section. "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1118
+#: build/C/man5/elf.5:1123
#, no-wrap
msgid "B<SHF_WRITE>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1122
+#: build/C/man5/elf.5:1127
msgid "This section contains data that should be writable during process execution."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1122
+#: build/C/man5/elf.5:1127
#, no-wrap
msgid "B<SHF_ALLOC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1129
+#: build/C/man5/elf.5:1134
msgid ""
"This section occupies memory during process execution. Some control "
"sections do not reside in the memory image of an object file. This "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1129
+#: build/C/man5/elf.5:1134
#, no-wrap
msgid "B<SHF_EXECINSTR>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1132
+#: build/C/man5/elf.5:1137
msgid "This section contains executable machine instructions."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1132
+#: build/C/man5/elf.5:1137
#, no-wrap
msgid "B<SHF_MASKPROC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1136
+#: build/C/man5/elf.5:1141
msgid ""
"All bits included in this mask are reserved for processor-specific "
"semantics."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1138
+#: build/C/man5/elf.5:1143
#, no-wrap
msgid "I<sh_addr>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1143
+#: build/C/man5/elf.5:1148
msgid ""
"If this section appears in the memory image of a process, this member holds "
"the address at which the section's first byte should reside. Otherwise, the "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1143
+#: build/C/man5/elf.5:1148
#, no-wrap
msgid "I<sh_offset>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1152
+#: build/C/man5/elf.5:1157
msgid ""
"This member's value holds the byte offset from the beginning of the file to "
"the first byte in the section. One section type, B<SHT_NOBITS>, occupies no "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1152
+#: build/C/man5/elf.5:1157
#, no-wrap
msgid "I<sh_size>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1164
+#: build/C/man5/elf.5:1169
msgid ""
"This member holds the section's size in bytes. Unless the section type is "
"B<SHT_NOBITS>, the section occupies I<sh_size> bytes in the file. A section "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1164
+#: build/C/man5/elf.5:1169
#, no-wrap
msgid "I<sh_link>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1168
+#: build/C/man5/elf.5:1173
msgid ""
"This member holds a section header table index link, whose interpretation "
"depends on the section type."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1168
+#: build/C/man5/elf.5:1173
#, no-wrap
msgid "I<sh_info>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1172
+#: build/C/man5/elf.5:1177
msgid ""
"This member holds extra information, whose interpretation depends on the "
"section type."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1172
+#: build/C/man5/elf.5:1177
#, no-wrap
msgid "I<sh_addralign>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1185
+#: build/C/man5/elf.5:1190
msgid ""
"Some sections have address alignment constraints. If a section holds a "
"doubleword, the system must ensure doubleword alignment for the entire "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1185
+#: build/C/man5/elf.5:1190
#, no-wrap
msgid "I<sh_entsize>"
msgstr ""
#. .El
#. type: Plain text
-#: build/C/man5/elf.5:1192
+#: build/C/man5/elf.5:1197
msgid ""
"Some sections hold a table of fixed-sized entries, such as a symbol table. "
"For such a section, this member gives the size in bytes for each entry. "
#. .Bl -tag -width ".shstrtab"
#. type: Plain text
-#: build/C/man5/elf.5:1195
+#: build/C/man5/elf.5:1200
msgid "Various sections hold program and control information:"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1195
+#: build/C/man5/elf.5:1200
#, no-wrap
msgid "I<.bss>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1207
+#: build/C/man5/elf.5:1212
msgid ""
"This section holds uninitialized data that contributes to the program's "
"memory image. By definition, the system initializes the data with zeros "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1207
+#: build/C/man5/elf.5:1212
#, no-wrap
msgid "I<.comment>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1213
+#: build/C/man5/elf.5:1218
msgid ""
"This section holds version control information. This section is of type "
"B<SHT_PROGBITS>. No attribute types are used."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1213
+#: build/C/man5/elf.5:1218
#, no-wrap
msgid "I<.ctors>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1222
+#: build/C/man5/elf.5:1227
msgid ""
"This section holds initialized pointers to the C++ constructor functions. "
"This section is of type B<SHT_PROGBITS>. The attribute types are "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1222
+#: build/C/man5/elf.5:1227
#, no-wrap
msgid "I<.data>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1232 build/C/man5/elf.5:1242
+#: build/C/man5/elf.5:1237 build/C/man5/elf.5:1247
msgid ""
"This section holds initialized data that contribute to the program's memory "
"image. This section is of type B<SHT_PROGBITS>. The attribute types are "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1232
+#: build/C/man5/elf.5:1237
#, no-wrap
msgid "I<.data1>"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1242
+#: build/C/man5/elf.5:1247
#, no-wrap
msgid "I<.debug>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1250
+#: build/C/man5/elf.5:1255
msgid ""
"This section holds information for symbolic debugging. The contents are "
"unspecified. This section is of type B<SHT_PROGBITS>. No attribute types "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1250
+#: build/C/man5/elf.5:1255
#, no-wrap
msgid "I<.dtors>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1259
+#: build/C/man5/elf.5:1264
msgid ""
"This section holds initialized pointers to the C++ destructor functions. "
"This section is of type B<SHT_PROGBITS>. The attribute types are "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1259
+#: build/C/man5/elf.5:1264
#, no-wrap
msgid "I<.dynamic>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1272
+#: build/C/man5/elf.5:1277
msgid ""
"This section holds dynamic linking information. The section's attributes "
"will include the B<SHF_ALLOC> bit. Whether the B<SHF_WRITE> bit is set is "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1272
+#: build/C/man5/elf.5:1277
#, no-wrap
msgid "I<.dynstr>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1280
+#: build/C/man5/elf.5:1285
msgid ""
"This section holds strings needed for dynamic linking, most commonly the "
"strings that represent the names associated with symbol table entries. This "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1280
+#: build/C/man5/elf.5:1285
#, no-wrap
msgid "I<.dynsym>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1287
+#: build/C/man5/elf.5:1292
msgid ""
"This section holds the dynamic linking symbol table. This section is of "
"type B<SHT_DYNSYM>. The attribute used is B<SHF_ALLOC>."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1287
+#: build/C/man5/elf.5:1292
#, no-wrap
msgid "I<.fini>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1299
+#: build/C/man5/elf.5:1304
msgid ""
"This section holds executable instructions that contribute to the process "
"termination code. When a program exits normally the system arranges to "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1299
+#: build/C/man5/elf.5:1304
#, no-wrap
msgid "I<.gnu.version>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1308
+#: build/C/man5/elf.5:1313
msgid ""
"This section holds the version symbol table, an array of I<ElfN_Half> "
"elements. This section is of type B<SHT_GNU_versym>. The attribute type "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1308
+#: build/C/man5/elf.5:1313
#, no-wrap
msgid "I<.gnu.version_d>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1317
+#: build/C/man5/elf.5:1322
msgid ""
"This section holds the version symbol definitions, a table of I<ElfN_Verdef> "
"structures. This section is of type B<SHT_GNU_verdef>. The attribute type "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1317
+#: build/C/man5/elf.5:1322
#, no-wrap
msgid "I<.gnu.version_r>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1327
+#: build/C/man5/elf.5:1332
msgid ""
"This section holds the version symbol needed elements, a table of "
"I<ElfN_Verneed> structures. This section is of type B<SHT_GNU_versym>. The "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1327
+#: build/C/man5/elf.5:1332
#, no-wrap
msgid "I<.got>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1333
+#: build/C/man5/elf.5:1338
msgid ""
"This section holds the global offset table. This section is of type "
-"B<SHT_PROGBITS>. The attributes are processor specific."
+"B<SHT_PROGBITS>. The attributes are processor-specific."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1333
+#: build/C/man5/elf.5:1338
#, no-wrap
msgid "I<.hash>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1340
+#: build/C/man5/elf.5:1345
msgid ""
"This section holds a symbol hash table. This section is of type "
"B<SHT_HASH>. The attribute used is B<SHF_ALLOC>."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1340
+#: build/C/man5/elf.5:1345
#, no-wrap
msgid "I<.init>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1352
+#: build/C/man5/elf.5:1357
msgid ""
"This section holds executable instructions that contribute to the process "
"initialization code. When a program starts to run the system arranges to "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1352
+#: build/C/man5/elf.5:1357
#, no-wrap
msgid "I<.interp>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1363
+#: build/C/man5/elf.5:1368
msgid ""
"This section holds the pathname of a program interpreter. If the file has a "
"loadable segment that includes the section, the section's attributes will "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1363
+#: build/C/man5/elf.5:1368
#, no-wrap
msgid "I<.line>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1371
+#: build/C/man5/elf.5:1376
msgid ""
"This section holds line number information for symbolic debugging, which "
"describes the correspondence between the program source and the machine "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1371
+#: build/C/man5/elf.5:1376
#, no-wrap
msgid "I<.note>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1384
+#: build/C/man5/elf.5:1389
msgid ""
"This section holds information in the \"Note Section\" format. This section "
"is of type B<SHT_NOTE>. No attribute types are used. OpenBSD native "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1384
+#: build/C/man5/elf.5:1389
#, no-wrap
msgid "I<.note.GNU-stack>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1393
+#: build/C/man5/elf.5:1398
msgid ""
"This section is used in Linux object files for declaring stack attributes. "
"This section is of type B<SHT_PROGBITS>. The only attribute used is "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1393
+#: build/C/man5/elf.5:1398
#, no-wrap
msgid "I<.plt>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1399
+#: build/C/man5/elf.5:1404
msgid ""
"This section holds the procedure linkage table. This section is of type "
-"B<SHT_PROGBITS>. The attributes are processor specific."
+"B<SHT_PROGBITS>. The attributes are processor-specific."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1399
+#: build/C/man5/elf.5:1404
#, no-wrap
msgid "I<.relNAME>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1418
+#: build/C/man5/elf.5:1423
msgid ""
"This section holds relocation information as described below. If the file "
"has a loadable segment that includes relocation, the section's attributes "
-"will include the B<SHF_ALLOC> bit. Otherwise the bit will be off. By "
+"will include the B<SHF_ALLOC> bit. Otherwise, the bit will be off. By "
"convention, \"NAME\" is supplied by the section to which the relocations "
"apply. Thus a relocation section for B<.text> normally would have the name "
"B<.rel.text>. This section is of type B<SHT_REL>."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1418
+#: build/C/man5/elf.5:1423
#, no-wrap
msgid "I<.relaNAME>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1437
+#: build/C/man5/elf.5:1442
msgid ""
"This section holds relocation information as described below. If the file "
"has a loadable segment that includes relocation, the section's attributes "
-"will include the B<SHF_ALLOC> bit. Otherwise the bit will be off. By "
+"will include the B<SHF_ALLOC> bit. Otherwise, the bit will be off. By "
"convention, \"NAME\" is supplied by the section to which the relocations "
"apply. Thus a relocation section for B<.text> normally would have the name "
"B<.rela.text>. This section is of type B<SHT_RELA>."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1437
+#: build/C/man5/elf.5:1442
#, no-wrap
msgid "I<.rodata>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1445 build/C/man5/elf.5:1453
+#: build/C/man5/elf.5:1450 build/C/man5/elf.5:1458
msgid ""
"This section holds read-only data that typically contributes to a "
"nonwritable segment in the process image. This section is of type "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1445
+#: build/C/man5/elf.5:1450
#, no-wrap
msgid "I<.rodata1>"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1453
+#: build/C/man5/elf.5:1458
#, no-wrap
msgid "I<.shstrtab>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1459
+#: build/C/man5/elf.5:1464
msgid ""
"This section holds section names. This section is of type B<SHT_STRTAB>. "
"No attribute types are used."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1459
+#: build/C/man5/elf.5:1464
#, no-wrap
msgid "I<.strtab>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1471
+#: build/C/man5/elf.5:1476
msgid ""
"This section holds strings, most commonly the strings that represent the "
"names associated with symbol table entries. If the file has a loadable "
"segment that includes the symbol string table, the section's attributes will "
-"include the B<SHF_ALLOC> bit. Otherwise the bit will be off. This section "
+"include the B<SHF_ALLOC> bit. Otherwise, the bit will be off. This section "
"is of type B<SHT_STRTAB>."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1471
+#: build/C/man5/elf.5:1476
#, no-wrap
msgid "I<.symtab>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1482
+#: build/C/man5/elf.5:1487
msgid ""
"This section holds a symbol table. If the file has a loadable segment that "
"includes the symbol table, the section's attributes will include the "
-"B<SHF_ALLOC> bit. Otherwise the bit will be off. This section is of type "
+"B<SHF_ALLOC> bit. Otherwise, the bit will be off. This section is of type "
"B<SHT_SYMTAB>."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1482
+#: build/C/man5/elf.5:1487
#, no-wrap
msgid "I<.text>"
msgstr ""
#. .El
#. type: Plain text
-#: build/C/man5/elf.5:1494
+#: build/C/man5/elf.5:1499
msgid ""
"This section holds the \"text\", or executable instructions, of a program. "
"This section is of type B<SHT_PROGBITS>. The attributes used are "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1505
+#: build/C/man5/elf.5:1510
msgid ""
"String table sections hold null-terminated character sequences, commonly "
"called strings. The object file uses these strings to represent symbol and "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1510
+#: build/C/man5/elf.5:1515
msgid ""
"An object file's symbol table holds information needed to locate and "
"relocate a program's symbolic definitions and references. A symbol table "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1521
+#: build/C/man5/elf.5:1526
#, no-wrap
msgid ""
"typedef struct {\n"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1534
+#: build/C/man5/elf.5:1539
#, no-wrap
msgid ""
"typedef struct {\n"
#. .Bl -tag -width "st_value"
#. type: Plain text
-#: build/C/man5/elf.5:1540
+#: build/C/man5/elf.5:1545
msgid ""
"The 32-bit and 64-bit versions have the same members, just in a different "
"order."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1540
+#: build/C/man5/elf.5:1545
#, no-wrap
msgid "I<st_name>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1548
+#: build/C/man5/elf.5:1553
msgid ""
"This member holds an index into the object file's symbol string table, which "
"holds character representations of the symbol names. If the value is "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1548
+#: build/C/man5/elf.5:1553
#, no-wrap
msgid "I<st_value>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1551
+#: build/C/man5/elf.5:1556
msgid "This member gives the value of the associated symbol."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1551
+#: build/C/man5/elf.5:1556
#, no-wrap
msgid "I<st_size>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1556
+#: build/C/man5/elf.5:1561
msgid ""
"Many symbols have associated sizes. This member holds zero if the symbol "
"has no size or an unknown size."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1556
+#: build/C/man5/elf.5:1561
#, no-wrap
msgid "I<st_info>"
msgstr ""
#. .Bl -tag -width "STT_SECTION"
#. type: Plain text
-#: build/C/man5/elf.5:1560
+#: build/C/man5/elf.5:1565
msgid "This member specifies the symbol's type and binding attributes:"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1561
+#: build/C/man5/elf.5:1566
#, no-wrap
msgid "B<STT_NOTYPE>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1564
+#: build/C/man5/elf.5:1569
msgid "The symbol's type is not defined."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1564
+#: build/C/man5/elf.5:1569
#, no-wrap
msgid "B<STT_OBJECT>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1567
+#: build/C/man5/elf.5:1572
msgid "The symbol is associated with a data object."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1567
+#: build/C/man5/elf.5:1572
#, no-wrap
msgid "B<STT_FUNC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1570
+#: build/C/man5/elf.5:1575
msgid "The symbol is associated with a function or other executable code."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1570
+#: build/C/man5/elf.5:1575
#, no-wrap
msgid "B<STT_SECTION>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1577
+#: build/C/man5/elf.5:1582
msgid ""
"The symbol is associated with a section. Symbol table entries of this type "
"exist primarily for relocation and normally have B<STB_LOCAL> bindings."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1577
+#: build/C/man5/elf.5:1582
#, no-wrap
msgid "B<STT_FILE>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1588
+#: build/C/man5/elf.5:1593
msgid ""
"By convention, the symbol's name gives the name of the source file "
"associated with the object file. A file symbol has B<STB_LOCAL> bindings, "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1588
+#: build/C/man5/elf.5:1593
#, no-wrap
msgid "B<STT_LOPROC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1593
+#: build/C/man5/elf.5:1598
msgid ""
"This value up to and including B<STT_HIPROC> is reserved for "
"processor-specific semantics."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1593
+#: build/C/man5/elf.5:1598
#, no-wrap
msgid "B<STT_HIPROC>"
msgstr ""
#. .El
#. .Bl -tag -width "STB_GLOBAL"
#. type: Plain text
-#: build/C/man5/elf.5:1600
+#: build/C/man5/elf.5:1605
msgid ""
"This value down to and including B<STT_LOPROC> is reserved for "
"processor-specific semantics."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1600
+#: build/C/man5/elf.5:1605
#, no-wrap
msgid "B<STB_LOCAL>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1606
+#: build/C/man5/elf.5:1611
msgid ""
"Local symbols are not visible outside the object file containing their "
"definition. Local symbols of the same name may exist in multiple files "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1606
+#: build/C/man5/elf.5:1611
#, no-wrap
msgid "B<STB_GLOBAL>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1612
+#: build/C/man5/elf.5:1617
msgid ""
"Global symbols are visible to all object files being combined. One file's "
"definition of a global symbol will satisfy another file's undefined "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1612
+#: build/C/man5/elf.5:1617
#, no-wrap
msgid "B<STB_WEAK>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1616
+#: build/C/man5/elf.5:1621
msgid ""
"Weak symbols resemble global symbols, but their definitions have lower "
"precedence."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1616
+#: build/C/man5/elf.5:1621
#, no-wrap
msgid "B<STB_LOPROC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1621
+#: build/C/man5/elf.5:1626
msgid ""
"This value up to and including B<STB_HIPROC> is reserved for "
"processor-specific semantics."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1621
+#: build/C/man5/elf.5:1626
#, no-wrap
msgid "B<STB_HIPROC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1626
+#: build/C/man5/elf.5:1631
msgid ""
"This value down to and including B<STB_LOPROC> is reserved for "
"processor-specific semantics."
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1628
+#: build/C/man5/elf.5:1633
msgid "There are macros for packing and unpacking the binding and type fields:"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1635
+#: build/C/man5/elf.5:1640
msgid ""
"B<ELF32_ST_BIND>(info) or B<ELF64_ST_BIND>(info) extract a binding from an "
"I<st_info> value."
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1639
+#: build/C/man5/elf.5:1644
msgid "B<ELF32_ST_TYPE>(info) or B<ELF64_ST_TYPE>(info)"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1643
+#: build/C/man5/elf.5:1648
msgid "extract a type from an I<st_info> value."
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1647
+#: build/C/man5/elf.5:1652
msgid "B<ELF32_ST_INFO>(bind, type) or B<ELF64_ST_INFO>(bind, type)"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1651
+#: build/C/man5/elf.5:1656
msgid "convert a binding and a type into an I<st_info> value."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1653
+#: build/C/man5/elf.5:1658
#, no-wrap
msgid "I<st_other>"
msgstr ""
#. .Bl -tag -width "STV_PROTECTED"
#. type: Plain text
-#: build/C/man5/elf.5:1657
+#: build/C/man5/elf.5:1662
msgid "This member defines the symbol visibility."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1658
+#: build/C/man5/elf.5:1663
#, no-wrap
msgid "B<STV_DEFAULT>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1662
+#: build/C/man5/elf.5:1667
msgid "Default symbol visibility rules."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1662
+#: build/C/man5/elf.5:1667
#, no-wrap
msgid "B<STV_INTERNAL>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1665
+#: build/C/man5/elf.5:1670
msgid "Processor-specific hidden class."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1665
+#: build/C/man5/elf.5:1670
#, no-wrap
msgid "B<STV_HIDDEN>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1668
+#: build/C/man5/elf.5:1673
msgid "Symbol is unavailable in other modules."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1668
+#: build/C/man5/elf.5:1673
#, no-wrap
msgid "B<STV_PROTECTED>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1671
+#: build/C/man5/elf.5:1676
msgid "Not preemptible, not exported."
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1674
+#: build/C/man5/elf.5:1679
msgid "There are macros for extracting the visibility type:"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1678
+#: build/C/man5/elf.5:1683
msgid "B<ELF32_ST_VISIBILITY>(other) or B<ELF64_ST_VISIBILITY>(other)"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1680
+#: build/C/man5/elf.5:1685
#, no-wrap
msgid "I<st_shndx>"
msgstr ""
#. .El
#. type: Plain text
-#: build/C/man5/elf.5:1688
+#: build/C/man5/elf.5:1693
msgid ""
"Every symbol table entry is \"defined\" in relation to some section. This "
"member holds the relevant section header table index."
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1696
+#: build/C/man5/elf.5:1701
msgid ""
"Relocation is the process of connecting symbolic references with symbolic "
"definitions. Relocatable files must have information that describes how to "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1698
+#: build/C/man5/elf.5:1703
msgid "Relocation structures that do not need an addend:"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1705
+#: build/C/man5/elf.5:1710
#, no-wrap
msgid ""
"typedef struct {\n"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1714
+#: build/C/man5/elf.5:1719
#, no-wrap
msgid ""
"typedef struct {\n"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1718
+#: build/C/man5/elf.5:1723
msgid "Relocation structures that need an addend:"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1726
+#: build/C/man5/elf.5:1731
#, no-wrap
msgid ""
"typedef struct {\n"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1736
+#: build/C/man5/elf.5:1741
#, no-wrap
msgid ""
"typedef struct {\n"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1739
+#: build/C/man5/elf.5:1744
#, no-wrap
msgid "I<r_offset>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1747
+#: build/C/man5/elf.5:1752
msgid ""
"This member gives the location at which to apply the relocation action. For "
"a relocatable file, the value is the byte offset from the beginning of the "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1747
+#: build/C/man5/elf.5:1752
#, no-wrap
msgid "I<r_info>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1762
+#: build/C/man5/elf.5:1767
msgid ""
"This member gives both the symbol table index with respect to which the "
"relocation must be made and the type of relocation to apply. Relocation "
-"types are processor specific. When the text refers to a relocation entry's "
+"types are processor-specific. When the text refers to a relocation entry's "
"relocation type or symbol table index, it means the result of applying "
-"B<ELF_[32|64]_R_TYPE> or B<ELF[32|64]_R_SYM>, respectively, to the entry's "
+"B<ELF[32|64]_R_TYPE> or B<ELF[32|64]_R_SYM>, respectively, to the entry's "
"I<r_info> member."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1762
+#: build/C/man5/elf.5:1767
#, no-wrap
msgid "I<r_addend>"
msgstr ""
#. .El
#. type: Plain text
-#: build/C/man5/elf.5:1767
+#: build/C/man5/elf.5:1772
msgid ""
"This member specifies a constant addend used to compute the value to be "
"stored into the relocatable field."
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1772
+#: build/C/man5/elf.5:1777
msgid ""
"The .dynamic section contains a series of structures that hold relevant "
"dynamic linking information. The d_tag member controls the interpretation "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1783
+#: build/C/man5/elf.5:1788
#, no-wrap
msgid ""
"typedef struct {\n"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1796
+#: build/C/man5/elf.5:1801
#, no-wrap
msgid ""
"typedef struct {\n"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1799
+#: build/C/man5/elf.5:1804
#, no-wrap
msgid "I<d_tag>"
msgstr ""
#. .Bl -tag -width "DT_SYMBOLIC"
#. type: Plain text
-#: build/C/man5/elf.5:1803
+#: build/C/man5/elf.5:1808
msgid "This member may have any of the following values:"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1804
+#: build/C/man5/elf.5:1809
#, no-wrap
msgid "B<DT_NULL>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1807
+#: build/C/man5/elf.5:1812
msgid "Marks end of dynamic section"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1807
+#: build/C/man5/elf.5:1812
#, no-wrap
msgid "B<DT_NEEDED>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1810
+#: build/C/man5/elf.5:1815
msgid "String table offset to name of a needed library"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1810
+#: build/C/man5/elf.5:1815
#, no-wrap
msgid "B<DT_PLTRELSZ>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1813
+#: build/C/man5/elf.5:1818
msgid "Size in bytes of PLT relocs"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1813
+#: build/C/man5/elf.5:1818
#, no-wrap
msgid "B<DT_PLTGOT>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1816
+#: build/C/man5/elf.5:1821
msgid "Address of PLT and/or GOT"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1816
+#: build/C/man5/elf.5:1821
#, no-wrap
msgid "B<DT_HASH>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1819
+#: build/C/man5/elf.5:1824
msgid "Address of symbol hash table"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1819
+#: build/C/man5/elf.5:1824
#, no-wrap
msgid "B<DT_STRTAB>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1822
+#: build/C/man5/elf.5:1827
msgid "Address of string table"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1822
+#: build/C/man5/elf.5:1827
#, no-wrap
msgid "B<DT_SYMTAB>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1825
+#: build/C/man5/elf.5:1830
msgid "Address of symbol table"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1825
+#: build/C/man5/elf.5:1830
#, no-wrap
msgid "B<DT_RELA>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1828
+#: build/C/man5/elf.5:1833
msgid "Address of Rela relocs table"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1828
+#: build/C/man5/elf.5:1833
#, no-wrap
msgid "B<DT_RELASZ>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1831
+#: build/C/man5/elf.5:1836
msgid "Size in bytes of Rela table"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1831
+#: build/C/man5/elf.5:1836
#, no-wrap
msgid "B<DT_RELAENT>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1834
+#: build/C/man5/elf.5:1839
msgid "Size in bytes of a Rela table entry"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1834
+#: build/C/man5/elf.5:1839
#, no-wrap
msgid "B<DT_STRSZ>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1837
+#: build/C/man5/elf.5:1842
msgid "Size in bytes of string table"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1837
+#: build/C/man5/elf.5:1842
#, no-wrap
msgid "B<DT_SYMENT>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1840
+#: build/C/man5/elf.5:1845
msgid "Size in bytes of a symbol table entry"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1840
+#: build/C/man5/elf.5:1845
#, no-wrap
msgid "B<DT_INIT>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1843
+#: build/C/man5/elf.5:1848
msgid "Address of the initialization function"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1843
+#: build/C/man5/elf.5:1848
#, no-wrap
msgid "B<DT_FINI>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1846
+#: build/C/man5/elf.5:1851
msgid "Address of the termination function"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1846
+#: build/C/man5/elf.5:1851
#, no-wrap
msgid "B<DT_SONAME>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1849
+#: build/C/man5/elf.5:1854
msgid "String table offset to name of shared object"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1849
+#: build/C/man5/elf.5:1854
#, no-wrap
msgid "B<DT_RPATH>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1852
+#: build/C/man5/elf.5:1857
msgid "String table offset to library search path (deprecated)"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1852
+#: build/C/man5/elf.5:1857
#, no-wrap
msgid "B<DT_SYMBOLIC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1855
+#: build/C/man5/elf.5:1860
msgid "Alert linker to search this shared object before the executable for symbols"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1855
+#: build/C/man5/elf.5:1860
#, no-wrap
msgid "B<DT_REL>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1858
+#: build/C/man5/elf.5:1863
msgid "Address of Rel relocs table"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1858
+#: build/C/man5/elf.5:1863
#, no-wrap
msgid "B<DT_RELSZ>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1861
+#: build/C/man5/elf.5:1866
msgid "Size in bytes of Rel table"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1861
+#: build/C/man5/elf.5:1866
#, no-wrap
msgid "B<DT_RELENT>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1864
+#: build/C/man5/elf.5:1869
msgid "Size in bytes of a Rel table entry"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1864
+#: build/C/man5/elf.5:1869
#, no-wrap
msgid "B<DT_PLTREL>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1867
+#: build/C/man5/elf.5:1872
msgid "Type of reloc the PLT refers (Rela or Rel)"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1867
+#: build/C/man5/elf.5:1872
#, no-wrap
msgid "B<DT_DEBUG>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1870
+#: build/C/man5/elf.5:1875
msgid "Undefined use for debugging"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1870
+#: build/C/man5/elf.5:1875
#, no-wrap
msgid "B<DT_TEXTREL>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1873
+#: build/C/man5/elf.5:1878
msgid "Absence of this indicates no relocs should apply to a nonwritable segment"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1873
+#: build/C/man5/elf.5:1878
#, no-wrap
msgid "B<DT_JMPREL>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1876
+#: build/C/man5/elf.5:1881
msgid "Address of reloc entries solely for the PLT"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1876
+#: build/C/man5/elf.5:1881
#, no-wrap
msgid "B<DT_BIND_NOW>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1880
+#: build/C/man5/elf.5:1885
msgid ""
"Instruct dynamic linker to process all relocs before transferring control to "
"the executable"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1880
+#: build/C/man5/elf.5:1885
#, no-wrap
msgid "B<DT_RUNPATH>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1883
+#: build/C/man5/elf.5:1888
msgid "String table offset to library search path"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1883
+#: build/C/man5/elf.5:1888
#, no-wrap
msgid "B<DT_LOPROC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1886
+#: build/C/man5/elf.5:1891
msgid "Start of processor-specific semantics"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1886
+#: build/C/man5/elf.5:1891
#, no-wrap
msgid "B<DT_HIPROC>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1889
+#: build/C/man5/elf.5:1894
msgid "End of processor-specific semantics"
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1891
+#: build/C/man5/elf.5:1896
#, no-wrap
msgid "I<d_val>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1894
+#: build/C/man5/elf.5:1899
msgid "This member represents integer values with various interpretations."
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1894
+#: build/C/man5/elf.5:1899
#, no-wrap
msgid "I<d_ptr>"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1902
+#: build/C/man5/elf.5:1907
msgid ""
"This member represents program virtual addresses. When interpreting these "
"addresses, the actual address should be computed based on the original file "
msgstr ""
#. type: TP
-#: build/C/man5/elf.5:1902
+#: build/C/man5/elf.5:1907
#, no-wrap
msgid "I<_DYNAMIC>"
msgstr ""
#. .El
#. type: Plain text
-#: build/C/man5/elf.5:1907
+#: build/C/man5/elf.5:1912
msgid ""
"Array containing all the dynamic structures in the .dynamic section. This "
"is automatically populated by the linker."
#. although not all supported platforms use it as the native
#. binary file format.
#. type: Plain text
-#: build/C/man5/elf.5:1916
+#: build/C/man5/elf.5:1921
msgid "ELF first appeared in System V. The ELF format is an adopted standard."
msgstr ""
#. .Nm elf
#. man page.
#. type: Plain text
-#: build/C/man5/elf.5:1934
+#: build/C/man5/elf.5:1939
msgid ""
"The extensions for I<e_phnum>, I<e_shnum> and I<e_strndx> respectively are "
"Linux extensions. Sun, BSD and AMD64 also support them; for further "
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1941
+#: build/C/man5/elf.5:1946
msgid "B<as>(1), B<gdb>(1), B<ld>(1), B<objdump>(1), B<execve>(2), B<core>(5)"
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1944
+#: build/C/man5/elf.5:1949
msgid "Hewlett-Packard, I<Elf-64 Object File Format>."
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1947
+#: build/C/man5/elf.5:1952
msgid "Santa Cruz Operation, I<System V Application Binary Interface>."
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1951
+#: build/C/man5/elf.5:1956
msgid ""
"UNIX System Laboratories, \"Object Files\", I<Executable and Linking Format "
"(ELF)>."
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1954
+#: build/C/man5/elf.5:1959
msgid "Sun Microsystems, I<Linker and Libraries Guide>."
msgstr ""
#. type: Plain text
-#: build/C/man5/elf.5:1957
+#: build/C/man5/elf.5:1962
msgid ""
"AMD64 ABI Draft, I<System V Application Binary Interface AMD64 Architecture "
"Processor Supplement>."
msgstr ""
#. type: TH
-#: build/C/man3/end.3:25
+#: build/C/man3/end.3:26
#, no-wrap
msgid "END"
msgstr ""
#. type: TH
-#: build/C/man3/end.3:25
+#: build/C/man3/end.3:26
#, no-wrap
msgid "2008-07-17"
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:28
+#: build/C/man3/end.3:29
msgid "etext, edata, end - end of program segments"
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:33
+#: build/C/man3/end.3:34
#, no-wrap
msgid ""
"B<extern>I< etext>B<;>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:37
+#: build/C/man3/end.3:38
msgid "The addresses of these symbols indicate the end of various program segments:"
msgstr ""
#. type: TP
-#: build/C/man3/end.3:37
+#: build/C/man3/end.3:38
#, no-wrap
msgid "I<etext>"
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:41
+#: build/C/man3/end.3:42
msgid ""
"This is the first address past the end of the text segment (the program "
"code)."
msgstr ""
#. type: TP
-#: build/C/man3/end.3:41
+#: build/C/man3/end.3:42
#, no-wrap
msgid "I<edata>"
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:45
+#: build/C/man3/end.3:46
msgid "This is the first address past the end of the initialized data segment."
msgstr ""
#. type: TP
-#: build/C/man3/end.3:45
+#: build/C/man3/end.3:46
#, no-wrap
msgid "I<end>"
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:49
+#: build/C/man3/end.3:50
msgid ""
"This is the first address past the end of the uninitialized data segment "
"(also known as the BSS segment)."
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:52
+#: build/C/man3/end.3:53
msgid ""
"Although these symbols have long been provided on most UNIX systems, they "
"are not standardized; use with caution."
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:55
+#: build/C/man3/end.3:56
msgid ""
"The program must explicitly declare these symbols; they are not defined in "
"any header file."
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:63
+#: build/C/man3/end.3:64
msgid ""
"On some systems the names of these symbols are preceded by underscores, "
"thus: I<_etext>, I<_edata>, and I<_end>. These symbols are also defined for "
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:75
+#: build/C/man3/end.3:76
msgid ""
"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 "
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:77
+#: build/C/man3/end.3:78
msgid "When run, the program below produces output such as the following:"
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:85
+#: build/C/man3/end.3:86
#, no-wrap
msgid ""
"$B< ./a.out>\n"
msgstr ""
#. type: SS
-#: build/C/man3/end.3:87
+#: build/C/man3/end.3:88 build/C/man1/memusage.1:234
#, no-wrap
msgid "Program source"
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:92
+#: build/C/man3/end.3:93 build/C/man1/memusage.1:238
#, no-wrap
msgid ""
"#include E<lt>stdio.hE<gt>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:95
+#: build/C/man3/end.3:96
#, no-wrap
msgid ""
"extern char etext, edata, end; /* The symbols must have some type,\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:103
+#: build/C/man3/end.3:104
#, no-wrap
msgid ""
"int\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/end.3:112
+#: build/C/man3/end.3:113
msgid "B<objdump>(1), B<readelf>(1), B<sbrk>(2), B<elf>(5)"
msgstr ""
#. type: TH
-#: build/C/man8/ld.so.8:2
+#: build/C/man8/ld.so.8:5
#, no-wrap
msgid "LD.SO"
msgstr ""
#. type: TH
-#: build/C/man8/ld.so.8:2
+#: build/C/man8/ld.so.8:5
#, no-wrap
-msgid "2009-01-12"
+msgid "2014-12-31"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:5
+#: build/C/man8/ld.so.8:8
msgid "ld.so, ld-linux.so* - dynamic linker/loader"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:12
+#: build/C/man8/ld.so.8:15
msgid ""
"The dynamic linker can be run either indirectly by running some dynamically "
"linked program or library (in which case no command-line options to the "
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:15
+#: build/C/man8/ld.so.8:18
msgid "I</lib/ld-linux.so.*> [OPTIONS] [PROGRAM [ARGUMENTS]]"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:22
+#: build/C/man8/ld.so.8:25
msgid ""
"The programs B<ld.so> and B<ld-linux.so*> find and load the shared libraries "
"needed by a program, prepare the program to run, and then run it."
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:29
+#: build/C/man8/ld.so.8:32
msgid ""
"Linux binaries require dynamic linking (linking at run time) unless the "
"B<-static> option was given to B<ld>(1) during compilation."
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:42
+#: build/C/man8/ld.so.8:45
msgid ""
"The program B<ld.so> handles a.out binaries, a format used long ago; "
"B<ld-linux.so*> handles ELF (I</lib/ld-linux.so.1> for libc5, "
"I</lib/ld-linux.so.2> for glibc2), which everybody has been using for years "
-"now. Otherwise both have the same behavior, and use the same support files "
-"and programs B<ldd>(1), B<ldconfig>(8) and I</etc/ld.so.conf>."
+"now. Otherwise, both have the same behavior, and use the same support files "
+"and programs B<ldd>(1), B<ldconfig>(8), and I</etc/ld.so.conf>."
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:45
+#: build/C/man8/ld.so.8:53
msgid ""
-"The shared libraries needed by the program are searched for in the following "
-"order:"
+"When resolving library dependencies, the dynamic linker first inspects each "
+"dependency string to see if it contains a slash (this can occur if a library "
+"pathname containing slashes was specified at link time). If a slash is "
+"found, then the dependency string is interpreted as a (relative or absolute) "
+"pathname, and the library is loaded using that pathname."
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:50
+#: build/C/man8/ld.so.8:56
+msgid ""
+"If a library dependency does not contain a slash, then it is searched for in "
+"the following order:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:61
msgid ""
"(ELF only) Using the directories specified in the DT_RPATH dynamic section "
"attribute of the binary if present and DT_RUNPATH attribute does not exist. "
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:55
+#: build/C/man8/ld.so.8:66
msgid ""
"Using the environment variable B<LD_LIBRARY_PATH>. Except if the executable "
"is a set-user-ID/set-group-ID binary, in which case it is ignored."
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:59
+#: build/C/man8/ld.so.8:70
msgid ""
"(ELF only) Using the directories specified in the DT_RUNPATH dynamic section "
"attribute of the binary if present."
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:67
+#: build/C/man8/ld.so.8:80
msgid ""
-"From the cache file I</etc/ld.so.cache> which contains a compiled list of "
+"From the cache file I</etc/ld.so.cache>, which contains a compiled list of "
"candidate libraries previously found in the augmented library path. If, "
"however, the binary was linked with the B<-z nodeflib> linker option, "
-"libraries in the default library paths are skipped."
+"libraries in the default library paths are skipped. Libraries installed in "
+"hardware capability directories (see below) are preferred to other "
+"libraries."
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:75
+#: build/C/man8/ld.so.8:88
msgid ""
"In the default path I</lib>, and then I</usr/lib>. If the binary was linked "
"with the B<-z nodeflib> linker option, this step is skipped."
msgstr ""
#. type: SS
-#: build/C/man8/ld.so.8:75
+#: build/C/man8/ld.so.8:88
#, no-wrap
-msgid "$ORIGIN and rpath"
+msgid "Rpath token expansion"
msgstr ""
-#. ld.so also understands $LIB, with the same meaning as $ORIGIN/lib,
-#. it appears.
-#
-#. There is also $PLATFORM. This is a kind of wildcard
-#. of directories related at AT_HWCAP. To get an idea of the
-#. places that $PLATFORM would match, look at the output of the
-#. following:
+#. type: Plain text
+#: build/C/man8/ld.so.8:92
+msgid ""
+"B<ld.so> understands certain strings in an rpath specification (DT_RPATH or "
+"DT_RUNPATH); those strings are substituted as follows"
+msgstr ""
+
+#. type: TP
+#: build/C/man8/ld.so.8:92
+#, no-wrap
+msgid "I<$ORIGIN> (or equivalently I<${ORIGIN}>)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:99
+msgid ""
+"This expands to the directory containing the program or shared library. "
+"Thus, an application located in I<somedir/app> could be compiled with"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:101
+#, no-wrap
+msgid " gcc -Wl,-rpath,\\(aq$ORIGIN/../lib\\(aq\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:111
+msgid ""
+"so that it finds an associated shared library in I<somedir/lib> no matter "
+"where I<somedir> is located in the directory hierarchy. This facilitates "
+"the creation of \"turn-key\" applications that do not need to be installed "
+"into special directories, but can instead be unpacked into any directory and "
+"still find their own shared libraries."
+msgstr ""
+
+#. type: TP
+#: build/C/man8/ld.so.8:111
+#, no-wrap
+msgid "I<$LIB> (or equivalently I<${LIB}>)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:123
+msgid ""
+"This expands to I<lib> or I<lib64> depending on the architecture (e.g., on "
+"x86-64, it expands to I<lib64> and on x86-32, it expands to I<lib>)."
+msgstr ""
+
+#. type: TP
+#: build/C/man8/ld.so.8:123
+#, no-wrap
+msgid "I<$PLATFORM> (or equivalently I<${PLATFORM}>)"
+msgstr ""
+
+#. To get an idea of the places that $PLATFORM would match,
+#. look at the output of the following:
#
-#. mkdir /tmp/d
-#. LD_LIBRARY_PATH=/tmp/d strace -e open /bin/date 2>&1 | grep /tmp/d
+#. mkdir /tmp/d
+#. LD_LIBRARY_PATH=/tmp/d strace -e open /bin/date 2>&1 | grep /tmp/d
#
#. ld.so lets names be abbreviated, so $O will work for $ORIGIN;
#. Don't do this!!
#. type: Plain text
-#: build/C/man8/ld.so.8:110
-msgid ""
-"B<ld.so> understands the string I<$ORIGIN> (or equivalently I<${ORIGIN}>) "
-"in an rpath specification (DT_RPATH or DT_RUNPATH) to mean the directory "
-"containing the application executable. Thus, an application located in "
-"I<somedir/app> could be compiled with I<gcc "
-"-Wl,-rpath,\\(aq$ORIGIN/../lib\\(aq> so that it finds an associated shared "
-"library in I<somedir/lib> no matter where I<somedir> is located in the "
-"directory hierarchy. This facilitates the creation of \"turn-key\" "
-"applications that do not need to be installed into special directories, but "
-"can instead be unpacked into any directory and still find their own shared "
-"libraries."
+#: build/C/man8/ld.so.8:141
+msgid ""
+"This expands to a string corresponding to the processor type of the host "
+"system (e.g., \"x86_64\"). On some architectures, the Linux kernel doesn't "
+"provide a platform string to the dynamic linker. The value of this string "
+"is taken from the B<AT_PLATFORM> value in the auxiliary vector (see "
+"B<getauxval>(3))."
msgstr ""
#. type: SH
-#: build/C/man8/ld.so.8:110 build/C/man8/ldconfig.8:100 build/C/man1/ldd.1:19
+#: build/C/man8/ld.so.8:141 build/C/man8/ldconfig.8:100 build/C/man1/ldd.1:51 build/C/man1/memusage.1:135 build/C/man1/memusagestat.1:47 build/C/man1/mtrace.1:51 build/C/man1/pldd.1:40 build/C/man1/sprof.1:46
#, no-wrap
msgid "OPTIONS"
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:111
+#: build/C/man8/ld.so.8:142
#, no-wrap
msgid "B<--list>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:114
+#: build/C/man8/ld.so.8:145
msgid "List all dependencies and how they are resolved."
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:114
+#: build/C/man8/ld.so.8:145
#, no-wrap
msgid "B<--verify>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:118
+#: build/C/man8/ld.so.8:149
msgid ""
"Verify that program is dynamically linked and this dynamic linker can handle "
"it."
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:118
+#: build/C/man8/ld.so.8:149
+#, no-wrap
+msgid "B<--inhibit-cache>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:152
+msgid "Do not use /etc/ld.so.cache."
+msgstr ""
+
+#. type: TP
+#: build/C/man8/ld.so.8:152
#, no-wrap
msgid "B<--library-path PATH>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:123
-msgid "Override B<LD_LIBRARY_PATH> environment variable setting (see below)."
+#: build/C/man8/ld.so.8:157
+msgid ""
+"Use PATH instead of B<LD_LIBRARY_PATH> environment variable setting (see "
+"below)."
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:123
+#: build/C/man8/ld.so.8:157
#, no-wrap
msgid "B<--inhibit-rpath LIST>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:129
+#: build/C/man8/ld.so.8:163
msgid ""
"Ignore RPATH and RUNPATH information in object names in LIST. This option "
"is ignored if B<ld.so> is set-user-ID or set-group-ID."
msgstr ""
-#. type: SH
-#: build/C/man8/ld.so.8:129
+#. type: TP
+#: build/C/man8/ld.so.8:163
#, no-wrap
-msgid "ENVIRONMENT"
+msgid "B<--audit LIST>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:131
-msgid "There are four important environment variables."
+#: build/C/man8/ld.so.8:166
+msgid "Use objects named in LIST as auditors."
msgstr ""
-#. type: TP
-#: build/C/man8/ld.so.8:131
+#. type: SH
+#: build/C/man8/ld.so.8:166
#, no-wrap
-msgid "B<LD_BIND_NOW>"
+msgid "HARDWARE CAPABILITIES"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:139
+#: build/C/man8/ld.so.8:177
msgid ""
-"(libc5; glibc since 2.1.1) If set to a nonempty string, causes the dynamic "
-"linker to resolve all symbols at program startup instead of deferring "
-"function call resolution to the point when they are first referenced. This "
-"is useful when using a debugger."
+"Some libraries are compiled using hardware-specific instructions which do "
+"not exist on every CPU. Such libraries should be installed in directories "
+"whose names define the required hardware capabilities, such as "
+"I</usr/lib/sse2/>. The dynamic linker checks these directories against the "
+"hardware of the machine and selects the most suitable version of a given "
+"library. Hardware capability directories can be cascaded to combine CPU "
+"features. The list of supported hardware capability names depends on the "
+"CPU. The following names are currently recognized:"
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:139
+#: build/C/man8/ld.so.8:177
#, no-wrap
-msgid "B<LD_LIBRARY_PATH>"
+msgid "B<Alpha>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:146
-msgid ""
-"A colon-separated list of directories in which to search for ELF libraries "
-"at execution-time. Similar to the B<PATH> environment variable."
+#: build/C/man8/ld.so.8:180
+msgid "ev4, ev5, ev56, ev6, ev67"
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:146
+#: build/C/man8/ld.so.8:180
#, no-wrap
-msgid "B<LD_PRELOAD>"
+msgid "B<MIPS>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:154
-msgid ""
-"A whitespace-separated list of additional, user-specified, ELF shared "
-"libraries to be loaded before all others. This can be used to selectively "
-"override functions in other shared libraries. For set-user-ID/set-group-ID "
-"ELF binaries, only libraries in the standard search directories that are "
-"also set-user-ID will be loaded."
+#: build/C/man8/ld.so.8:183
+msgid "loongson2e, loongson2f, octeon, octeon2"
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:154
+#: build/C/man8/ld.so.8:183
#, no-wrap
-msgid "B<LD_TRACE_LOADED_OBJECTS>"
+msgid "B<PowerPC>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:161
+#: build/C/man8/ld.so.8:188
msgid ""
-"(ELF only) If set to a nonempty string, causes the program to list its "
-"dynamic library dependencies, as if run by B<ldd>(1), instead of running "
-"normally."
+"4xxmac, altivec, arch_2_05, arch_2_06, booke, cellbe, dfp, efpdouble, "
+"efpsingle, fpu, ic_snoop, mmu, notb, pa6t, power4, power5, power5+, power6x, "
+"ppc32, ppc601, ppc64, smt, spe, ucache, vsx"
+msgstr ""
+
+#. type: TP
+#: build/C/man8/ld.so.8:188
+#, no-wrap
+msgid "B<SPARC>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:164
-msgid ""
-"Then there are lots of more or less obscure variables, many obsolete or only "
-"for internal use."
+#: build/C/man8/ld.so.8:191
+msgid "flush, muldiv, stbar, swap, ultra3, v9, v9v, v9v2"
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:164
+#: build/C/man8/ld.so.8:191
#, no-wrap
-msgid "B<LD_AOUT_LIBRARY_PATH>"
+msgid "B<s390>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:172
+#: build/C/man8/ld.so.8:195
msgid ""
-"(libc5) Version of B<LD_LIBRARY_PATH> for a.out binaries only. Old "
-"versions of ld-linux.so.1 also supported B<LD_ELF_LIBRARY_PATH>."
+"dfp, eimm, esan3, etf3enh, g5, highgprs, hpage, ldisp, msa, stfle, z900, "
+"z990, z9-109, z10, zarch"
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:172
+#: build/C/man8/ld.so.8:195
#, no-wrap
-msgid "B<LD_AOUT_PRELOAD>"
+msgid "B<x86 (32-bit only)>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:180
+#: build/C/man8/ld.so.8:199
msgid ""
-"(libc5) Version of B<LD_PRELOAD> for a.out binaries only. Old versions of "
-"ld-linux.so.1 also supported B<LD_ELF_PRELOAD>."
+"acpi, apic, clflush, cmov, cx8, dts, fxsr, ht, i386, i486, i586, i686, mca, "
+"mmx, mtrr, pat, pbe, pge, pn, pse36, sep, ss, sse, sse2, tm"
msgstr ""
-#. type: TP
-#: build/C/man8/ld.so.8:180
+#. type: SH
+#: build/C/man8/ld.so.8:199
#, no-wrap
-msgid "B<LD_AUDIT>"
+msgid "ENVIRONMENT"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:190
-msgid ""
+#: build/C/man8/ld.so.8:201
+msgid "Among the more important environment variables are the following:"
+msgstr ""
+
+#. type: TP
+#: build/C/man8/ld.so.8:201
+#, no-wrap
+msgid "B<LD_ASSUME_KERNEL>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:214
+msgid ""
+"(glibc since 2.2.3) Each shared library can inform the dynamic linker of "
+"the minimum kernel ABI version that it requires. (This requirement is "
+"encoded in an ELF note section that is viewable via I<readelf\\ -n> as a "
+"section labeled B<NT_GNU_ABI_TAG>.) At run time, the dynamic linker "
+"determines the ABI version of the running kernel and will reject loading "
+"shared libraries that specify minimum ABI versions that exceed that ABI "
+"version."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:223
+msgid ""
+"B<LD_ASSUME_KERNEL> can be used to cause the dynamic linker to assume that "
+"it is running on a system with a different kernel ABI version. For example, "
+"the following command line causes the dynamic linker to assume it is running "
+"on Linux 2.2.5 when loading the shared libraries required by I<myprog>:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:227
+#, no-wrap
+msgid "$ B<LD_ASSUME_KERNEL=2.2.5 ./myprog>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:244
+msgid ""
+"On systems that provide multiple versions of a shared library (in different "
+"directories in the search path) that have different minimum kernel ABI "
+"version requirements, B<LD_ASSUME_KERNEL> can be used to select the version "
+"of the library that is used (dependent on the directory search order). "
+"Historically, the most common use of the B<LD_ASSUME_KERNEL> feature was to "
+"manually select the older LinuxThreads POSIX threads implementation on "
+"systems that provided both LinuxThreads and NPTL (which latter was typically "
+"the default on such systems); see B<pthreads>(7)."
+msgstr ""
+
+#. type: TP
+#: build/C/man8/ld.so.8:244 build/C/man8/ld.so.8:325
+#, no-wrap
+msgid "B<LD_BIND_NOT>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:249
+msgid ""
+"(glibc since 2.2) Don't update the Global Offset Table (GOT) and Procedure "
+"Linkage Table (PLT) when resolving a symbol."
+msgstr ""
+
+#. type: TP
+#: build/C/man8/ld.so.8:249
+#, no-wrap
+msgid "B<LD_BIND_NOW>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:257
+msgid ""
+"(libc5; glibc since 2.1.1) If set to a nonempty string, causes the dynamic "
+"linker to resolve all symbols at program startup instead of deferring "
+"function call resolution to the point when they are first referenced. This "
+"is useful when using a debugger."
+msgstr ""
+
+#. type: TP
+#: build/C/man8/ld.so.8:257
+#, no-wrap
+msgid "B<LD_LIBRARY_PATH>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:265
+msgid ""
+"A colon-separated list of directories in which to search for ELF libraries "
+"at execution-time. Similar to the B<PATH> environment variable. Ignored in "
+"set-user-ID and set-group-ID programs."
+msgstr ""
+
+#. type: TP
+#: build/C/man8/ld.so.8:265
+#, no-wrap
+msgid "B<LD_PRELOAD>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:276
+msgid ""
+"A list of additional, user-specified, ELF shared libraries to be loaded "
+"before all others. The items of the list can be separated by spaces or "
+"colons. This can be used to selectively override functions in other shared "
+"libraries. The libraries are searched for using the rules given under "
+"DESCRIPTION. For set-user-ID/set-group-ID ELF binaries, preload pathnames "
+"containing slashes are ignored, and libraries in the standard search "
+"directories are loaded only if the set-user-ID permission bit is enabled on "
+"the library file."
+msgstr ""
+
+#. type: TP
+#: build/C/man8/ld.so.8:276
+#, no-wrap
+msgid "B<LD_TRACE_LOADED_OBJECTS>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:283
+msgid ""
+"(ELF only) If set to a nonempty string, causes the program to list its "
+"dynamic library dependencies, as if run by B<ldd>(1), instead of running "
+"normally."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:286
+msgid ""
+"Then there are lots of more or less obscure variables, many obsolete or only "
+"for internal use."
+msgstr ""
+
+#. type: TP
+#: build/C/man8/ld.so.8:286
+#, no-wrap
+msgid "B<LD_AOUT_LIBRARY_PATH>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:294
+msgid ""
+"(libc5) Version of B<LD_LIBRARY_PATH> for a.out binaries only. Old "
+"versions of ld-linux.so.1 also supported B<LD_ELF_LIBRARY_PATH>."
+msgstr ""
+
+#. type: TP
+#: build/C/man8/ld.so.8:294
+#, no-wrap
+msgid "B<LD_AOUT_PRELOAD>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:302
+msgid ""
+"(libc5) Version of B<LD_PRELOAD> for a.out binaries only. Old versions of "
+"ld-linux.so.1 also supported B<LD_ELF_PRELOAD>."
+msgstr ""
+
+#. type: TP
+#: build/C/man8/ld.so.8:302
+#, no-wrap
+msgid "B<LD_AUDIT>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/ld.so.8:312
+msgid ""
"(glibc since 2.4) A colon-separated list of user-specified, ELF shared "
"objects to be loaded before all others in a separate linker namespace (i.e., "
"one that does not intrude upon the normal symbol bindings that would occur "
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:203
+#: build/C/man8/ld.so.8:325
msgid ""
"The dynamic linker will notify the audit libraries at so-called auditing "
"checkpoints\\(emfor example, loading a new library, resolving a symbol, or "
"Linker Auditing Interface>."
msgstr ""
-#. type: TP
-#: build/C/man8/ld.so.8:203
-#, no-wrap
-msgid "B<LD_BIND_NOT>"
-msgstr ""
-
#. type: Plain text
-#: build/C/man8/ld.so.8:208
+#: build/C/man8/ld.so.8:330
msgid ""
"(glibc since 2.1.95) Do not update the GOT (global offset table) and PLT "
"(procedure linkage table) after resolving a symbol."
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:208
+#: build/C/man8/ld.so.8:330
#, no-wrap
msgid "B<LD_DEBUG>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:221
+#: build/C/man8/ld.so.8:343
msgid ""
"(glibc since 2.1) Output verbose debugging information about the dynamic "
"linker. If set to B<all> prints all debugging information it has, if set to "
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:221
+#: build/C/man8/ld.so.8:343
#, no-wrap
msgid "B<LD_DEBUG_OUTPUT>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:229
+#: build/C/man8/ld.so.8:352
msgid ""
-"(glibc since 2.1) File where B<LD_DEBUG> output should be fed into, default "
-"is standard output. B<LD_DEBUG_OUTPUT> is ignored for "
+"(glibc since 2.1) File in which B<LD_DEBUG> output should be written. The "
+"default is standard error. B<LD_DEBUG_OUTPUT> is ignored for "
"set-user-ID/set-group-ID binaries."
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:229
+#: build/C/man8/ld.so.8:352
#, no-wrap
msgid "B<LD_DYNAMIC_WEAK>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:236
+#: build/C/man8/ld.so.8:359
msgid ""
"(glibc since 2.1.91) Allow weak symbols to be overridden (reverting to old "
"glibc behavior). For security reasons, since glibc 2.3.4, "
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:236
+#: build/C/man8/ld.so.8:359
#, no-wrap
msgid "B<LD_HWCAP_MASK>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:240
+#: build/C/man8/ld.so.8:363
msgid "(glibc since 2.1) Mask for hardware capabilities."
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:240
+#: build/C/man8/ld.so.8:363
#, no-wrap
msgid "B<LD_KEEPDIR>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:245
+#: build/C/man8/ld.so.8:368
msgid ""
"(a.out only)(libc5) Don't ignore the directory in the names of a.out "
"libraries to be loaded. Use of this option is strongly discouraged."
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:245
+#: build/C/man8/ld.so.8:368
#, no-wrap
msgid "B<LD_NOWARN>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:250
+#: build/C/man8/ld.so.8:373
msgid ""
"(a.out only)(libc5) Suppress warnings about a.out libraries with "
"incompatible minor version numbers."
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:250
+#: build/C/man8/ld.so.8:373
#, no-wrap
msgid "B<LD_ORIGIN_PATH>"
msgstr ""
#. Only used if $ORIGIN can't be determined by normal means
#. (from the origin path saved at load time, or from /proc/self/exe)?
#. type: Plain text
-#: build/C/man8/ld.so.8:259
+#: build/C/man8/ld.so.8:382
msgid ""
"(glibc since 2.1) Path where the binary is found (for non-set-user-ID "
"programs). For security reasons, since glibc 2.4, B<LD_ORIGIN_PATH> is "
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:259
+#: build/C/man8/ld.so.8:382
#, no-wrap
msgid "B<LD_POINTER_GUARD>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:271
+#: build/C/man8/ld.so.8:394
msgid ""
"(glibc since 2.4) Set to 0 to disable pointer guarding. Any other value "
"enables pointer guarding, which is also the default. Pointer guarding is a "
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:271
+#: build/C/man8/ld.so.8:394
#, no-wrap
msgid "B<LD_PROFILE>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:278
+#: build/C/man8/ld.so.8:401
msgid ""
-"(glibc since 2.1) Shared object to be profiled, specified either as a "
-"pathname or a soname. Profiling output is written to the file whose name "
-"is: \"I<$LD_PROFILE_OUTPUT>/I<$LD_PROFILE>.profile\"."
+"(glibc since 2.1) The name of a (single) shared object to be profiled, "
+"specified either as a pathname or a soname. Profiling output is appended to "
+"the file whose name is: \"I<$LD_PROFILE_OUTPUT>/I<$LD_PROFILE>.profile\"."
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:278
+#: build/C/man8/ld.so.8:401
#, no-wrap
msgid "B<LD_PROFILE_OUTPUT>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:291
+#: build/C/man8/ld.so.8:414
msgid ""
"(glibc since 2.1) Directory where B<LD_PROFILE> output should be written. "
"If this variable is not defined, or is defined as an empty string, then the "
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:291
+#: build/C/man8/ld.so.8:414
#, no-wrap
msgid "B<LD_SHOW_AUXV>"
msgstr ""
#. FIXME
#. Document LD_TRACE_PRELINKING (e.g.: LD_TRACE_PRELINKING=libx1.so ./prog)
-#. Since glibc 2.3
-#. Also enables DL_DEBUG_PRELINK
+#. Available since glibc 2.3
+#. Also enables DL_DEBUG_PRELINK
#. type: Plain text
-#: build/C/man8/ld.so.8:302
+#: build/C/man8/ld.so.8:425
msgid ""
"(glibc since 2.1) Show auxiliary array passed up from the kernel. For "
"security reasons, since glibc 2.3.5, B<LD_SHOW_AUXV> is ignored for "
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:302
+#: build/C/man8/ld.so.8:425
#, no-wrap
msgid "B<LD_USE_LOAD_BIAS>"
msgstr ""
#. Subject: [PATCH] Support LD_USE_LOAD_BIAS
#. Jakub Jelinek
#. type: Plain text
-#: build/C/man8/ld.so.8:321
+#: build/C/man8/ld.so.8:444
msgid ""
"By default (i.e., if this variable is not defined) executables and "
"prelinked shared objects will honor base addresses of their dependent "
"libraries and (nonprelinked) position-independent executables (PIEs) and "
"other shared objects will not honor them. If B<LD_USE_LOAD_BIAS> is defined "
-"wit the value, both executables and PIEs will honor the base addresses. If "
-"B<LD_USE_LOAD_BIAS> is defined with the value 0, neither executables nor "
+"with the value 1, both executables and PIEs will honor the base addresses. "
+"If B<LD_USE_LOAD_BIAS> is defined with the value 0, neither executables nor "
"PIEs will honor the base addresses. This variable is ignored by set-user-ID "
"and set-group-ID programs."
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:321
+#: build/C/man8/ld.so.8:444
#, no-wrap
msgid "B<LD_VERBOSE>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:333
+#: build/C/man8/ld.so.8:452
msgid ""
"(glibc since 2.1) If set to a nonempty string, output symbol versioning "
-"information about the program if querying information about the program "
-"(i.e., either B<LD_TRACE_LOADED_OBJECTS> has been set, or B<--list> or "
-"B<--verify> options have been given to the dynamic linker)."
+"information about the program if the B<LD_TRACE_LOADED_OBJECTS> environment "
+"variable has been set."
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:333
+#: build/C/man8/ld.so.8:452
#, no-wrap
msgid "B<LD_WARN>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:337
+#: build/C/man8/ld.so.8:456
msgid ""
"(ELF only)(glibc since 2.1.3) If set to a nonempty string, warn about "
"unresolved symbols."
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:337
+#: build/C/man8/ld.so.8:456
#, no-wrap
msgid "B<LDD_ARGV0>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:344
+#: build/C/man8/ld.so.8:463
msgid "(libc5) I<argv>[0] to be used by B<ldd>(1) when none is present."
msgstr ""
#. type: SH
-#: build/C/man8/ld.so.8:344 build/C/man8/ldconfig.8:156
+#: build/C/man8/ld.so.8:463 build/C/man8/ldconfig.8:156
#, no-wrap
msgid "FILES"
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:346 build/C/man8/ldconfig.8:158
+#: build/C/man8/ld.so.8:465 build/C/man8/ldconfig.8:158
#, no-wrap
msgid "I</lib/ld.so>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:349
+#: build/C/man8/ld.so.8:468
msgid "a.out dynamic linker/loader"
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:349
+#: build/C/man8/ld.so.8:468
#, no-wrap
msgid "I</lib/ld-linux.so.>{I<1>,I<2>}"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:352
+#: build/C/man8/ld.so.8:471
msgid "ELF dynamic linker/loader"
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:352 build/C/man8/ldconfig.8:165
+#: build/C/man8/ld.so.8:471 build/C/man8/ldconfig.8:165
#, no-wrap
msgid "I</etc/ld.so.cache>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:356
+#: build/C/man8/ld.so.8:475
msgid ""
"File containing a compiled list of directories in which to search for "
"libraries and an ordered list of candidate libraries."
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:356
+#: build/C/man8/ld.so.8:475
#, no-wrap
msgid "I</etc/ld.so.preload>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:360
+#: build/C/man8/ld.so.8:479
msgid ""
-"File containing a whitespace separated list of ELF shared libraries to be "
+"File containing a whitespace-separated list of ELF shared libraries to be "
"loaded before the program."
msgstr ""
#. type: TP
-#: build/C/man8/ld.so.8:360
+#: build/C/man8/ld.so.8:479
#, no-wrap
msgid "B<lib*.so*>"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:363
+#: build/C/man8/ld.so.8:482
msgid "shared libraries"
msgstr ""
#. type: Plain text
-#: build/C/man8/ld.so.8:370
+#: build/C/man8/ld.so.8:489
msgid ""
"The B<ld.so> functionality is available for executables compiled using libc "
"version 4.4.3 or greater. ELF functionality is available since Linux 1.1.52 "
#
#. In the above, (libc5) stands for David Engel's ld.so/ld-linux.so.
#. type: Plain text
-#: build/C/man8/ld.so.8:380
-msgid "B<ldd>(1), B<rtld-audit>(7), B<ldconfig>(8)"
+#: build/C/man8/ld.so.8:505
+msgid ""
+"B<ld>(1), B<ldd>(1), B<pldd>(1), B<sprof>(1), B<dlopen>(3), B<getauxval>(3), "
+"B<rtld-audit>(7), B<ldconfig>(8), B<sln>(8)"
msgstr ""
#. type: TH
#. type: TH
#: build/C/man8/ldconfig.8:22
#, no-wrap
-msgid "2009-04-15"
+msgid "2012-05-10"
msgstr ""
#. type: Plain text
#: build/C/man8/ldconfig.8:25
-msgid "/sbin/ldconfig - configure dynamic linker run-time bindings"
+msgid "ldconfig - configure dynamic linker run-time bindings"
msgstr ""
#. type: Plain text
msgid ""
"Some existing libs do not contain enough information to allow the deduction "
"of their type. Therefore, the I</etc/ld.so.conf> file format allows the "
-"specification of an expected type. This is I<only> used for those ELF libs "
+"specification of an expected type. This is used I<only> for those ELF libs "
"which we can not work out. The format is \"dirname=TYPE\", where TYPE can "
"be libc4, libc5, or libc6. (This syntax also works on the command line.) "
"Spaces are I<not> allowed. Also see the B<-p> option. B<ldconfig> should "
msgstr ""
#. type: TH
-#: build/C/man1/ldd.1:10
+#: build/C/man1/ldd.1:14
#, no-wrap
msgid "LDD"
msgstr ""
-#. type: TH
-#: build/C/man1/ldd.1:10
-#, no-wrap
-msgid "2000-10-30"
-msgstr ""
-
#. type: Plain text
-#: build/C/man1/ldd.1:13
+#: build/C/man1/ldd.1:17
msgid "ldd - print shared library dependencies"
msgstr ""
#. type: Plain text
-#: build/C/man1/ldd.1:15
-msgid "B<ldd> [OPTION]... FILE..."
+#: build/C/man1/ldd.1:19
+msgid "B<ldd> [I<option>]... I<file>..."
msgstr ""
#. type: Plain text
-#: build/C/man1/ldd.1:19
+#: build/C/man1/ldd.1:23
msgid ""
"B<ldd> prints the shared libraries required by each program or shared "
"library specified on the command line."
msgstr ""
+#. type: SS
+#: build/C/man1/ldd.1:23
+#, no-wrap
+msgid "Security"
+msgstr ""
+
+#. Mainline glibc's ldd allows this possibility (the line
+#. try_trace "$file"
+#. in glibc 2.15, for example), but many distro versions of
+#. ldd seem to remove that code path from the script.
+#. type: Plain text
+#: build/C/man1/ldd.1:49
+msgid ""
+"In the usual case, B<ldd> invokes the standard dynamic linker (see "
+"B<ld.so>(8)) with the B<LD_TRACE_LOADED_OBJECTS> environment variable set "
+"to 1, which causes the linker to display the library dependencies. Be "
+"aware, however, that in some circumstances, some versions of B<ldd> may "
+"attempt to obtain the dependency information by directly executing the "
+"program. Thus, you should I<never> employ B<ldd> on an untrusted "
+"executable, since this may result in the execution of arbitrary code. A "
+"safer alternative when dealing with untrusted executables is:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/ldd.1:51
+#, no-wrap
+msgid " $ objdump -p /path/to/program | grep NEEDED\n"
+msgstr ""
+
#. type: TP
-#: build/C/man1/ldd.1:20
+#: build/C/man1/ldd.1:52 build/C/man1/mtrace.1:55
#, no-wrap
msgid "B<--version>"
msgstr ""
#. type: Plain text
-#: build/C/man1/ldd.1:24
+#: build/C/man1/ldd.1:56
msgid "Print the version number of B<ldd>."
msgstr ""
#. type: TP
-#: build/C/man1/ldd.1:24
+#: build/C/man1/ldd.1:56
#, no-wrap
msgid "B<-v\\ --verbose>"
msgstr ""
#. type: Plain text
-#: build/C/man1/ldd.1:28
+#: build/C/man1/ldd.1:60
msgid ""
"Print all information, including, for example, symbol versioning "
"information."
msgstr ""
#. type: TP
-#: build/C/man1/ldd.1:28
+#: build/C/man1/ldd.1:60
#, no-wrap
msgid "B<-u\\ --unused>"
msgstr ""
#. type: Plain text
-#: build/C/man1/ldd.1:32
+#: build/C/man1/ldd.1:64
msgid "Print unused direct dependencies. (Since glibc 2.3.4.)"
msgstr ""
#. type: TP
-#: build/C/man1/ldd.1:32
+#: build/C/man1/ldd.1:64
#, no-wrap
msgid "B<-d\\ --data-relocs>"
msgstr ""
#. type: Plain text
-#: build/C/man1/ldd.1:35
+#: build/C/man1/ldd.1:67
msgid "Perform relocations and report any missing objects (ELF only)."
msgstr ""
#. type: TP
-#: build/C/man1/ldd.1:35
+#: build/C/man1/ldd.1:67
#, no-wrap
msgid "B<-r\\ --function-relocs>"
msgstr ""
#. type: Plain text
-#: build/C/man1/ldd.1:39
+#: build/C/man1/ldd.1:71
msgid ""
"Perform relocations for both data objects and functions, and report any "
"missing objects or functions (ELF only)."
msgstr ""
#. type: TP
-#: build/C/man1/ldd.1:39
+#: build/C/man1/ldd.1:71 build/C/man1/mtrace.1:52
#, no-wrap
msgid "B<--help>"
msgstr ""
+#. .SH NOTES
+#. The standard version of
+#. .B ldd
+#. comes with glibc2.
+#. Libc5 came with an older version, still present
+#. on some systems.
+#. The long options are not supported by the libc5 version.
+#. On the other hand, the glibc2 version does not support
+#. .B \-V
+#. and only has the equivalent
+#. .BR \-\-version .
+#. .LP
+#. The libc5 version of this program will use the name of a library given
+#. on the command line as-is when it contains a \(aq/\(aq; otherwise it
+#. searches for the library in the standard locations.
+#. To run it
+#. on a shared library in the current directory, prefix the name with "./".
#. type: Plain text
-#: build/C/man1/ldd.1:42
+#: build/C/man1/ldd.1:91
msgid "Usage information."
msgstr ""
#. type: Plain text
-#: build/C/man1/ldd.1:53
-msgid ""
-"The standard version of B<ldd> comes with glibc2. Libc5 came with an older "
-"version, still present on some systems. The long options are not supported "
-"by the libc5 version. On the other hand, the glibc2 version does not "
-"support B<-V> and only has the equivalent B<--version>."
-msgstr ""
-
-#. type: Plain text
-#: build/C/man1/ldd.1:59
-msgid ""
-"The libc5 version of this program will use the name of a library given on "
-"the command line as-is when it contains a \\(aq/\\(aq; otherwise it searches "
-"for the library in the standard locations. To run it on a shared library in "
-"the current directory, prefix the name with \"./\"."
-msgstr ""
-
-#. type: Plain text
-#: build/C/man1/ldd.1:62
+#: build/C/man1/ldd.1:94
msgid "B<ldd> does not work on a.out shared libraries."
msgstr ""
#. David Engel.
#. Roland McGrath and Ulrich Drepper.
#. type: Plain text
-#: build/C/man1/ldd.1:75
+#: build/C/man1/ldd.1:108
msgid ""
"B<ldd> does not work with some extremely old a.out programs which were built "
"before B<ldd> support was added to the compiler releases. If you use B<ldd> "
msgstr ""
#. type: Plain text
-#: build/C/man1/ldd.1:78
-msgid "B<ld.so>(8), B<ldconfig>(8)"
+#: build/C/man1/ldd.1:113
+msgid "B<sprof>(1), B<pldd>(1), B<ld.so>(8), B<ldconfig>(8)"
msgstr ""
#. type: TH
-#: build/C/man7/rtld-audit.7:26
+#: build/C/man1/memusage.1:24
#, no-wrap
-msgid "RTLD-AUDIT"
+msgid "MEMUSAGE"
msgstr ""
#. type: TH
-#: build/C/man7/rtld-audit.7:26
+#: build/C/man1/memusage.1:24 build/C/man1/memusagestat.1:23
#, no-wrap
-msgid "2010-09-10"
-msgstr ""
-
-#. type: Plain text
-#: build/C/man7/rtld-audit.7:29
-msgid "rtld-audit - auditing API for the dynamic linker"
+msgid "2014-09-06"
msgstr ""
-#. type: Plain text
-#: build/C/man7/rtld-audit.7:31
-msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */"
+#. type: TH
+#: build/C/man1/memusage.1:24 build/C/man1/mtrace.1:23
+#, no-wrap
+msgid "Linux user manual"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:33
-msgid "B<#include E<lt>link.hE<gt>>"
+#: build/C/man1/memusage.1:27
+msgid "memusage - profile memory usage of a program"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:41
-msgid ""
-"The GNU dynamic linker (run-time linker) provides an auditing API that "
-"allows an application to be notified when various dynamic linking events "
-"occur. This API is very similar to the auditing interface provided by the "
-"Solaris run-time linker. The necessary constants and prototypes are defined "
-"by including I<E<lt>link.hE<gt>>."
+#: build/C/man1/memusage.1:29
+msgid "B<memusage> [I<option>]... I<program> [I<programoption>]..."
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:48
+#: build/C/man1/memusage.1:53
msgid ""
-"To use this interface, the programmer creates a shared library that "
-"implements a standard set of function names. Not all of the functions need "
-"to be implemented: in most cases, if the programmer is not interested in a "
-"particular class of auditing event, then no implementation needs to be "
-"provided for the corresponding auditing function."
+"B<memusage> is a bash script which profiles memory usage of the program, "
+"I<program>. It preloads the B<libmemusage.so> library into the caller's "
+"environment (via the B<LD_PRELOAD> environment variable; see B<ld.so>(8)). "
+"The B<libmemusage.so> library traces memory allocation by intercepting calls "
+"to B<malloc>(3), B<calloc>(3), B<free>(3), and B<realloc>(3); optionally, "
+"calls to B<mmap>(2), B<mremap>(2), and B<munmap>(2) can also be "
+"intercepted."
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:56
+#: build/C/man1/memusage.1:62
msgid ""
-"To employ the auditing interface, the environment variable B<LD_AUDIT> must "
-"be defined to contain a colon-separated list of shared libraries, each of "
-"which can implement (parts of) the auditing API. When an auditable event "
-"occurs, the corresponding function is invoked in each library, in the order "
-"that the libraries are listed."
+"B<memusage> can output the collected data in textual form, or it can use "
+"B<memusagestat>(1) (see the B<-p> option, below) to create a PNG file "
+"containing graphical representation of the collected data."
msgstr ""
#. type: SS
-#: build/C/man7/rtld-audit.7:56
+#: build/C/man1/memusage.1:62
#, no-wrap
-msgid "la_version()"
+msgid "Memory usage summary"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:60
+#: build/C/man1/memusage.1:66
+msgid ""
+"The \"Memory usage summary\" line output by B<memusage> contains three "
+"fields:"
+msgstr ""
+
+#. type: TP
+#: build/C/man1/memusage.1:67
#, no-wrap
-msgid "B<unsigned int la_version(unsigned int >I<version>B<);>\n"
+msgid "B<heap total>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:72
+#: build/C/man1/memusage.1:84
msgid ""
-"This is the only function that I<must> be defined by an auditing library: it "
-"performs the initial handshake between the dynamic linker and the auditing "
-"library. When invoking this function, the dynamic linker passes, in "
-"I<version>, the highest version of the auditing interface that the linker "
-"supports. If necessary, the auditing library can check that this version is "
-"sufficient for its requirements."
+"Sum of I<size> arguments of all B<malloc>(3) calls, products of arguments "
+"(I<nmemb>*I<size>) of all B<calloc>(3) calls, and sum of I<length> "
+"arguments of all B<mmap>(2) calls. In the case of B<realloc>(3) and "
+"B<mremap>(2), if the new size of an allocation is larger than the previous "
+"size, the sum of all such differences (new size minus old size) is added."
+msgstr ""
+
+#. type: TP
+#: build/C/man1/memusage.1:84
+#, no-wrap
+msgid "B<heap peak>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:81
+#: build/C/man1/memusage.1:98
msgid ""
-"As its function result, this function should return the version of the "
-"auditing interface that this auditing library expects to use (returning "
-"I<version> is acceptable). If the returned value is 0, or a version that is "
-"greater than that supported by the dynamic linker, then the audit library is "
-"ignored."
+"Maximum of all I<size> arguments of B<malloc>(3), all products of "
+"I<nmemb>*I<size> of B<calloc>(3), all I<size> arguments of B<realloc>(3), "
+"I<length> arguments of B<mmap>(2), and I<new_size> arguments of "
+"B<mremap>(2)."
msgstr ""
-#. type: SS
-#: build/C/man7/rtld-audit.7:81
+#. type: TP
+#: build/C/man1/memusage.1:98
#, no-wrap
-msgid "la_objsearch()"
+msgid "B<stack peak>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:86
-#, no-wrap
+#: build/C/man1/memusage.1:105
msgid ""
-"B<char *la_objsearch(const char *>I<name>B<, uintptr_t *>I<cookie>B<,>\n"
-"B< unsigned int >I<flag>B<);>\n"
+"Before the first call to any monitored function, the stack pointer address "
+"(base stack pointer) is saved. After each function call, the actual stack "
+"pointer address is read and the difference from the base stack pointer "
+"computed. The maximum of these differences is then the stack peak."
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:97
+#: build/C/man1/memusage.1:122
msgid ""
-"The dynamic linker invokes this function to inform the auditing library that "
-"it is about to search for a shared object. The I<name> argument is the "
-"filename or pathname that is to be searched for. I<cookie> identifies the "
-"shared object that initiated the search. I<flag> is set to one of the "
-"following values:"
+"Immediately following this summary line, a table shows the number calls, "
+"total memory allocated or deallocated, and number of failed calls for each "
+"intercepted function. For B<realloc>(3) and B<mremap>(2), the additional "
+"field \"nomove\" shows reallocations that changed the address of a block, "
+"and the additional \"dec\" field shows reallocations that decreased the size "
+"of the block. For B<realloc>(3), the additional field \"free\" shows "
+"reallocations that caused a block to be freed (i.e., the reallocated size "
+"was 0)."
msgstr ""
-#. type: TP
-#: build/C/man7/rtld-audit.7:97
+#. type: Plain text
+#: build/C/man1/memusage.1:132
+msgid ""
+"The \"realloc/total memory\" of the table output by B<memusage> does not "
+"reflect cases where B<realloc>(3) is used to reallocate a block of memory "
+"to have a smaller size than previously. This can cause sum of all \"total "
+"memory\" cells (excluding \"free\") to be larger than the \"free/total "
+"memory\" cell."
+msgstr ""
+
+#. type: SS
+#: build/C/man1/memusage.1:132
#, no-wrap
-msgid "B<LA_SER_ORIG>"
+msgid "Histogram for block sizes"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:106
+#: build/C/man1/memusage.1:135
msgid ""
-"This is the original name that is being searched for. Typically, this name "
-"comes from an ELF B<DT_NEEDED> entry, or is the I<filename> argument given "
-"to B<dlopen>(3)."
+"The \"Histogram for block sizes\" provides a breakdown of memory allocations "
+"into various bucket sizes."
msgstr ""
#. type: TP
-#: build/C/man7/rtld-audit.7:106
+#: build/C/man1/memusage.1:136
#, no-wrap
-msgid "B<LA_SER_LIBPATH>"
+msgid "B<-n\\ >I<name>,\\ B<--progname=>I<name>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:111
-msgid "I<name> was created using a directory specified in B<LD_LIBRARY_PATH>."
+#: build/C/man1/memusage.1:139
+msgid "Name of the program file to profile."
msgstr ""
#. type: TP
-#: build/C/man7/rtld-audit.7:111
+#: build/C/man1/memusage.1:139
#, no-wrap
-msgid "B<LA_SER_RUNPATH>"
+msgid "B<-p\\ >I<file>,\\ B<--png=>I<file>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:119
-msgid ""
-"I<name> was created using a directory specified in an ELF B<DT_RPATH> or "
-"B<DT_RUNPATH> list."
+#: build/C/man1/memusage.1:143
+msgid "Generate PNG graphic and store it in I<file>."
msgstr ""
#. type: TP
-#: build/C/man7/rtld-audit.7:119
+#: build/C/man1/memusage.1:143
#, no-wrap
-msgid "B<LA_SER_CONFIG>"
+msgid "B<-d\\ >I<file>,\\ B<--data=>I<file>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:126
-msgid "I<name> was found via the B<ldconfig>(8) cache (I</etc/ld.so.cache>)."
+#: build/C/man1/memusage.1:147
+msgid "Generate binary data file and store it in I<file>."
msgstr ""
#. type: TP
-#: build/C/man7/rtld-audit.7:126
+#: build/C/man1/memusage.1:147
#, no-wrap
-msgid "B<LA_SER_DEFAULT>"
+msgid "B<-u>,\\ B<--unbuffered>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:130
-msgid "I<name> was found via a search of one of the default directories."
+#: build/C/man1/memusage.1:150
+msgid "Do not buffer output."
msgstr ""
#. type: TP
-#: build/C/man7/rtld-audit.7:130
+#: build/C/man1/memusage.1:150
#, no-wrap
-msgid "B<LA_SER_SECURE>"
-msgstr ""
-
-#. type: Plain text
-#: build/C/man7/rtld-audit.7:134
-msgid "I<name> is specific to a secure object (unused on Linux)."
+msgid "B<-b\\ >I<size>,\\ B<--buffer=>I<size>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:143
-msgid ""
-"As its function result, B<la_objsearch>() returns the pathname that the "
-"dynamic linker should use for further processing. If NULL is returned, then "
-"this pathname is ignored for further processing. If this audit library "
-"simply intends to monitor search paths, then I<name> should be returned."
+#: build/C/man1/memusage.1:155
+msgid "Collect I<size> entries before writing them out."
msgstr ""
-#. type: SS
-#: build/C/man7/rtld-audit.7:143
+#. type: TP
+#: build/C/man1/memusage.1:155
#, no-wrap
-msgid "la_activity()"
+msgid "B<--no-timer>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:147
+#: build/C/man1/memusage.1:160
+msgid "Disable timer-based (B<SIGPROF>) sampling of stack pointer value."
+msgstr ""
+
+#. type: TP
+#: build/C/man1/memusage.1:160
#, no-wrap
-msgid "B<void la_activity( uintptr_t *>I<cookie>B<, unsigned int >I<flag>B<);>\n"
+msgid "B<-m>,\\ B<--mmap>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:156
-msgid ""
-"The dynamic linker calls this function to inform the auditing library that "
-"link-map activity is occurring. I<cookie> identifies the object at the head "
-"of the link map. When the dynamic linker invokes this function, I<flag> is "
-"set to one of the following values:"
+#: build/C/man1/memusage.1:167
+msgid "Also trace B<mmap>(2), B<mremap>(2), and B<mmap>(2)."
msgstr ""
#. type: TP
-#: build/C/man7/rtld-audit.7:156
+#: build/C/man1/memusage.1:167 build/C/man1/memusagestat.1:72
#, no-wrap
-msgid "B<LA_ACT_ADD>"
+msgid "B<-?>,\\ B<--help>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:159
-msgid "New objects are being added to the link map."
+#: build/C/man1/memusage.1:170 build/C/man1/mtrace.1:55
+msgid "Print help and exit."
msgstr ""
#. type: TP
-#: build/C/man7/rtld-audit.7:159
+#: build/C/man1/memusage.1:170 build/C/man1/memusagestat.1:75 build/C/man1/pldd.1:44 build/C/man1/sprof.1:69
#, no-wrap
-msgid "B<LA_ACT_DELETE>"
+msgid "B<--usage>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:162
-msgid "Objects are being removed from the link map."
+#: build/C/man1/memusage.1:173 build/C/man1/memusagestat.1:78
+msgid "Print a short usage message and exit."
msgstr ""
#. type: TP
-#: build/C/man7/rtld-audit.7:162
+#: build/C/man1/memusage.1:173 build/C/man1/memusagestat.1:78
#, no-wrap
-msgid "B<LA_ACT_CONSISTENT>"
+msgid "B<-V>,\\ B<--version>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:165
-msgid "Link-map activity has been completed: the map is once again consistent."
+#: build/C/man1/memusage.1:176 build/C/man1/memusagestat.1:81 build/C/man1/mtrace.1:58
+msgid "Print version information and exit."
msgstr ""
-#. type: SS
-#: build/C/man7/rtld-audit.7:165
+#. type: TP
+#: build/C/man1/memusage.1:176
#, no-wrap
-msgid "la_objopen()"
+msgid "The following options apply only when generating graphical output:"
msgstr ""
-#. type: Plain text
-#: build/C/man7/rtld-audit.7:170
+#. type: TP
+#: build/C/man1/memusage.1:178
#, no-wrap
-msgid ""
-"B<unsigned int la_objopen(struct link_map *>I<map>B<, Lmid_t >I<lmid>B<,>\n"
-"B< uintptr_t *>I<cookie>B<);>\n"
+msgid "B<-t>,\\ B<--time-based>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:179
-msgid ""
-"The dynamic linker calls this function when a new shared object is loaded. "
-"The I<map> argument is a pointer to a link-map structure that describes the "
-"object. The I<lmid> field has one of the following values"
+#: build/C/man1/memusage.1:181 build/C/man1/memusagestat.1:59
+msgid "Use time (rather than number of function calls) as the scale for the X axis."
msgstr ""
#. type: TP
-#: build/C/man7/rtld-audit.7:179
+#: build/C/man1/memusage.1:181 build/C/man1/memusagestat.1:59
#, no-wrap
-msgid "B<LM_ID_BASE>"
+msgid "B<-T>,\\ B<--total>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:182
-msgid "Link map is part of the initial namespace."
+#: build/C/man1/memusage.1:184
+msgid "Also draw a graph of total memory use."
msgstr ""
#. type: TP
-#: build/C/man7/rtld-audit.7:182
+#: build/C/man1/memusage.1:184
#, no-wrap
-msgid "B<LM_ID_NEWLM>"
+msgid "B<--title=>I<name>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:186
-msgid "Link map is part of a new namespace requested via B<dlmopen>(3)."
+#: build/C/man1/memusage.1:189
+msgid "Use I<name> as the title of the graph."
msgstr ""
-#. type: Plain text
-#: build/C/man7/rtld-audit.7:194
-msgid ""
-"I<cookie> is a pointer to an identifier for this object. The identifier is "
-"provided to later calls to functions in the auditing library in order to "
-"identify this object. This identifier is initialized to point to object's "
-"link map, but the audit library can change the identifier to some other "
-"value that it may prefer to use to identify the object."
+#. type: TP
+#: build/C/man1/memusage.1:189 build/C/man1/memusagestat.1:62
+#, no-wrap
+msgid "B<-x\\ >I<size>,\\ B<--x-size=>I<size>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:201
-msgid ""
-"As its return value, B<la_objopen>() returns a bit mask created by ORing "
-"zero or more of the following constants, which allow the auditing library to "
-"select the objects to be monitored by B<la_symbind*>():"
+#: build/C/man1/memusage.1:194
+msgid "Make the graph I<size> pixels wide."
msgstr ""
#. type: TP
-#: build/C/man7/rtld-audit.7:201
+#: build/C/man1/memusage.1:194 build/C/man1/memusagestat.1:67
#, no-wrap
-msgid "B<LA_FLG_BINDTO>"
+msgid "B<-y\\ >I<size>,\\ B<--y-size=>I<size>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:204
-msgid "Audit symbol bindings to this object."
+#: build/C/man1/memusage.1:199
+msgid "Make the graph I<size> pixels high."
msgstr ""
-#. type: TP
-#: build/C/man7/rtld-audit.7:204
+#. type: SH
+#: build/C/man1/memusage.1:199 build/C/man1/pldd.1:60
#, no-wrap
-msgid "B<LA_FLG_BINDFROM>"
+msgid "EXIT STATUS"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:207
-msgid "Audit symbol bindings from this object."
+#: build/C/man1/memusage.1:201
+msgid "Exit status is equal to the exit status of profiled program."
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:211
+#: build/C/man1/memusage.1:208
msgid ""
-"A return value of 0 from B<la_objopen>() indicates that no symbol bindings "
-"should be audited for this object."
+"Below is a simple program that reallocates a block of memory in cycles that "
+"rise to a peak before then cyclically reallocating the memory in smaller "
+"blocks that return to zero. After compiling the program and running the "
+"following commands, a graph of the memory usage of the program can be found "
+"in the file I<memusage.png>:"
msgstr ""
-#. type: SS
-#: build/C/man7/rtld-audit.7:211
+#. type: Plain text
+#: build/C/man1/memusage.1:232
#, no-wrap
-msgid "la_objclose()"
+msgid ""
+"$ B<memusage --data=memusage.dat ./a.out>\n"
+"\\&...\n"
+"Memory usage summary: heap total: 45200, heap peak: 6440, stack peak: 224\n"
+" total calls total memory failed calls\n"
+" malloc| 1 400 0\n"
+"realloc| 40 44800 0 (nomove:40, dec:19, "
+"free:0)\n"
+" calloc| 0 0 0\n"
+" free| 1 440\n"
+"Histogram for block sizes:\n"
+" 192-207 1 2% ================\n"
+"\\&...\n"
+" 2192-2207 1 2% ================\n"
+" 2240-2255 2 4% =================================\n"
+" 2832-2847 2 4% =================================\n"
+" 3440-3455 2 4% =================================\n"
+" 4032-4047 2 4% =================================\n"
+" 4640-4655 2 4% =================================\n"
+" 5232-5247 2 4% =================================\n"
+" 5840-5855 2 4% =================================\n"
+" 6432-6447 1 2% ================\n"
+"$ B<memusagestat memusage.dat memusage.png>\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:215
+#: build/C/man1/memusage.1:240
#, no-wrap
-msgid "B<unsigned int la_objclose(uintptr_t *>I<cookie);>\n"
+msgid "#define CYCLES 20\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:224
+#: build/C/man1/memusage.1:246
+#, no-wrap
msgid ""
-"The dynamic linker invokes this function after any finalization code for the "
-"object has been executed, before the object is unloaded. The I<cookie> "
-"argument is the identifier obtained from a previous invocation of "
-"B<la_objopen>()."
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int i, j;\n"
+" int *p;\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:228
-msgid ""
-"In the current implementation, the value returned by B<la_objclose>() is "
-"ignored."
-msgstr ""
-
-#. type: SS
-#: build/C/man7/rtld-audit.7:228
+#: build/C/man1/memusage.1:249
#, no-wrap
-msgid "la_preinit()"
+msgid ""
+" printf(\"malloc: %zd\\en\", sizeof(int) * 100);\n"
+" p = malloc(sizeof(int) * 100);\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:232
+#: build/C/man1/memusage.1:255
#, no-wrap
-msgid "B<void la_preinit(uintptr_t *>I<cookie>B<);>\n"
+msgid ""
+" for (i = 0; i E<lt> CYCLES; i++) {\n"
+" if (i E<lt> CYCLES / 2)\n"
+" j = i;\n"
+" else\n"
+" j--;\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:242
+#: build/C/man1/memusage.1:258
+#, no-wrap
msgid ""
-"The dynamic linker invokes this function after all shared objects have been "
-"loaded, before control is passed to the application (i.e., before calling "
-"I<main>()). Note that I<main>() may still later dynamically load objects "
-"using B<dlopen>(3)."
+" printf(\"realloc: %zd\\en\", sizeof(int) * (j * 50 + 110));\n"
+" p = realloc(p, sizeof(int) * (j * 50 + 100));\n"
msgstr ""
-#. type: SS
-#: build/C/man7/rtld-audit.7:242
+#. type: Plain text
+#: build/C/man1/memusage.1:262
#, no-wrap
-msgid "la_symbind*()"
+msgid ""
+" printf(\"realloc: %zd\\en\", sizeof(int) * ((j+1) * 150 + 110));\n"
+" p = realloc(p, sizeof(int) * ((j + 1) * 150 + 110));\n"
+" }\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:251
+#: build/C/man1/memusage.1:266
#, no-wrap
msgid ""
-"B<uintptr_t la_symbind32(Elf32_Sym *>I<sym>B<, unsigned int >I<ndx>B<,>\n"
-"B< uintptr_t *>I<refcook>B<, uintptr_t "
-"*>I<defcook>B<,>\n"
-"B< unsigned int *>I<flags>B<, const char "
-"*>I<symname>B<);>\n"
-"B<uintptr_t la_symbind64(Elf64_Sym *>I<sym>B<, unsigned int >I<ndx>B<,>\n"
-"B< uintptr_t *>I<refcook>B<, uintptr_t "
-"*>I<defcook>B<,>\n"
-"B< unsigned int *>I<flags>B<, const char "
-"*>I<symname>B<);>\n"
+" free(p);\n"
+" exit(EXIT_SUCCESS);\n"
+"}\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:263
-msgid ""
-"The dynamic linker invokes one of these functions when a symbol binding "
-"occurs between two shared objects that have been marked for auditing "
-"notification by B<la_objopen>(). The B<la_symbind32>() function is "
-"employed on 32-bit platforms; the B<la_symbind64>() function is employed on "
-"64-bit platforms."
+#: build/C/man1/memusage.1:271 build/C/man1/memusagestat.1:88
+msgid "To report bugs, see E<.UR http://www.gnu.org/software/libc/bugs.html> E<.UE>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:273
-msgid ""
-"The I<sym> argument is a pointer to a structure that provides information "
-"about the symbol being bound. The structure definition is shown in "
-"I<E<lt>elf.hE<gt>>. Among the fields of this structure, I<st_value> "
-"indicates the address to which the symbol is bound."
+#: build/C/man1/memusage.1:275
+msgid "B<memusagestat>(1), B<mtrace>(1) B<ld.so>(8)"
+msgstr ""
+
+#. type: TH
+#: build/C/man1/memusagestat.1:23
+#, no-wrap
+msgid "MEMUSAGESTAT"
+msgstr ""
+
+#. type: TH
+#: build/C/man1/memusagestat.1:23
+#, no-wrap
+msgid "Linux programmer's manual"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:278
-msgid ""
-"The I<ndx> argument gives the index of the symbol in the symbol table of the "
-"bound shared object."
+#: build/C/man1/memusagestat.1:26
+msgid "memusagestat - generate graphic from memory profiling data"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:293
-msgid ""
-"The I<refcook> argument identifies the shared object that is making the "
-"symbol reference; this is the same identifier that is provided to the "
-"B<la_objopen>() function that returned B<LA_FLG_BINDFROM>. The I<defcook> "
-"argument identifies the shared object that defines the referenced symbol; "
-"this is the same identifier that is provided to the B<la_objopen>() "
-"function that returned B<LA_FLG_BINDTO>."
+#: build/C/man1/memusagestat.1:28
+msgid "B<memusagestat> [I<option>]... I<datafile> [I<outfile>]"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:297
-msgid "The I<symname> argument points a string containing the name of the symbol."
+#: build/C/man1/memusagestat.1:39
+msgid ""
+"B<memusagestat> creates a PNG file containing a graphical representation of "
+"the memory profiling data in the file I<datafile>; that file is generated "
+"via the I<-d> (or I<--data>) option of B<memusage>(1)."
msgstr ""
-#. LA_SYMB_STRUCTCALL appears to be unused
#. type: Plain text
-#: build/C/man7/rtld-audit.7:305
+#: build/C/man1/memusagestat.1:47
msgid ""
-"The I<flags> argument is a bit mask that both provides information about the "
-"symbol and can be used to modify further auditing of this PLT (Procedure "
-"Linkage Table) entry. The dynamic linker may supply the following bit "
-"values in this argument:"
+"The red line in the graph shows the heap usage (allocated memory) and the "
+"green line shows the stack usage. The x-scale is either the number of "
+"memory-handling function calls or (if the I<-t> option is specified) time."
msgstr ""
#. type: TP
-#: build/C/man7/rtld-audit.7:305
+#: build/C/man1/memusagestat.1:48
#, no-wrap
-msgid "B<LA_SYMB_DLSYM>"
+msgid "B<-o\\ >I<file>,\\ B<--output=>I<file>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:309
-msgid "The binding resulted from a call to B<dlsym>(3)."
+#: build/C/man1/memusagestat.1:51
+msgid "Name of the output file."
msgstr ""
#. type: TP
-#: build/C/man7/rtld-audit.7:309
+#: build/C/man1/memusagestat.1:51
#, no-wrap
-msgid "B<LA_SYMB_ALTVALUE>"
-msgstr ""
-
-#. type: Plain text
-#: build/C/man7/rtld-audit.7:314
-msgid ""
-"A previous B<la_symbind*>() call returned an alternate value for this "
-"symbol."
+msgid "B<-s\\ >I<string>,\\ B<--string=>I<string>"
msgstr ""
-#. pltenter/pltexit are called for non-dynamically loaded libraries,
-#. but don't seem to be called for dynamically loaded libs?
-#. Is this the same on Solaris?
#. type: Plain text
-#: build/C/man7/rtld-audit.7:328
-msgid ""
-"By default, if the auditing library implements B<la_pltenter>() and "
-"B<la_pltexit>() functions (see below), then these functions are invoked, "
-"after B<la_symbind>(), for PLT entries, each time the symbol is referenced. "
-"The following flags can be ORed into I<*flags> to change this default "
-"behavior:"
+#: build/C/man1/memusagestat.1:56
+msgid "Use I<string> as the title inside the output graph."
msgstr ""
#. type: TP
-#: build/C/man7/rtld-audit.7:328
+#: build/C/man1/memusagestat.1:56
#, no-wrap
-msgid "B<LA_SYMB_NOPLTENTER>"
+msgid "B<-t>,\\ B<--time>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:333
-msgid "Don't call B<la_pltenter>() for this symbol."
+#: build/C/man1/memusagestat.1:62
+msgid "Also draw a graph of total memory consumption."
msgstr ""
-#. type: TP
-#: build/C/man7/rtld-audit.7:333
-#, no-wrap
-msgid "B<LA_SYMB_NOPLTEXIT>"
+#. type: Plain text
+#: build/C/man1/memusagestat.1:67
+msgid "Make the output graph I<size> pixels wide."
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:338
-msgid "Don't call B<la_pltexit>() for this symbol."
+#: build/C/man1/memusagestat.1:72
+msgid "Make the output graph I<size> pixels high."
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:349
-msgid ""
-"The return value of B<la_symbind32>() and B<la_symbind64>() is the address "
-"to which control should be passed after the function returns. If the "
-"auditing library is simply monitoring symbol bindings, then it should return "
-"I<sym-E<gt>st_name>. A different value may be returned if the library "
-"wishes to direct control to an alternate location."
+#: build/C/man1/memusagestat.1:75
+msgid "Print a help message and exit."
msgstr ""
-#. type: SS
-#: build/C/man7/rtld-audit.7:349
-#, no-wrap
-msgid "la_pltenter()"
+#. type: Plain text
+#: build/C/man1/memusagestat.1:84
+msgid "See B<memusage>(1)."
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:355 build/C/man7/rtld-audit.7:415
-msgid ""
-"The precise name and argument types for this function depend on the hardware "
-"platform. (The appropriate definition is supplied by I<E<lt>link.hE<gt>>.) "
-"Here is the definition for x86-32:"
+#: build/C/man1/memusagestat.1:91
+msgid "B<memusage>(1), B<mtrace>(1)"
msgstr ""
-#. type: Plain text
-#: build/C/man7/rtld-audit.7:361
+#. type: TH
+#: build/C/man1/mtrace.1:23
#, no-wrap
-msgid ""
-"B<Elf32_Addr la_i86_gnu_pltenter(Elf32_Sym *>I<sym>B<, unsigned int "
-">I<ndx>B<,>\n"
-"B< uintptr_t *>I<refcook>B<, uintptr_t *>I<defcook>B<,>\n"
-"B< La_i86_regs *>I<regs>B<, unsigned int *>I<flags>B<,>\n"
-"B< const char *>I<symname>B<, long int "
-"*>I<framesizep>B<);>\n"
+msgid "MTRACE"
+msgstr ""
+
+#. type: TH
+#: build/C/man1/mtrace.1:23
+#, no-wrap
+msgid "2014-09-01"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:365
-msgid ""
-"This function is invoked just before a PLT entry is called, between two "
-"shared objects that have been marked for binding notification."
+#: build/C/man1/mtrace.1:26
+msgid "mtrace - interpret the malloc trace log"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:375 build/C/man7/rtld-audit.7:438
-msgid ""
-"The I<sym>, I<ndx>, I<refcook>, I<defcook>, and I<symname> are as for "
-"B<la_symbind*>()."
+#: build/C/man1/mtrace.1:28
+msgid "B<mtrace> [I<option>]... [I<binary>] I<mtracedata>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:382
+#: build/C/man1/mtrace.1:44
msgid ""
-"The I<regs> argument points to a structure (defined in I<E<lt>link.hE<gt>>) "
-"containing the values of registers to be used for the call to this PLT "
-"entry."
+"B<mtrace> is a Perl script used to interpret and provide human readable "
+"output of the trace log contained in the file I<mtracedata>, whose contents "
+"were produced by B<mtrace>(3). If I<binary> is provided, the output of "
+"B<mtrace> also contains the source file name with line number information "
+"for problem locations (assuming that I<binary> was compiled with debugging "
+"information)."
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:388
+#: build/C/man1/mtrace.1:51
msgid ""
-"The I<flags> argument points to a bit mask that conveys information about, "
-"and can be used to modify subsequent auditing of, this PLT entry, as for "
-"B<la_symbind*>()."
+"For more information about the B<mtrace>(3) function and B<mtrace> script "
+"usage, see B<mtrace>(3)."
msgstr ""
-#. FIXME is the following correct?
#. type: Plain text
-#: build/C/man7/rtld-audit.7:404
+#: build/C/man1/mtrace.1:61
msgid ""
-"The I<framesizep> argument points to a I<long\\ int> buffer that can be used "
-"to explicitly set the frame size used for the call to this PLT entry. If "
-"different B<la_pltenter>() invocations for this symbol return different "
-"values, then the maximum returned value is used. The B<la_pltenter>() "
-"function is only called if this buffer is explicitly set to a suitable "
-"value."
+"For bug reporting instructions, please see: "
+"E<lt>http://www.gnu.org/software/libc/bugs.htmlE<gt>."
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:409
-msgid "The return value of B<la_pltenter>() is as for B<la_symbind*>()."
+#: build/C/man1/mtrace.1:64
+msgid "B<memusage>(1), B<mtrace>(3)"
msgstr ""
-#. type: SS
-#: build/C/man7/rtld-audit.7:409
+#. type: TH
+#: build/C/man1/pldd.1:25
#, no-wrap
-msgid "la_pltexit()"
+msgid "PLDD"
msgstr ""
-#. type: Plain text
-#: build/C/man7/rtld-audit.7:421
+#. type: TH
+#: build/C/man1/pldd.1:25
#, no-wrap
-msgid ""
-"B<unsigned int la_i86_gnu_pltexit(Elf32_Sym *>I<sym>B<, unsigned int "
-">I<ndx>B<,>\n"
-"B< uintptr_t *>I<refcook>B<, uintptr_t *>I<defcook>B<,>\n"
-"B< const La_i86_regs *>I<inregs>B<, La_i86_retval "
-"*>I<outregs>B<,>\n"
-"B< const char *>I<symname>B<);>\n"
+msgid "2014-09-27"
+msgstr ""
+
+#. type: TH
+#: build/C/man1/pldd.1:25 build/C/man1/sprof.1:25
+#, no-wrap
+msgid "Linux User Manual"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:428
-msgid ""
-"This function is called when a PLT entry, made between two shared objects "
-"that have been marked for binding notification, returns. The function is "
-"called just before control returns to the caller of the PLT entry."
+#: build/C/man1/pldd.1:28
+msgid "pldd - display dynamic shared objects linked into a process"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:451
+#: build/C/man1/pldd.1:32
+#, no-wrap
msgid ""
-"The I<inregs> argument points to a structure (defined in "
-"I<E<lt>link.hE<gt>>) containing the values of registers used for the call "
-"to this PLT entry. The I<outregs> argument points to a structure (defined "
-"in I<E<lt>link.hE<gt>>) containing return values for the call to this PLT "
-"entry. These values can be modified by the caller, and the changes will be "
-"visible to the caller of the PLT entry."
+"B<pldd >I<PID>\n"
+"B<pldd> OPTION\n"
msgstr ""
-#. This differs from Solaris, where an audit library that monitors
-#. symbol binding should return the value of the 'retval' argument
-#. (not provided by GNU, but equivalent to returning outregs->lrv_eax
-#. on (say) x86-32).
#. type: Plain text
-#: build/C/man7/rtld-audit.7:459
+#: build/C/man1/pldd.1:40
msgid ""
-"In the current GNU implementation, the return value of B<la_pltexit>() is "
-"ignored."
+"The B<pldd> command displays a list of the dynamic shared objects that are "
+"linked into the process with the specified process ID. The list includes "
+"the libraries that have been dynamically loaded using B<dlopen>(3)."
+msgstr ""
+
+#. type: TP
+#: build/C/man1/pldd.1:41 build/C/man1/sprof.1:66
+#, no-wrap
+msgid "B<-?>, B<--help>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:465
-msgid ""
-"This API is nonstandard, but very similar to the Solaris API, described in "
-"the Solaris I<Linker and Libraries Guide>, in the chapter I<Runtime Linker "
-"Auditing Interface>."
+#: build/C/man1/pldd.1:44
+msgid "Display program help message."
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:468
-msgid "Note the following differences from the Solaris dynamic linker auditing API:"
+#: build/C/man1/pldd.1:47
+msgid "Display a short usage message."
msgstr ""
-#. type: IP
-#: build/C/man7/rtld-audit.7:468 build/C/man7/rtld-audit.7:472 build/C/man7/rtld-audit.7:480
+#. type: TP
+#: build/C/man1/pldd.1:47 build/C/man1/sprof.1:72
#, no-wrap
-msgid "*"
+msgid "B<-V>, B<--version>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:472
-msgid ""
-"The Solaris B<la_objfilter>() interface is not supported by the GNU "
-"implementation."
+#: build/C/man1/pldd.1:50
+msgid "Display the program version."
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:480
-msgid ""
-"The Solaris B<la_symbind32>() and B<la_pltexit>() functions do not provide "
-"a I<symname> argument."
+#: build/C/man1/pldd.1:53
+msgid "B<pldd> is available since glibc 2.15."
msgstr ""
+#. There are man pages on Solaris and HP-UX.
#. type: Plain text
-#: build/C/man7/rtld-audit.7:490
+#: build/C/man1/pldd.1:60
msgid ""
-"The Solaris B<la_pltexit>() function does not provide I<inregs> and "
-"I<outregs> arguments (but does provide a I<retval> argument with the "
-"function return value)."
+"The B<pldd> command is not specified by POSIX.1. Some other systems have a "
+"similar command."
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:494
-#, no-wrap
+#: build/C/man1/pldd.1:71
msgid ""
-"#include E<lt>link.hE<gt>\n"
-"#include E<lt>stdio.hE<gt>\n"
+"On success, B<pldd> exits with the status 0. If the specified process does "
+"not exist, the user does not have permission to access its dynamic shared "
+"object list, or no command-line arguments are supplied, B<pldd> exists with "
+"a status of 1. If given an invalid option, it exits with the status 64."
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:499
+#: build/C/man1/pldd.1:83
#, no-wrap
msgid ""
-"unsigned int\n"
-"la_version(unsigned int version)\n"
-"{\n"
-" printf(\"la_version(): %d\\en\", version);\n"
+"$ B<echo $$> # Display PID of shell\n"
+"1143\n"
+"$ B<pldd $$> # Display DSOs linked into the shell\n"
+"1143:\t/usr/bin/bash\n"
+"linux-vdso.so.1\n"
+"/lib64/libtinfo.so.5\n"
+"/lib64/libdl.so.2\n"
+"/lib64/libc.so.6\n"
+"/lib64/ld-linux-x86-64.so.2\n"
+"/lib64/libnss_files.so.2\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:502
-#, no-wrap
-msgid ""
-" return version;\n"
-"}\n"
+#: build/C/man1/pldd.1:86
+msgid "The command"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:515
+#: build/C/man1/pldd.1:88
#, no-wrap
-msgid ""
+msgid " lsof -p PID\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/pldd.1:91
+msgid ""
+"also shows output that includes the dynamic shared objects that are linked "
+"into a process."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/pldd.1:96
+msgid "B<ldd>(1), B<lsof>(1), B<dlopen>(3), B<ld.so>(8)"
+msgstr ""
+
+#. type: TH
+#: build/C/man7/rtld-audit.7:28
+#, no-wrap
+msgid "RTLD-AUDIT"
+msgstr ""
+
+#. type: TH
+#: build/C/man7/rtld-audit.7:28
+#, no-wrap
+msgid "2012-07-07"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:31
+msgid "rtld-audit - auditing API for the dynamic linker"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:33
+msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:35
+msgid "B<#include E<lt>link.hE<gt>>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:43
+msgid ""
+"The GNU dynamic linker (run-time linker) provides an auditing API that "
+"allows an application to be notified when various dynamic linking events "
+"occur. This API is very similar to the auditing interface provided by the "
+"Solaris run-time linker. The necessary constants and prototypes are defined "
+"by including I<E<lt>link.hE<gt>>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:50
+msgid ""
+"To use this interface, the programmer creates a shared library that "
+"implements a standard set of function names. Not all of the functions need "
+"to be implemented: in most cases, if the programmer is not interested in a "
+"particular class of auditing event, then no implementation needs to be "
+"provided for the corresponding auditing function."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:58
+msgid ""
+"To employ the auditing interface, the environment variable B<LD_AUDIT> must "
+"be defined to contain a colon-separated list of shared libraries, each of "
+"which can implement (parts of) the auditing API. When an auditable event "
+"occurs, the corresponding function is invoked in each library, in the order "
+"that the libraries are listed."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/rtld-audit.7:58
+#, no-wrap
+msgid "la_version()"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:62
+#, no-wrap
+msgid "B<unsigned int la_version(unsigned int >I<version>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:74
+msgid ""
+"This is the only function that I<must> be defined by an auditing library: it "
+"performs the initial handshake between the dynamic linker and the auditing "
+"library. When invoking this function, the dynamic linker passes, in "
+"I<version>, the highest version of the auditing interface that the linker "
+"supports. If necessary, the auditing library can check that this version is "
+"sufficient for its requirements."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:83
+msgid ""
+"As its function result, this function should return the version of the "
+"auditing interface that this auditing library expects to use (returning "
+"I<version> is acceptable). If the returned value is 0, or a version that is "
+"greater than that supported by the dynamic linker, then the audit library is "
+"ignored."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/rtld-audit.7:83
+#, no-wrap
+msgid "la_objsearch()"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:88
+#, no-wrap
+msgid ""
+"B<char *la_objsearch(const char *>I<name>B<, uintptr_t *>I<cookie>B<,>\n"
+"B< unsigned int >I<flag>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:99
+msgid ""
+"The dynamic linker invokes this function to inform the auditing library that "
+"it is about to search for a shared object. The I<name> argument is the "
+"filename or pathname that is to be searched for. I<cookie> identifies the "
+"shared object that initiated the search. I<flag> is set to one of the "
+"following values:"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:99
+#, no-wrap
+msgid "B<LA_SER_ORIG>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:108
+msgid ""
+"This is the original name that is being searched for. Typically, this name "
+"comes from an ELF B<DT_NEEDED> entry, or is the I<filename> argument given "
+"to B<dlopen>(3)."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:108
+#, no-wrap
+msgid "B<LA_SER_LIBPATH>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:113
+msgid "I<name> was created using a directory specified in B<LD_LIBRARY_PATH>."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:113
+#, no-wrap
+msgid "B<LA_SER_RUNPATH>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:121
+msgid ""
+"I<name> was created using a directory specified in an ELF B<DT_RPATH> or "
+"B<DT_RUNPATH> list."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:121
+#, no-wrap
+msgid "B<LA_SER_CONFIG>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:128
+msgid "I<name> was found via the B<ldconfig>(8) cache (I</etc/ld.so.cache>)."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:128
+#, no-wrap
+msgid "B<LA_SER_DEFAULT>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:132
+msgid "I<name> was found via a search of one of the default directories."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:132
+#, no-wrap
+msgid "B<LA_SER_SECURE>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:136
+msgid "I<name> is specific to a secure object (unused on Linux)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:145
+msgid ""
+"As its function result, B<la_objsearch>() returns the pathname that the "
+"dynamic linker should use for further processing. If NULL is returned, then "
+"this pathname is ignored for further processing. If this audit library "
+"simply intends to monitor search paths, then I<name> should be returned."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/rtld-audit.7:145
+#, no-wrap
+msgid "la_activity()"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:149
+#, no-wrap
+msgid "B<void la_activity( uintptr_t *>I<cookie>B<, unsigned int >I<flag>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:158
+msgid ""
+"The dynamic linker calls this function to inform the auditing library that "
+"link-map activity is occurring. I<cookie> identifies the object at the head "
+"of the link map. When the dynamic linker invokes this function, I<flag> is "
+"set to one of the following values:"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:158
+#, no-wrap
+msgid "B<LA_ACT_ADD>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:161
+msgid "New objects are being added to the link map."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:161
+#, no-wrap
+msgid "B<LA_ACT_DELETE>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:164
+msgid "Objects are being removed from the link map."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:164
+#, no-wrap
+msgid "B<LA_ACT_CONSISTENT>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:167
+msgid "Link-map activity has been completed: the map is once again consistent."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/rtld-audit.7:167
+#, no-wrap
+msgid "la_objopen()"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:172
+#, no-wrap
+msgid ""
+"B<unsigned int la_objopen(struct link_map *>I<map>B<, Lmid_t >I<lmid>B<,>\n"
+"B< uintptr_t *>I<cookie>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:181
+msgid ""
+"The dynamic linker calls this function when a new shared object is loaded. "
+"The I<map> argument is a pointer to a link-map structure that describes the "
+"object. The I<lmid> field has one of the following values"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:181
+#, no-wrap
+msgid "B<LM_ID_BASE>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:184
+msgid "Link map is part of the initial namespace."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:184
+#, no-wrap
+msgid "B<LM_ID_NEWLM>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:188
+msgid "Link map is part of a new namespace requested via B<dlmopen>(3)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:196
+msgid ""
+"I<cookie> is a pointer to an identifier for this object. The identifier is "
+"provided to later calls to functions in the auditing library in order to "
+"identify this object. This identifier is initialized to point to object's "
+"link map, but the audit library can change the identifier to some other "
+"value that it may prefer to use to identify the object."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:203
+msgid ""
+"As its return value, B<la_objopen>() returns a bit mask created by ORing "
+"zero or more of the following constants, which allow the auditing library to "
+"select the objects to be monitored by B<la_symbind*>():"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:203
+#, no-wrap
+msgid "B<LA_FLG_BINDTO>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:206
+msgid "Audit symbol bindings to this object."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:206
+#, no-wrap
+msgid "B<LA_FLG_BINDFROM>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:209
+msgid "Audit symbol bindings from this object."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:213
+msgid ""
+"A return value of 0 from B<la_objopen>() indicates that no symbol bindings "
+"should be audited for this object."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/rtld-audit.7:213
+#, no-wrap
+msgid "la_objclose()"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:217
+#, no-wrap
+msgid "B<unsigned int la_objclose(uintptr_t *>I<cookie>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:226
+msgid ""
+"The dynamic linker invokes this function after any finalization code for the "
+"object has been executed, before the object is unloaded. The I<cookie> "
+"argument is the identifier obtained from a previous invocation of "
+"B<la_objopen>()."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:230
+msgid ""
+"In the current implementation, the value returned by B<la_objclose>() is "
+"ignored."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/rtld-audit.7:230
+#, no-wrap
+msgid "la_preinit()"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:234
+#, no-wrap
+msgid "B<void la_preinit(uintptr_t *>I<cookie>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:244
+msgid ""
+"The dynamic linker invokes this function after all shared objects have been "
+"loaded, before control is passed to the application (i.e., before calling "
+"I<main>()). Note that I<main>() may still later dynamically load objects "
+"using B<dlopen>(3)."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/rtld-audit.7:244
+#, no-wrap
+msgid "la_symbind*()"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:253
+#, no-wrap
+msgid ""
+"B<uintptr_t la_symbind32(Elf32_Sym *>I<sym>B<, unsigned int >I<ndx>B<,>\n"
+"B< uintptr_t *>I<refcook>B<, uintptr_t "
+"*>I<defcook>B<,>\n"
+"B< unsigned int *>I<flags>B<, const char "
+"*>I<symname>B<);>\n"
+"B<uintptr_t la_symbind64(Elf64_Sym *>I<sym>B<, unsigned int >I<ndx>B<,>\n"
+"B< uintptr_t *>I<refcook>B<, uintptr_t "
+"*>I<defcook>B<,>\n"
+"B< unsigned int *>I<flags>B<, const char "
+"*>I<symname>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:265
+msgid ""
+"The dynamic linker invokes one of these functions when a symbol binding "
+"occurs between two shared objects that have been marked for auditing "
+"notification by B<la_objopen>(). The B<la_symbind32>() function is "
+"employed on 32-bit platforms; the B<la_symbind64>() function is employed on "
+"64-bit platforms."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:275
+msgid ""
+"The I<sym> argument is a pointer to a structure that provides information "
+"about the symbol being bound. The structure definition is shown in "
+"I<E<lt>elf.hE<gt>>. Among the fields of this structure, I<st_value> "
+"indicates the address to which the symbol is bound."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:280
+msgid ""
+"The I<ndx> argument gives the index of the symbol in the symbol table of the "
+"bound shared object."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:295
+msgid ""
+"The I<refcook> argument identifies the shared object that is making the "
+"symbol reference; this is the same identifier that is provided to the "
+"B<la_objopen>() function that returned B<LA_FLG_BINDFROM>. The I<defcook> "
+"argument identifies the shared object that defines the referenced symbol; "
+"this is the same identifier that is provided to the B<la_objopen>() "
+"function that returned B<LA_FLG_BINDTO>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:299
+msgid "The I<symname> argument points a string containing the name of the symbol."
+msgstr ""
+
+#. LA_SYMB_STRUCTCALL appears to be unused
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:307
+msgid ""
+"The I<flags> argument is a bit mask that both provides information about the "
+"symbol and can be used to modify further auditing of this PLT (Procedure "
+"Linkage Table) entry. The dynamic linker may supply the following bit "
+"values in this argument:"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:307
+#, no-wrap
+msgid "B<LA_SYMB_DLSYM>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:311
+msgid "The binding resulted from a call to B<dlsym>(3)."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:311
+#, no-wrap
+msgid "B<LA_SYMB_ALTVALUE>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:316
+msgid ""
+"A previous B<la_symbind*>() call returned an alternate value for this "
+"symbol."
+msgstr ""
+
+#. pltenter/pltexit are called for non-dynamically loaded libraries,
+#. but don't seem to be called for dynamically loaded libs?
+#. Is this the same on Solaris?
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:330
+msgid ""
+"By default, if the auditing library implements B<la_pltenter>() and "
+"B<la_pltexit>() functions (see below), then these functions are invoked, "
+"after B<la_symbind>(), for PLT entries, each time the symbol is referenced. "
+"The following flags can be ORed into I<*flags> to change this default "
+"behavior:"
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:330
+#, no-wrap
+msgid "B<LA_SYMB_NOPLTENTER>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:335
+msgid "Don't call B<la_pltenter>() for this symbol."
+msgstr ""
+
+#. type: TP
+#: build/C/man7/rtld-audit.7:335
+#, no-wrap
+msgid "B<LA_SYMB_NOPLTEXIT>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:340
+msgid "Don't call B<la_pltexit>() for this symbol."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:351
+msgid ""
+"The return value of B<la_symbind32>() and B<la_symbind64>() is the address "
+"to which control should be passed after the function returns. If the "
+"auditing library is simply monitoring symbol bindings, then it should return "
+"I<sym-E<gt>st_value>. A different value may be returned if the library "
+"wishes to direct control to an alternate location."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/rtld-audit.7:351
+#, no-wrap
+msgid "la_pltenter()"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:357 build/C/man7/rtld-audit.7:417
+msgid ""
+"The precise name and argument types for this function depend on the hardware "
+"platform. (The appropriate definition is supplied by I<E<lt>link.hE<gt>>.) "
+"Here is the definition for x86-32:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:363
+#, no-wrap
+msgid ""
+"B<Elf32_Addr la_i86_gnu_pltenter(Elf32_Sym *>I<sym>B<, unsigned int "
+">I<ndx>B<,>\n"
+"B< uintptr_t *>I<refcook>B<, uintptr_t *>I<defcook>B<,>\n"
+"B< La_i86_regs *>I<regs>B<, unsigned int *>I<flags>B<,>\n"
+"B< const char *>I<symname>B<, long int "
+"*>I<framesizep>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:367
+msgid ""
+"This function is invoked just before a PLT entry is called, between two "
+"shared objects that have been marked for binding notification."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:377 build/C/man7/rtld-audit.7:440
+msgid ""
+"The I<sym>, I<ndx>, I<refcook>, I<defcook>, and I<symname> are as for "
+"B<la_symbind*>()."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:384
+msgid ""
+"The I<regs> argument points to a structure (defined in I<E<lt>link.hE<gt>>) "
+"containing the values of registers to be used for the call to this PLT "
+"entry."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:390
+msgid ""
+"The I<flags> argument points to a bit mask that conveys information about, "
+"and can be used to modify subsequent auditing of, this PLT entry, as for "
+"B<la_symbind*>()."
+msgstr ""
+
+#. FIXME . Is the following correct?
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:406
+msgid ""
+"The I<framesizep> argument points to a I<long\\ int> buffer that can be used "
+"to explicitly set the frame size used for the call to this PLT entry. If "
+"different B<la_pltenter>() invocations for this symbol return different "
+"values, then the maximum returned value is used. The B<la_pltenter>() "
+"function is called only if this buffer is explicitly set to a suitable "
+"value."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:411
+msgid "The return value of B<la_pltenter>() is as for B<la_symbind*>()."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/rtld-audit.7:411
+#, no-wrap
+msgid "la_pltexit()"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:423
+#, no-wrap
+msgid ""
+"B<unsigned int la_i86_gnu_pltexit(Elf32_Sym *>I<sym>B<, unsigned int "
+">I<ndx>B<,>\n"
+"B< uintptr_t *>I<refcook>B<, uintptr_t *>I<defcook>B<,>\n"
+"B< const La_i86_regs *>I<inregs>B<, La_i86_retval "
+"*>I<outregs>B<,>\n"
+"B< const char *>I<symname>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:430
+msgid ""
+"This function is called when a PLT entry, made between two shared objects "
+"that have been marked for binding notification, returns. The function is "
+"called just before control returns to the caller of the PLT entry."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:453
+msgid ""
+"The I<inregs> argument points to a structure (defined in "
+"I<E<lt>link.hE<gt>>) containing the values of registers used for the call "
+"to this PLT entry. The I<outregs> argument points to a structure (defined "
+"in I<E<lt>link.hE<gt>>) containing return values for the call to this PLT "
+"entry. These values can be modified by the caller, and the changes will be "
+"visible to the caller of the PLT entry."
+msgstr ""
+
+#. This differs from Solaris, where an audit library that monitors
+#. symbol binding should return the value of the 'retval' argument
+#. (not provided by GNU, but equivalent to returning outregs->lrv_eax
+#. on (say) x86-32).
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:461
+msgid ""
+"In the current GNU implementation, the return value of B<la_pltexit>() is "
+"ignored."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:467
+msgid ""
+"This API is nonstandard, but very similar to the Solaris API, described in "
+"the Solaris I<Linker and Libraries Guide>, in the chapter I<Runtime Linker "
+"Auditing Interface>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:470
+msgid "Note the following differences from the Solaris dynamic linker auditing API:"
+msgstr ""
+
+#. type: IP
+#: build/C/man7/rtld-audit.7:470 build/C/man7/rtld-audit.7:474 build/C/man7/rtld-audit.7:482
+#, no-wrap
+msgid "*"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:474
+msgid ""
+"The Solaris B<la_objfilter>() interface is not supported by the GNU "
+"implementation."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:482
+msgid ""
+"The Solaris B<la_symbind32>() and B<la_pltexit>() functions do not provide "
+"a I<symname> argument."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:492
+msgid ""
+"The Solaris B<la_pltexit>() function does not provide I<inregs> and "
+"I<outregs> arguments (but does provide a I<retval> argument with the "
+"function return value)."
+msgstr ""
+
+#. FIXME . Specifying multiple audit libraries doesn't work on GNU.
+#. My simple tests on Solaris work okay, but not on Linux -- mtk, Jan 2009
+#. glibc bug filed: http://sourceware.org/bugzilla/show_bug.cgi?id=9733
+#. Reportedly, this is fixed on 16 Mar 2009 (i.e., for glibc 2.10)
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:502
+msgid ""
+"In glibc versions up to and include 2.9, specifying more than one audit "
+"library in B<LD_AUDIT> results in a run-time crash. This is reportedly "
+"fixed in glibc 2.10."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:506
+#, no-wrap
+msgid ""
+"#include E<lt>link.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:511
+#, no-wrap
+msgid ""
+"unsigned int\n"
+"la_version(unsigned int version)\n"
+"{\n"
+" printf(\"la_version(): %d\\en\", version);\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:514
+#, no-wrap
+msgid ""
+" return version;\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:527
+#, no-wrap
+msgid ""
"char *\n"
"la_objsearch(const char *name, uintptr_t *cookie, unsigned int flag)\n"
"{\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:518
+#: build/C/man7/rtld-audit.7:530
+#, no-wrap
+msgid ""
+" return name;\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:540
+#, no-wrap
+msgid ""
+"void\n"
+"la_activity (uintptr_t *cookie, unsigned int flag)\n"
+"{\n"
+" printf(\"la_activity(): cookie = %x; flag = %s\\en\", cookie,\n"
+" (flag == LA_ACT_CONSISTENT) ? \"LA_ACT_CONSISTENT\" :\n"
+" (flag == LA_ACT_ADD) ? \"LA_ACT_ADD\" :\n"
+" (flag == LA_ACT_DELETE) ? \"LA_ACT_DELETE\" :\n"
+" \"???\");\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:550
+#, no-wrap
+msgid ""
+"unsigned int\n"
+"la_objopen(struct link_map *map, Lmid_t lmid, uintptr_t *cookie)\n"
+"{\n"
+" printf(\"la_objopen(): loading \\e\"%s\\e\"; lmid = %s; "
+"cookie=%x\\en\",\n"
+" map-E<gt>l_name,\n"
+" (lmid == LM_ID_BASE) ? \"LM_ID_BASE\" :\n"
+" (lmid == LM_ID_NEWLM) ? \"LM_ID_NEWLM\" :\n"
+" \"???\",\n"
+" cookie);\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:553
+#, no-wrap
+msgid ""
+" return LA_FLG_BINDTO | LA_FLG_BINDFROM;\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:558
+#, no-wrap
+msgid ""
+"unsigned int\n"
+"la_objclose (uintptr_t *cookie)\n"
+"{\n"
+" printf(\"la_objclose(): %x\\en\", cookie);\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:561
+#, no-wrap
+msgid ""
+" return 0;\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:567
+#, no-wrap
+msgid ""
+"void\n"
+"la_preinit(uintptr_t *cookie)\n"
+"{\n"
+" printf(\"la_preinit(): %x\\en\", cookie);\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:576
+#, no-wrap
+msgid ""
+"uintptr_t\n"
+"la_symbind32(Elf32_Sym *sym, unsigned int ndx, uintptr_t *refcook,\n"
+" uintptr_t *defcook, unsigned int *flags, const char *symname)\n"
+"{\n"
+" printf(\"la_symbind32(): symname = %s; sym-E<gt>st_value = %p\\en\",\n"
+" symname, sym-E<gt>st_value);\n"
+" printf(\" ndx = %d; flags = 0x%x\", ndx, *flags);\n"
+" printf(\"; refcook = %x; defcook = %x\\en\", refcook, defcook);\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:579 build/C/man7/rtld-audit.7:591 build/C/man7/rtld-audit.7:601
+#, no-wrap
+msgid ""
+" return sym-E<gt>st_value;\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:588
+#, no-wrap
+msgid ""
+"uintptr_t\n"
+"la_symbind64(Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook,\n"
+" uintptr_t *defcook, unsigned int *flags, const char *symname)\n"
+"{\n"
+" printf(\"la_symbind64(): symname = %s; sym-E<gt>st_value = %p\\en\",\n"
+" symname, sym-E<gt>st_value);\n"
+" printf(\" ndx = %d; flags = 0x%x\", ndx, *flags);\n"
+" printf(\"; refcook = %x; defcook = %x\\en\", refcook, defcook);\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:598
+#, no-wrap
+msgid ""
+"Elf32_Addr\n"
+"la_i86_gnu_pltenter(Elf32_Sym *sym, unsigned int ndx,\n"
+" uintptr_t *refcook, uintptr_t *defcook, La_i86_regs *regs,\n"
+" unsigned int *flags, const char *symname, long int *framesizep)\n"
+"{\n"
+" printf(\"la_i86_gnu_pltenter(): %s (%p)\\en\", symname, "
+"sym-E<gt>st_value);\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man7/rtld-audit.7:607
+msgid "B<ldd>(1), B<dlopen>(3), B<ld.so>(8), B<ldconfig>(8)"
+msgstr ""
+
+#. type: TH
+#: build/C/man8/sln.8:25
+#, no-wrap
+msgid "SLN"
+msgstr ""
+
+#. type: TH
+#: build/C/man8/sln.8:25
+#, no-wrap
+msgid "2013-02-10"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/sln.8:28
+msgid "sln - create symbolic links"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/sln.8:30
+msgid "B<sln>I< source dest>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/sln.8:32
+msgid "B<sln>I< filelist>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/sln.8:42
+msgid ""
+"The B<sln> program creates symbolic links. Unlike the B<ln>(1) program, it "
+"is statically linked. This means that if for some reason the dynamic linker "
+"is not working, B<sln> can be used to make symbolic links to dynamic "
+"libraries."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/sln.8:48
+msgid ""
+"The command line has two forms. In the first form, it creates I<dest> as a "
+"new symbolic link to I<source>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/sln.8:56
+msgid ""
+"In the second form, I<filelist> is a list of space-separated pathname pairs, "
+"and the effect is as if B<sln> was executed once for each line of the file, "
+"with the two pathnames as the arguments."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/sln.8:60
+msgid "The B<sln> program supports no command-line options."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man8/sln.8:64
+msgid "B<ln>(1), B<ldconfig>(8), B<ld.so>(8)"
+msgstr ""
+
+#. type: TH
+#: build/C/man1/sprof.1:25
+#, no-wrap
+msgid "SPROF"
+msgstr ""
+
+#. type: TH
+#: build/C/man1/sprof.1:25
+#, no-wrap
+msgid "2014-06-24"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:28
+msgid "sprof - read and display shared object profiling data"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:32
#, no-wrap
+msgid "B<sprof> [I<option>]... I<shared-object-path> [I<profile-data-path>]\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:46
msgid ""
-" return name;\n"
-"}\n"
+"The B<sprof> command displays a profiling summary for the shared object "
+"specified as its first command-line argument. The profiling summary is "
+"created using previously generated profiling data in the (optional) second "
+"command-line argument. If the profiling data pathname is omitted, then "
+"B<sprof> will attempt to deduce it using the soname of the shared object, "
+"looking for a file with the name I<E<lt>sonameE<gt>.profile> in the current "
+"directory."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:49
+msgid ""
+"The following command-line options specify the profile output to be "
+"produced:"
+msgstr ""
+
+#. type: TP
+#: build/C/man1/sprof.1:49
+#, no-wrap
+msgid "B<-c>, B<--call-pairs>"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:528
+#: build/C/man1/sprof.1:54
+msgid ""
+"Print a list of pairs of call paths for the interfaces exported by the "
+"shared object, along with the number of times each path is used."
+msgstr ""
+
+#. type: TP
+#: build/C/man1/sprof.1:54
#, no-wrap
+msgid "B<-p>, B<--flat-profile>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:58
msgid ""
-"void\n"
-"la_activity (uintptr_t *cookie, unsigned int flag)\n"
+"Generate a flat profile of all of the functions in the monitored object, "
+"with counts and ticks."
+msgstr ""
+
+#. type: TP
+#: build/C/man1/sprof.1:58
+#, no-wrap
+msgid "B<-q>, B<--graph>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:61
+msgid "Generate a call graph."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:64
+msgid ""
+"If none of the above options is specified, then the default behavior is to "
+"display a flat profile and a call graph."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:66
+msgid "The following additional command-line options are available:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:69
+msgid "Display a summary of command-line options and arguments and exit."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:72
+msgid "Display a short usage message and exit."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:75
+msgid "Display the program version and exit."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:79
+msgid "The B<sprof> command is a GNU extension, not present in POSIX.1."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:85
+msgid ""
+"The following example demonstrates the use of B<sprof>. The example "
+"consists of a main program that calls two functions in a shared library. "
+"First, the code of the main program:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:90
+#, no-wrap
+msgid ""
+"$ B<cat prog.c>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:93
+#, no-wrap
+msgid ""
+"void x1(void);\n"
+"void x2(void);\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:101
+#, no-wrap
+msgid ""
+"int\n"
+"main(int argc, char *argv[])\n"
"{\n"
-" printf(\"la_activity(): cookie = %x; flag = %s\\en\", cookie,\n"
-" (flag == LA_ACT_CONSISTENT) ? \"LA_ACT_CONSISTENT\" :\n"
-" (flag == LA_ACT_ADD) ? \"LA_ACT_ADD\" :\n"
-" (flag == LA_ACT_DELETE) ? \"LA_ACT_DELETE\" :\n"
-" \"???\");\n"
+" x1();\n"
+" x2();\n"
+" exit(EXIT_SUCCESS);\n"
"}\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:538
+#: build/C/man1/sprof.1:110
+msgid ""
+"The functions I<x1()> and I<x2()> are defined in the following source file "
+"that is used to construct the shared library:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:115
#, no-wrap
msgid ""
-"unsigned int\n"
-"la_objopen(struct link_map *map, Lmid_t lmid, uintptr_t *cookie)\n"
+"$ B<cat libdemo.c>\n"
+"#include E<lt>unistd.hE<gt>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:120
+#, no-wrap
+msgid ""
+"void\n"
+"consumeCpu1(int lim)\n"
"{\n"
-" printf(\"la_objopen(): loading \\e\"%s\\e\"; lmid = %s; "
-"cookie=%x\\en\",\n"
-" map-E<gt>l_name,\n"
-" (lmid == LM_ID_BASE) ? \"LM_ID_BASE\" :\n"
-" (lmid == LM_ID_NEWLM) ? \"LM_ID_NEWLM\" :\n"
-" \"???\",\n"
-" cookie);\n"
+" int j;\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:541
+#: build/C/man1/sprof.1:124 build/C/man1/sprof.1:141
#, no-wrap
msgid ""
-" return LA_FLG_BINDTO | LA_FLG_BINDFROM;\n"
+" for (j = 0; j E<lt> lim; j++)\n"
+"\tgetppid();\n"
"}\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:546
+#: build/C/man1/sprof.1:128
#, no-wrap
msgid ""
-"unsigned int\n"
-"la_objclose (uintptr_t *cookie)\n"
-"{\n"
-" printf(\"la_objclose(): %x\\en\", cookie);\n"
+"void\n"
+"x1(void) {\n"
+" int j;\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:549
+#: build/C/man1/sprof.1:132
#, no-wrap
msgid ""
-" return 0;\n"
+" for (j = 0; j E<lt> 100; j++)\n"
+"\tconsumeCpu1(200000);\n"
"}\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:555
+#: build/C/man1/sprof.1:137
#, no-wrap
msgid ""
"void\n"
-"la_preinit(uintptr_t *cookie)\n"
+"consumeCpu2(int lim)\n"
"{\n"
-" printf(\"la_preinit(): %x\\en\", cookie);\n"
-"}\n"
+" int j;\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:564
+#: build/C/man1/sprof.1:146
#, no-wrap
msgid ""
-"uintptr_t\n"
-"la_symbind32(Elf32_Sym *sym, unsigned int ndx, uintptr_t *refcook,\n"
-" uintptr_t *defcook, unsigned int *flags, const char *symname)\n"
+"void\n"
+"x2(void)\n"
"{\n"
-" printf(\"la_symbind32(): symname = %s; sym-E<gt>st_value = %p\\en\",\n"
-" symname, sym-E<gt>st_value);\n"
-" printf(\" ndx = %d; flags = 0x%x\", ndx, *flags);\n"
-" printf(\"; refcook = %x; defcook = %x\\en\", refcook, defcook);\n"
+" int j;\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:567 build/C/man7/rtld-audit.7:579 build/C/man7/rtld-audit.7:589
+#: build/C/man1/sprof.1:150
#, no-wrap
msgid ""
-" return sym-E<gt>st_value;\n"
+" for (j = 0; j E<lt> 1000; j++)\n"
+"\tconsumeCpu2(10000);\n"
"}\n"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:576
+#: build/C/man1/sprof.1:157
+msgid ""
+"Now we construct the shared library with the real name I<libdemo.so.1.0.1>, "
+"and the soname I<libdemo.so.1>:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:162
#, no-wrap
msgid ""
-"uintptr_t\n"
-"la_symbind64(Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook,\n"
-" uintptr_t *defcook, unsigned int *flags, const char *symname)\n"
-"{\n"
-" printf(\"la_symbind64(): symname = %s; sym-E<gt>st_value = %p\\en\",\n"
-" symname, sym-E<gt>st_value);\n"
-" printf(\" ndx = %d; flags = 0x%x\", ndx, *flags);\n"
-" printf(\"; refcook = %x; defcook = %x\\en\", refcook, defcook);\n"
+"$ B<cc -g -fPIC -shared -Wl,-soname,libdemo.so.1 \\e>\n"
+" B<-o libdemo.so.1.0.1 libdemo.c>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:167
+msgid ""
+"Then we construct symbolic links for the library soname and the library "
+"linker name:"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:586
+#: build/C/man1/sprof.1:172
#, no-wrap
msgid ""
-"Elf32_Addr\n"
-"la_i86_gnu_pltenter(Elf32_Sym *sym, unsigned int ndx,\n"
-" uintptr_t *refcook, uintptr_t *defcook, La_i86_regs *regs,\n"
-" unsigned int *flags, const char *symname, long int *framesizep)\n"
-"{\n"
-" printf(\"la_i86_gnu_pltenter(): %s (%p)\\en\", symname, "
-"sym-E<gt>st_value);\n"
+"$ B<ln -sf libdemo.so.1.0.1 libdemo.so.1>\n"
+"$ B<ln -sf libdemo.so.1 libdemo.so>\n"
msgstr ""
-#. FIXME Specifying multiple audit libraries doesn't work on GNU.
-#. My simple tests on Solaris work okay, but not on Linux -- mtk, Jan 2009
-#. glibc bug filed: http://sourceware.org/bugzilla/show_bug.cgi?id=9733
-#. Reportedly, this is fixed on 16 Mar 2009 (i.e., for glibc 2.10)
#. type: Plain text
-#: build/C/man7/rtld-audit.7:600
+#: build/C/man1/sprof.1:177
msgid ""
-"In glibc versions up to and include 2.9, specifying more than one audit "
-"library in B<LD_AUDIT> results in a run-time crash. This is reportedly "
-"fixed in glibc 2.10."
+"Next, we compile the main program, linking it against the shared library, "
+"and then list the dynamic dependencies of the program:"
msgstr ""
#. type: Plain text
-#: build/C/man7/rtld-audit.7:605
-msgid "B<ldd>(1), B<dlopen>(3), B<ld.so>(8), B<ldconfig>(8)"
+#: build/C/man1/sprof.1:186
+#, no-wrap
+msgid ""
+"$ B<cc -g -o prog prog.c -L. -ldemo>\n"
+"$ B<ldd prog>\n"
+"\tlinux-vdso.so.1 =E<gt> (0x00007fff86d66000)\n"
+"\tlibdemo.so.1 =E<gt> not found\n"
+"\tlibc.so.6 =E<gt> /lib64/libc.so.6 (0x00007fd4dc138000)\n"
+"\t/lib64/ld-linux-x86-64.so.2 (0x00007fd4dc51f000)\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:193
+msgid ""
+"In order to get profiling information for the shared library, we define the "
+"environment variable B<LD_PROFILE> with the soname of the library:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:197
+#, no-wrap
+msgid "$ B<export LD_PROFILE=libdemo.so.1>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:204
+msgid ""
+"We then define the environment variable B<LD_PROFILE_OUTPUT> with the "
+"pathname of the directory where profile output should be written, and create "
+"that directory if it does not exist already:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:209
+#, no-wrap
+msgid ""
+"$ B<export LD_PROFILE_OUTPUT=$(pwd)/prof_data>\n"
+"$ B<mkdir -p $LD_PROFILE_OUTPUT>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:217
+msgid ""
+"B<LD_PROFILE> causes profiling output to be I<appended> to the output file "
+"if it already exists, so we ensure that there is no preexisting profiling "
+"data:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:221
+#, no-wrap
+msgid "$ B<rm -f $LD_PROFILE_OUTPUT/$LD_PROFILE.profile>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:227
+msgid ""
+"We then run the program to produce the profiling output, which is written to "
+"a file in the directory specified in B<LD_PROFILE_OUTPUT>:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:233
+#, no-wrap
+msgid ""
+"$ B<LD_LIBRARY_PATH=. ./prog>\n"
+"$ B<ls prof_data>\n"
+"libdemo.so.1.profile\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:239
+msgid ""
+"We then use the B<sprof -p> option to generate a flat profile with counts "
+"and ticks:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:244
+#, no-wrap
+msgid ""
+"$ B<sprof -p libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile>\n"
+"Flat profile:\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:252
+#, no-wrap
+msgid ""
+"Each sample counts as 0.01 seconds.\n"
+" % cumulative self self total\n"
+" time seconds seconds calls us/call us/call name\n"
+" 60.00 0.06 0.06 100 600.00 consumeCpu1\n"
+" 40.00 0.10 0.04 1000 40.00 consumeCpu2\n"
+" 0.00 0.10 0.00 1 0.00 x1\n"
+" 0.00 0.10 0.00 1 0.00 x2\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:258
+msgid "The B<sprof -q> option generates a call graph:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:262
+#, no-wrap
+msgid "$ B<sprof -q libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:264
+#, no-wrap
+msgid "index % time self children called name\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:279
+#, no-wrap
+msgid ""
+" 0.00 0.00 100/100 x1 [1]\n"
+"[0] 100.0 0.00 0.00 100 consumeCpu1 [0]\n"
+"-----------------------------------------------\n"
+" 0.00 0.00 1/1 E<lt>UNKNOWNE<gt>\n"
+"[1] 0.0 0.00 0.00 1 x1 [1]\n"
+" 0.00 0.00 100/100 consumeCpu1 [0]\n"
+"-----------------------------------------------\n"
+" 0.00 0.00 1000/1000 x2 [3]\n"
+"[2] 0.0 0.00 0.00 1000 consumeCpu2 [2]\n"
+"-----------------------------------------------\n"
+" 0.00 0.00 1/1 E<lt>UNKNOWNE<gt>\n"
+"[3] 0.0 0.00 0.00 1 x2 [3]\n"
+" 0.00 0.00 1000/1000 consumeCpu2 [2]\n"
+"-----------------------------------------------\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:285
+msgid ""
+"Above and below, the \"E<lt>UNKNOWNE<gt>\" strings represent identifiers "
+"that are outside of the profiled object (in this example, these are "
+"instances of I<main()>)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:289
+msgid ""
+"The B<sprof -c> option generates a list of call pairs and the number of "
+"their occurrences:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:297
+#, no-wrap
+msgid ""
+"$ B<sprof -c libdemo.so.1 $LD_PROFILE_OUTPUT/libdemo.so.1.profile>\n"
+"E<lt>UNKNOWNE<gt> x1 1\n"
+"x1 consumeCpu1 100\n"
+"E<lt>UNKNOWNE<gt> x2 1\n"
+"x2 consumeCpu2 1000\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man1/sprof.1:303
+msgid "B<gprof>(1), B<ldd>(1), B<ld.so>(8)"
msgstr ""