# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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 \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: TH #: build/C/man3/dl_iterate_phdr.3:25 #, no-wrap msgid "DL_ITERATE_PHDR" msgstr "" #. type: TH #: build/C/man3/dl_iterate_phdr.3:25 #, no-wrap msgid "2007-05-18" msgstr "" #. type: TH #: 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: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: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:28 msgid "dl_iterate_phdr - walk through list of shared objects" msgstr "" #. type: SH #: 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:32 #, no-wrap msgid "" "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n" "B<#include Elink.hE>\n" msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:37 #, no-wrap msgid "" "B\n" "B< int (*>IB<) (struct dl_phdr_info *>IB<,>\n" "B< size_t >IB<, void *>IB<),>\n" "B< void *>IB<);>\n" msgstr "" #. type: SH #: 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 "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:43 msgid "" "The B() function allows an application to inquire at run " "time to find out which shared objects it has loaded." msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:53 msgid "" "The B() function walks through the list of an " "application's shared objects and calls the function I once for " "each object, until either all shared objects have been processed or " "I returns a nonzero value." msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:70 msgid "" "Each call to I receives three arguments: I, which is a " "pointer to a structure containing information about the shared object; " "I, which is the size of the structure pointed to by I; and " "I, which is a copy of whatever value was passed by the calling program " "as the second argument (also named I) in the call to " "B()." msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:74 msgid "The I argument is a structure of the following type:" msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:86 #, no-wrap msgid "" "struct dl_phdr_info {\n" " ElfW(Addr) dlpi_addr; /* Base address of object */\n" " const char *dlpi_name; /* (Null-terminated) name of\n" " object */\n" " const ElfW(Phdr) *dlpi_phdr; /* Pointer to array of\n" " ELF program headers\n" " for this object */\n" " ElfW(Half) dlpi_phnum; /* # of items in I */\n" "};\n" msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:98 msgid "" "(The I() macro definition turns its argument into the name of an ELF " "data type suitable for the hardware architecture. For example, on a 32-bit " "platform, ElfW(Addr) yields the data type name Elf32_Addr. Further " "information on these types can be found in the Ielf.hE> and " "Ilink.hE> header files.)" msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:109 msgid "" "The I field indicates the base address of the shared object " "(i.e., the difference between the virtual memory address of the shared " "object and the offset of that object in the file from which it was loaded). " "The I field is a null-terminated string giving the pathname from " "which the shared object was loaded." msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:124 msgid "" "To understand the meaning of the I and I fields, we " "need to be aware that an ELF shared object consists of a number of segments, " "each of which has a corresponding program header describing the segment. " "The I field is a pointer to an array of the program headers for " "this shared object. The I field indicates the size of this " "array." msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:126 msgid "These program headers are structures of the following form:" msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:139 #, no-wrap msgid "" "typedef struct {\n" " Elf32_Word p_type; /* Segment type */\n" " Elf32_Off p_offset; /* Segment file offset */\n" " Elf32_Addr p_vaddr; /* Segment virtual address */\n" " Elf32_Addr p_paddr; /* Segment physical address */\n" " Elf32_Word p_filesz; /* Segment size in file */\n" " Elf32_Word p_memsz; /* Segment size in memory */\n" " Elf32_Word p_flags; /* Segment flags */\n" " Elf32_Word p_align; /* Segment alignment */\n" "} Elf32_Phdr;\n" msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:145 msgid "" "Note that we can calculate the location of a particular program header, " "I, in virtual memory using the formula:" msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:148 #, no-wrap msgid " addr == info-Edlpi_addr + info-Edlpi_phdr[x].p_vaddr;\n" msgstr "" #. type: SH #: build/C/man3/dl_iterate_phdr.3:149 #, no-wrap msgid "RETURN VALUE" msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:154 msgid "" "The B() function returns whatever value was returned by " "the last call to I." msgstr "" #. type: SH #: build/C/man3/dl_iterate_phdr.3:154 build/C/man1/pldd.1:50 #, no-wrap msgid "VERSIONS" msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:157 msgid "B() has been supported in glibc since version 2.2.4." msgstr "" #. type: SH #: 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 "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:161 msgid "" "The B() function is Linux-specific and should be avoided " "in portable applications." msgstr "" #. type: SH #: 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 "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:166 msgid "" "The following program displays a list of pathnames of the shared objects it " "has loaded. For each shared object, the program lists the virtual addresses " "at which the object's ELF segments are loaded." msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:172 #, no-wrap msgid "" "#define _GNU_SOURCE\n" "#include Elink.hE\n" "#include Estdlib.hE\n" "#include Estdio.hE\n" msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:177 #, no-wrap msgid "" "static int\n" "callback(struct dl_phdr_info *info, size_t size, void *data)\n" "{\n" " int j;\n" msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:180 #, no-wrap msgid "" " printf(\"name=%s (%d segments)\\en\", info-Edlpi_name,\n" " info-Edlpi_phnum);\n" msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:186 #, no-wrap msgid "" " for (j = 0; j E info-Edlpi_phnum; j++)\n" " printf(\"\\et\\et header %2d: address=%10p\\en\", j,\n" " (void *) (info-Edlpi_addr + " "info-Edlpi_phdr[j].p_vaddr));\n" " return 0;\n" "}\n" msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:191 #, no-wrap msgid "" "int\n" "main(int argc, char *argv[])\n" "{\n" " dl_iterate_phdr(callback, NULL);\n" msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:194 build/C/man3/end.3:107 #, no-wrap msgid "" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. type: SH #: 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:202 msgid "" "B(1), B(1), B(1), B(3), B(5), " "B(8)" msgstr "" #. type: Plain text #: build/C/man3/dl_iterate_phdr.3:205 msgid "" "I, available at various " "locations online." msgstr "" #. type: SH #: 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: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.79 of the Linux I 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 #: build/C/man3/dlopen.3:35 #, no-wrap msgid "DLOPEN" msgstr "" #. type: TH #: build/C/man3/dlopen.3:35 build/C/man1/ldd.1:14 #, no-wrap msgid "2014-10-02" msgstr "" #. type: TH #: 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:39 msgid "" "dladdr, dlclose, dlerror, dlopen, dlsym, dlvsym - programming interface to " "dynamic linking loader" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:41 msgid "B<#include Edlfcn.hE>" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:43 msgid "BIB<, int >IB<);>" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:45 msgid "B" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:47 msgid "BIB<, const char *>IB<);>" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:49 msgid "BIB<);>" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:51 msgid "Link with I<-ldl>." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:58 msgid "" "The four functions B(), B(), B(), B() " "implement the interface to the dynamic linking loader." msgstr "" #. type: SS #: build/C/man3/dlopen.3:58 #, no-wrap msgid "dlerror()" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:71 msgid "" "The function B() returns a human-readable string describing the " "most recent error that occurred from B(), B() or " "B() since the last call to B(). It returns NULL if no " "errors have occurred since initialization or since it was last called." msgstr "" #. type: SS #: build/C/man3/dlopen.3:71 #, no-wrap msgid "dlopen()" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:89 msgid "" "The function B() loads the dynamic library file named by the " "null-terminated string I and returns an opaque \"handle\" for the " "dynamic library. If I is NULL, then the returned handle is for " "the main program. If I contains a slash (\"/\"), then it is " "interpreted as a (relative or absolute) pathname. Otherwise, the dynamic " "linker searches for the library as follows (see B(8) for further " "details):" 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: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 "" #. type: Plain text #: build/C/man3/dlopen.3:93 msgid "" "(ELF only) If the executable file for the calling program contains a " "DT_RPATH tag, and does not contain a DT_RUNPATH tag, then the directories " "listed in the DT_RPATH tag are searched." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:100 msgid "" "If, at the time that the program was started, the environment variable " "B was defined to contain a colon-separated list of " "directories, then these are searched. (As a security measure this variable " "is ignored for set-user-ID and set-group-ID programs.)" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:104 msgid "" "(ELF only) If the executable file for the calling program contains a " "DT_RUNPATH tag, then the directories listed in that tag are searched." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:111 msgid "" "The cache file I (maintained by B(8)) is " "checked to see whether it contains an entry for I." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:117 msgid "The directories I and I are searched (in that order)." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:123 msgid "" "If the library has dependencies on other shared libraries, then these are " "also automatically loaded by the dynamic linker using the same rules. (This " "process may occur recursively, if those libraries in turn have dependencies, " "and so on.)" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:126 msgid "One of the following two values must be included in I:" msgstr "" #. type: TP #: build/C/man3/dlopen.3:126 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:134 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 performed only for function references; references to " "variables are always immediately bound when the library is loaded.)" msgstr "" #. type: TP #: build/C/man3/dlopen.3:134 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:143 msgid "" "If this value is specified, or the environment variable B is " "set to a nonempty string, all undefined symbols in the library are resolved " "before B() returns. If this cannot be done, an error is returned." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:146 msgid "Zero or more of the following values may also be ORed in I:" msgstr "" #. type: TP #: build/C/man3/dlopen.3:146 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:150 msgid "" "The symbols defined by this library will be made available for symbol " "resolution of subsequently loaded libraries." msgstr "" #. type: TP #: build/C/man3/dlopen.3:150 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:157 msgid "" "This is the converse of B, and the default if neither flag is " "specified. Symbols defined in this library are not made available to " "resolve references in subsequently loaded libraries." msgstr "" #. type: TP #: build/C/man3/dlopen.3:157 #, no-wrap msgid "B (since glibc 2.2)" msgstr "" #. (But it is present on Solaris.) #. type: Plain text #: build/C/man3/dlopen.3:167 msgid "" "Do not unload the library during B(). Consequently, the library's " "static variables are not reinitialized if the library is reloaded with " "B() at a later time. This flag is not specified in POSIX.1-2001." msgstr "" #. type: TP #: build/C/man3/dlopen.3:167 #, no-wrap msgid "B (since glibc 2.2)" msgstr "" #. (But it is present on Solaris.) #. type: Plain text #: build/C/man3/dlopen.3:182 msgid "" "Don't load the library. This can be used to test if the library is already " "resident (B() returns NULL if it is not, or the library's handle if " "it is resident). This flag can also be used to promote the flags on a " "library that is already loaded. For example, a library that was previously " "loaded with B can be reopened with B. This flag is not specified in POSIX.1-2001." msgstr "" #. type: TP #: build/C/man3/dlopen.3:182 #, no-wrap msgid "B (since glibc 2.3.4)" msgstr "" #. Inimitably described by UD in #. http://sources.redhat.com/ml/libc-hacker/2004-09/msg00083.html. #. type: Plain text #: build/C/man3/dlopen.3:192 msgid "" "Place the lookup scope of the symbols in this library ahead of the global " "scope. This means that a self-contained library will use its own symbols in " "preference to global symbols with the same name contained in libraries that " "have already been loaded. This flag is not specified in POSIX.1-2001." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:204 msgid "" "If I is NULL, then the returned handle is for the main program. " "When given to B(), 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() with the flag " "B." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:214 msgid "" "External references in the library are resolved using the libraries in that " "library's dependency list and any other libraries previously opened with the " "B flag. If the executable was linked with the flag " "\"-rdynamic\" (or, synonymously, \"--export-dynamic\"), then the global " "symbols in the executable will also be used to resolve references in a " "dynamically loaded library." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:232 msgid "" "If the same library is loaded again with B(), the same library " "handle is returned. The dl library maintains reference counts for library " "handles, so a dynamic library is not deallocated until B() has " "been called on it as many times as B() has succeeded on it. The " "B<_init>() routine, if present, is called only once. But a subsequent call " "with B may force symbol resolution for a library earlier loaded " "with B." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:236 msgid "If B() fails for any reason, it returns NULL." msgstr "" #. type: SS #: build/C/man3/dlopen.3:236 #, no-wrap msgid "dlsym()" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:265 msgid "" "The function B() takes a \"handle\" of a dynamic library returned by " "B() and the null-terminated symbol name, returning the address " "where that symbol is loaded into memory. If the symbol is not found, in the " "specified library or any of the libraries that were automatically loaded by " "B() when that library was loaded, B() returns NULL. (The " "search performed by B() is breadth first through the dependency tree " "of these libraries.) Since the value of the symbol could actually be NULL " "(so that a NULL return from B() need not indicate an error), the " "correct way to test for an error is to call B() to clear any old " "error conditions, then call B(), and then call B() again, " "saving its return value into a variable, and check whether this saved value " "is not NULL." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:277 msgid "" "There are two special pseudo-handles, B and B. The " "former will find the first occurrence of the desired symbol using the " "default library search order. The latter will find the next occurrence of a " "function in the search order after the current library. This allows one to " "provide a wrapper around a function in another shared library." msgstr "" #. type: SS #: build/C/man3/dlopen.3:277 #, no-wrap msgid "dlclose()" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:284 msgid "" "The function B() decrements the reference count on the dynamic " "library handle I. If the reference count drops to zero and no other " "loaded libraries use symbols in it, then the dynamic library is unloaded." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:288 msgid "The function B() returns 0 on success, and nonzero on error." msgstr "" #. type: SS #: build/C/man3/dlopen.3:288 #, no-wrap msgid "The obsolete symbols _init() and _fini()" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:306 msgid "" "The linker recognizes special symbols B<_init> and B<_fini>. If a dynamic " "library exports a routine named B<_init>(), then that code is executed after " "the loading, before B() returns. If the dynamic library exports a " "routine named B<_fini>(), then that routine is called just before the " "library is unloaded. In case you need to avoid linking against the system " "startup files, this can be done by using the B(1) I<-nostartfiles> " "command-line option." msgstr "" #. void _init(void) __attribute__((constructor)); #. void _fini(void) __attribute__((destructor)); #. type: Plain text #: build/C/man3/dlopen.3:317 msgid "" "Using these routines, or the gcc B<-nostartfiles> or B<-nostdlib> options, " "is not recommended. Their use may result in undesired behavior, since the " "constructor/destructor routines will not be executed (unless special " "measures are taken)." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:329 msgid "" "Instead, libraries should export routines using the " "B<__attribute__((constructor))> and B<__attribute__((destructor))> function " "attributes. See the gcc info pages for information on these. Constructor " "routines are executed before B() returns, and destructor routines " "are executed before B() returns." msgstr "" #. type: SS #: build/C/man3/dlopen.3:329 #, no-wrap msgid "Glibc extensions: dladdr() and dlvsym()" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:331 msgid "Glibc adds two functions not described by POSIX, with prototypes" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:335 #, no-wrap msgid "" "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n" "B<#include Edlfcn.hE>\n" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:337 #, no-wrap msgid "BIB<, Dl_info *>IB<);>\n" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:339 #, no-wrap msgid "" "BIB<, char *>IB<, char " "*>IB<);>\n" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:348 msgid "" "The function B() takes a function pointer and tries to resolve name " "and file where it is located. Information is stored in the I " "structure:" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:361 #, no-wrap msgid "" "typedef struct {\n" " const char *dli_fname; /* Pathname of shared object that\n" " contains address */\n" " void *dli_fbase; /* Address at which shared object\n" " is loaded */\n" " const char *dli_sname; /* Name of symbol whose definition\n" " overlaps I */\n" " void *dli_saddr; /* Exact address of symbol named\n" " in I */\n" "} Dl_info;\n" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:371 msgid "" "If no symbol matching I could be found, then I and " "I are set to NULL." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:374 msgid "B() returns 0 on error, and nonzero on success." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:381 msgid "" "The function B(), provided by glibc since version 2.1, does the same " "as B() but takes a version string as an additional argument." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:388 msgid "" "POSIX.1-2001 describes B(), B(), B(), and " "B()." msgstr "" #. type: SH #: 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 "" #. .LP #. The string returned by #. .BR dlerror () #. should not be modified. #. Some systems give the prototype as #. .sp #. .in +5 #. .B "const char *dlerror(void);" #. .in #. type: Plain text #: build/C/man3/dlopen.3:407 msgid "" "The symbols B and B are defined by " "Idlfcn.hE> only when B<_GNU_SOURCE> was defined before including " "it." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:412 msgid "" "Since glibc 2.2.3, B(3) can be used to register an exit handler " "that is automatically called when a library is unloaded." msgstr "" #. type: SS #: build/C/man3/dlopen.3:412 #, no-wrap msgid "History" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:418 msgid "" "The dlopen interface standard comes from SunOS. That system also has " "B(), but not B()." msgstr "" #. type: SH #: 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 "" #. type: Plain text #: build/C/man3/dlopen.3:430 msgid "" "Sometimes, the function pointers you pass to B() may surprise you. " "On some architectures (notably i386 and x86_64), I and " "I may end up pointing back at the object from which you called " "B(), even if the function used as an argument should come from a " "dynamically linked library." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:446 msgid "" "The problem is that the function pointer will still be resolved at compile " "time, but merely point to the I (Procedure Linkage Table) section of " "the original object (which dispatches the call after asking the dynamic " "linker to resolve the symbol). To work around this, you can try to compile " "the code to be position-independent: then, the compiler cannot prepare the " "pointer at compile time anymore and today's B(1) will generate code " "that just loads the final symbol address from the I (Global Offset " "Table) at run time before passing it to B()." msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:448 msgid "Load the math library, and print the cosine of 2.0:" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:453 #, no-wrap msgid "" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Edlfcn.hE\n" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:460 #, no-wrap msgid "" "int\n" "main(int argc, char **argv)\n" "{\n" " void *handle;\n" " double (*cosine)(double);\n" " char *error;\n" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:466 #, no-wrap msgid "" " handle = dlopen(\"libm.so\", RTLD_LAZY);\n" " if (!handle) {\n" " fprintf(stderr, \"%s\\en\", dlerror());\n" " exit(EXIT_FAILURE);\n" " }\n" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:468 #, no-wrap msgid " dlerror(); /* Clear any existing error */\n" 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 "" " /* 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 "" #. 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:489 #, no-wrap 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:495 #, no-wrap msgid "" " 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:500 #, no-wrap msgid "" " printf(\"%f\\en\", (*cosine)(2.0));\n" " dlclose(handle);\n" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. type: Plain text #: 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:507 #, no-wrap msgid " gcc -rdynamic -o foo foo.c -ldl\n" msgstr "" #. type: Plain text #: build/C/man3/dlopen.3:517 msgid "" "Libraries exporting B<_init>() and B<_fini>() will want to be compiled as " "follows, using I as the example name:" msgstr "" #. type: Plain text #: 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:529 msgid "" "B(1), B(1), B(1), B(3), B(7), " "B(8), B(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:35 #, no-wrap msgid "ELF" msgstr "" #. type: TH #: build/C/man5/elf.5:35 #, no-wrap msgid "2013-04-17" msgstr "" #. type: Plain text #: build/C/man5/elf.5:38 msgid "elf - format of Executable and Linking Format (ELF) files" msgstr "" #. .B #include #. type: Plain text #: build/C/man5/elf.5:42 #, no-wrap msgid "B<#include Eelf.hE>\n" msgstr "" #. type: Plain text #: build/C/man5/elf.5:50 msgid "" "The header file Ielf.hE> defines the format of ELF executable " "binary files. Amongst these files are normal executable files, relocatable " "object files, core files and shared libraries." msgstr "" #. type: Plain text #: 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 " "ELF header is always at offset zero of the file. The program header table " "and the section header table's offset in the file are defined in the ELF " "header. The two tables describe the rest of the particularities of the " "file." msgstr "" #. Applications which wish to process ELF binary files for their native #. architecture only should include #. .I #. in their source code. #. These applications should need to refer to #. all the types and structures by their generic names #. "Elf_xxx" #. and to the macros by #. ELF_xxx". #. Applications written this way can be compiled on any architecture, #. regardless of whether the host is 32-bit or 64-bit. #. .PP #. Should an application need to process ELF files of an unknown #. architecture, then the application needs to explicitly use either #. "Elf32_xxx" #. or #. "Elf64_xxx" #. type and structure names. #. Likewise, the macros need to be identified by #. "ELF32_xxx" #. or #. "ELF64_xxx". #. .PP #. type: Plain text #: 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 " "symbol tables." msgstr "" #. type: Plain text #: build/C/man5/elf.5:98 msgid "" "The following types are used for N-bit architectures (N=32,64, I " "stands for I or I, I stands for I or " "I):" msgstr "" #. Elf32_Size Unsigned object size #. type: Plain text #: build/C/man5/elf.5:112 #, no-wrap msgid "" "ElfN_Addr Unsigned program address, uintN_t\n" "ElfN_Off Unsigned file offset, uintN_t\n" "ElfN_Section Unsigned section index, uint16_t\n" "ElfN_Versym Unsigned version symbol information, uint16_t\n" "Elf_Byte unsigned char\n" "ElfN_Half uint16_t\n" "ElfN_Sword int32_t\n" "ElfN_Word uint32_t\n" "ElfN_Sxword int64_t\n" "ElfN_Xword uint64_t\n" msgstr "" #. type: Plain text #: build/C/man5/elf.5:127 msgid "" "(Note: The *BSD terminology is a bit different. There I is " "twice as large as I, and I is used for " "I. In order to avoid confusion these types are replaced by " "explicit ones in the below.)" msgstr "" #. type: Plain text #: 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, and so on." msgstr "" #. type: Plain text #: build/C/man5/elf.5:139 msgid "The ELF header is described by the type I or I:" msgstr "" #. type: Plain text #: build/C/man5/elf.5:143 #, no-wrap msgid "#define EI_NIDENT 16\n" msgstr "" #. type: Plain text #: build/C/man5/elf.5:160 #, no-wrap msgid "" "typedef struct {\n" " unsigned char e_ident[EI_NIDENT];\n" " uint16_t e_type;\n" " uint16_t e_machine;\n" " uint32_t e_version;\n" " ElfN_Addr e_entry;\n" " ElfN_Off e_phoff;\n" " ElfN_Off e_shoff;\n" " uint32_t e_flags;\n" " uint16_t e_ehsize;\n" " uint16_t e_phentsize;\n" " uint16_t e_phnum;\n" " uint16_t e_shentsize;\n" " uint16_t e_shnum;\n" " uint16_t e_shstrndx;\n" "} ElfN_Ehdr;\n" msgstr "" #. .Bl -tag -width "e_phentsize" #. type: Plain text #: build/C/man5/elf.5:165 msgid "The fields have the following meanings:" msgstr "" #. type: TP #: build/C/man5/elf.5:165 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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 " "named by macros, which start with the prefix B and may contain values " "which start with the prefix B. The following macros are defined:" msgstr "" #. type: TP #: build/C/man5/elf.5:177 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:183 msgid "" "The first byte of the magic number. It must be filled with B. (0: " "0x7f)" msgstr "" #. type: TP #: build/C/man5/elf.5:183 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:189 msgid "" "The second byte of the magic number. It must be filled with B. " "(1: \\(aqE\\(aq)" msgstr "" #. type: TP #: build/C/man5/elf.5:189 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:195 msgid "" "The third byte of the magic number. It must be filled with B. (2: " "\\(aqL\\(aq)" msgstr "" #. type: TP #: build/C/man5/elf.5:195 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:201 msgid "" "The fourth byte of the magic number. It must be filled with B. " "(3: \\(aqF\\(aq)" msgstr "" #. type: TP #: build/C/man5/elf.5:201 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:204 msgid "The fifth byte identifies the architecture for this binary:" msgstr "" #. type: TP #: build/C/man5/elf.5:206 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:210 msgid "This class is invalid." msgstr "" #. type: TP #: build/C/man5/elf.5:210 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:215 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:218 msgid "This defines the 64-bit architecture." msgstr "" #. type: TP #: build/C/man5/elf.5:221 #, no-wrap msgid "B" msgstr "" #. .Bl -tag -width "ELFDATA2LSB" -compact #. type: Plain text #: 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:228 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:232 msgid "Unknown data format." msgstr "" #. type: TP #: build/C/man5/elf.5:232 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:235 msgid "Two's complement, little-endian." msgstr "" #. type: TP #: build/C/man5/elf.5:235 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:238 msgid "Two's complement, big-endian." msgstr "" #. type: TP #: build/C/man5/elf.5:241 #, no-wrap msgid "B" msgstr "" #. .Bl -tag -width "EV_CURRENT" -compact #. type: Plain text #: 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:247 build/C/man5/elf.5:501 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:250 build/C/man5/elf.5:505 msgid "Invalid version." msgstr "" #. type: TP #: build/C/man5/elf.5:250 build/C/man5/elf.5:505 #, no-wrap msgid "B" msgstr "" #. .El #. type: Plain text #: build/C/man5/elf.5:253 build/C/man5/elf.5:509 msgid "Current version." msgstr "" #. type: TP #: build/C/man5/elf.5:256 #, no-wrap msgid "B" msgstr "" #. .Bl -tag -width "ELFOSABI_STANDALONE" -compact #. type: Plain text #: build/C/man5/elf.5:265 msgid "" "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. For example:" msgstr "" #. type: TP #: build/C/man5/elf.5:266 #, no-wrap msgid "B" msgstr "" #. 0 #. type: Plain text #: build/C/man5/elf.5:271 msgid "Same as ELFOSABI_SYSV" msgstr "" #. type: TP #: build/C/man5/elf.5:271 #, no-wrap msgid "B" msgstr "" #. 0 #. synonym: ELFOSABI_NONE #. type: Plain text #: build/C/man5/elf.5:276 msgid "UNIX System V ABI." msgstr "" #. type: TP #: build/C/man5/elf.5:276 #, no-wrap msgid "B" msgstr "" #. 1 #. type: Plain text #: build/C/man5/elf.5:280 msgid "HP-UX ABI." msgstr "" #. type: TP #: build/C/man5/elf.5:280 #, no-wrap msgid "B" msgstr "" #. 2 #. type: Plain text #: build/C/man5/elf.5:284 msgid "NetBSD ABI." msgstr "" #. type: TP #: build/C/man5/elf.5:284 #, no-wrap msgid "B" msgstr "" #. 3 #. .TP #. .BR ELFOSABI_HURD #. Hurd ABI. #. 4 #. .TP #. .BR ELFOSABI_86OPEN #. 86Open Common IA32 ABI. #. 5 #. type: Plain text #: build/C/man5/elf.5:296 msgid "Linux ABI." msgstr "" #. type: TP #: build/C/man5/elf.5:296 #, no-wrap msgid "B" msgstr "" #. 6 #. .TP #. .BR ELFOSABI_MONTEREY #. Monterey project ABI. #. Now replaced by #. ELFOSABI_AIX #. 7 #. type: Plain text #: build/C/man5/elf.5:306 msgid "Solaris ABI." msgstr "" #. type: TP #: build/C/man5/elf.5:306 #, no-wrap msgid "B" msgstr "" #. 8 #. type: Plain text #: build/C/man5/elf.5:310 msgid "IRIX ABI." msgstr "" #. type: TP #: build/C/man5/elf.5:310 #, no-wrap msgid "B" msgstr "" #. 9 #. type: Plain text #: build/C/man5/elf.5:314 msgid "FreeBSD ABI." msgstr "" #. type: TP #: build/C/man5/elf.5:314 #, no-wrap msgid "B" msgstr "" #. 10 #. ELFOSABI_MODESTO #. 11 #. ELFOSABI_OPENBSD #. 12 #. type: Plain text #: build/C/man5/elf.5:322 msgid "TRU64 UNIX ABI." msgstr "" #. type: TP #: build/C/man5/elf.5:322 #, no-wrap msgid "B" msgstr "" #. 97 #. type: Plain text #: build/C/man5/elf.5:326 msgid "ARM architecture ABI." msgstr "" #. type: TP #: build/C/man5/elf.5:326 #, no-wrap msgid "B" msgstr "" #. 255 #. .El #. type: Plain text #: build/C/man5/elf.5:331 msgid "Stand-alone (embedded) ABI." msgstr "" #. type: TP #: build/C/man5/elf.5:333 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:343 msgid "" "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 field. Applications conforming to this " "specification use the value 0." msgstr "" #. type: TP #: build/C/man5/elf.5:343 #, no-wrap msgid "B" msgstr "" #. As reported by Yuri Kozlov and confirmed by Mike Frysinger, EI_BRAND is #. not in GABI (http://www.sco.com/developers/gabi/latest/ch4.eheader.html) #. It looks to be a BSDism #. .TP #. .BR EI_BRAND #. Start of architecture identification. #. type: Plain text #: 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 will change in the " "future if currently unused bytes are given meanings." msgstr "" #. type: TP #: build/C/man5/elf.5:359 #, no-wrap msgid "B" msgstr "" #. .El #. type: Plain text #: build/C/man5/elf.5:365 msgid "The size of the I array." msgstr "" #. type: TP #: build/C/man5/elf.5:366 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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:371 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:375 msgid "An unknown type." msgstr "" #. type: TP #: build/C/man5/elf.5:375 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:378 msgid "A relocatable file." msgstr "" #. type: TP #: build/C/man5/elf.5:378 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:381 msgid "An executable file." msgstr "" #. type: TP #: build/C/man5/elf.5:381 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:384 msgid "A shared object." msgstr "" #. type: TP #: build/C/man5/elf.5:384 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:387 msgid "A core file." msgstr "" #. type: TP #: build/C/man5/elf.5:390 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: build/C/man5/elf.5:394 msgid "" "This member specifies the required architecture for an individual file. For " "example:" msgstr "" #. type: TP #: build/C/man5/elf.5:396 #, no-wrap msgid "B" msgstr "" #. 0 #. type: Plain text #: build/C/man5/elf.5:401 msgid "An unknown machine." msgstr "" #. type: TP #: build/C/man5/elf.5:401 #, no-wrap msgid "B" msgstr "" #. 1 #. type: Plain text #: build/C/man5/elf.5:405 msgid "AT&T WE 32100." msgstr "" #. type: TP #: build/C/man5/elf.5:405 #, no-wrap msgid "B" msgstr "" #. 2 #. type: Plain text #: build/C/man5/elf.5:409 msgid "Sun Microsystems SPARC." msgstr "" #. type: TP #: build/C/man5/elf.5:409 #, no-wrap msgid "B" msgstr "" #. 3 #. type: Plain text #: build/C/man5/elf.5:413 msgid "Intel 80386." msgstr "" #. type: TP #: build/C/man5/elf.5:413 #, no-wrap msgid "B" msgstr "" #. 4 #. type: Plain text #: build/C/man5/elf.5:417 msgid "Motorola 68000." msgstr "" #. type: TP #: build/C/man5/elf.5:417 #, no-wrap msgid "B" msgstr "" #. 5 #. .TP #. .BR EM_486 #. Intel 80486. #. 6 #. type: Plain text #: build/C/man5/elf.5:425 msgid "Motorola 88000." msgstr "" #. type: TP #: build/C/man5/elf.5:425 #, no-wrap msgid "B" msgstr "" #. 7 #. type: Plain text #: build/C/man5/elf.5:429 msgid "Intel 80860." msgstr "" #. type: TP #: build/C/man5/elf.5:429 #, no-wrap msgid "B" msgstr "" #. 8 #. EM_S370 #. 9 #. .TP #. .BR EM_MIPS_RS4_BE #. MIPS RS4000 (big-endian only). Deprecated. #. 10 #. EM_MIPS_RS3_LE (MIPS R3000 little-endian) #. 10 #. type: Plain text #: build/C/man5/elf.5:441 msgid "MIPS RS3000 (big-endian only)." msgstr "" #. type: TP #: build/C/man5/elf.5:441 #, no-wrap msgid "B" msgstr "" #. 15 #. type: Plain text #: build/C/man5/elf.5:445 msgid "HP/PA." msgstr "" #. type: TP #: build/C/man5/elf.5:445 #, no-wrap msgid "B" msgstr "" #. 18 #. type: Plain text #: build/C/man5/elf.5:449 msgid "SPARC with enhanced instruction set." msgstr "" #. type: TP #: build/C/man5/elf.5:449 #, no-wrap msgid "B" msgstr "" #. 20 #. type: Plain text #: build/C/man5/elf.5:453 msgid "PowerPC." msgstr "" #. type: TP #: build/C/man5/elf.5:453 #, no-wrap msgid "B" msgstr "" #. 21 #. type: Plain text #: build/C/man5/elf.5:457 msgid "PowerPC 64-bit." msgstr "" #. type: TP #: build/C/man5/elf.5:457 #, no-wrap msgid "B" msgstr "" #. 22 #. type: Plain text #: build/C/man5/elf.5:461 msgid "IBM S/390" msgstr "" #. type: TP #: build/C/man5/elf.5:461 #, no-wrap msgid "B" msgstr "" #. 40 #. type: Plain text #: build/C/man5/elf.5:465 msgid "Advanced RISC Machines" msgstr "" #. type: TP #: build/C/man5/elf.5:465 #, no-wrap msgid "B" msgstr "" #. 42 #. type: Plain text #: build/C/man5/elf.5:469 msgid "Renesas SuperH" msgstr "" #. type: TP #: build/C/man5/elf.5:469 #, no-wrap msgid "B" msgstr "" #. 43 #. type: Plain text #: build/C/man5/elf.5:473 msgid "SPARC v9 64-bit." msgstr "" #. type: TP #: build/C/man5/elf.5:473 #, no-wrap msgid "B" msgstr "" #. 50 #. type: Plain text #: build/C/man5/elf.5:477 msgid "Intel Itanium" msgstr "" #. type: TP #: build/C/man5/elf.5:477 #, no-wrap msgid "B" msgstr "" #. 62 #. type: Plain text #: build/C/man5/elf.5:481 msgid "AMD x86-64" msgstr "" #. type: TP #: build/C/man5/elf.5:481 #, no-wrap msgid "B" msgstr "" #. 75 #. EM_CRIS #. 76 #. .TP #. .BR EM_ALPHA #. Compaq [DEC] Alpha. #. .TP #. .BR EM_ALPHA_EXP #. Compaq [DEC] Alpha with enhanced instruction set. #. type: Plain text #: build/C/man5/elf.5:493 msgid "DEC Vax." msgstr "" #. type: TP #: build/C/man5/elf.5:496 #, no-wrap msgid "I" msgstr "" #. .Bl -tag -width "EV_CURRENT" -compact #. type: Plain text #: build/C/man5/elf.5:500 msgid "This member identifies the file version:" msgstr "" #. type: TP #: build/C/man5/elf.5:511 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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 " "point, this member holds zero." msgstr "" #. type: TP #: build/C/man5/elf.5:517 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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:522 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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." msgstr "" #. type: TP #: build/C/man5/elf.5:527 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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 " "defined." msgstr "" #. type: TP #: build/C/man5/elf.5:532 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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:535 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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:539 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: build/C/man5/elf.5:552 msgid "" "This member holds the number of entries in the program header table. Thus " "the product of I and I gives the table's size in " "bytes. If a file has no program header, I holds the value zero." msgstr "" #. This is a Linux extension, added in Linux 2.6.34. #. .Bl -tag -width "PN_XNUM" #. type: Plain text #: build/C/man5/elf.5:566 msgid "" "If the number of entries in the program header table is larger than or equal " "to B (0xffff), this member holds B (0xffff) and the real " "number of entries in the program header table is held in the I " "member of the initial entry in section header table. Otherwise, the " "I member of the initial entry contains the value zero." msgstr "" #. type: TP #: build/C/man5/elf.5:567 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:572 msgid "" "This is defined as 0xffff, the largest number I can have, " "specifying where the actual number of program headers is assigned." msgstr "" #. type: TP #: build/C/man5/elf.5:576 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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:581 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: build/C/man5/elf.5:594 msgid "" "This member holds the number of entries in the section header table. Thus " "the product of I and I gives the section header " "table's size in bytes. If a file has no section header table, I " "holds the value of zero." msgstr "" #. type: Plain text #: build/C/man5/elf.5:606 msgid "" "If the number of entries in the section header table is larger than or equal " "to B (0xff00), I holds the value zero and the real " "number of entries in the section header table is held in the I " "member of the initial entry in section header table. Otherwise, the " "I member of the initial entry in the section header table holds the " "value zero." msgstr "" #. type: TP #: build/C/man5/elf.5:606 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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 " "table, this member holds the value B." msgstr "" #. type: Plain text #: build/C/man5/elf.5:625 msgid "" "If the index of section name string table section is larger than or equal to " "B (0xff00), this member holds B (0xffff) and the " "real index of the section name string table section is held in the " "I member of the initial entry in section header table. Otherwise, " "the I member of the initial entry in section header table contains " "the value zero." msgstr "" #. type: TP #: build/C/man5/elf.5:627 build/C/man5/elf.5:914 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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 " "number B is an undefined symbol." msgstr "" #. type: TP #: build/C/man5/elf.5:636 build/C/man5/elf.5:918 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:639 build/C/man5/elf.5:921 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:644 build/C/man5/elf.5:926 msgid "" "Values greater than or equal to B are reserved for " "processor-specific semantics." msgstr "" #. type: TP #: build/C/man5/elf.5:644 build/C/man5/elf.5:926 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:649 build/C/man5/elf.5:931 msgid "" "Values less than or equal to B are reserved for " "processor-specific semantics." msgstr "" #. type: TP #: build/C/man5/elf.5:649 build/C/man5/elf.5:931 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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 have absolute " "values and are not affected by relocation." msgstr "" #. type: TP #: build/C/man5/elf.5:656 build/C/man5/elf.5:938 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:660 build/C/man5/elf.5:942 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:673 msgid "" "This value specifies the upper bound of the range of reserved indices " "between B and B, inclusive; the values do not " "reference the section header table. That is, the section header table does " "I contain entries for the reserved indices." msgstr "" #. type: Plain text #: 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 " "to prepare the program for execution. An object file I contains " "one or more I. Program headers are meaningful only for executable " "and shared object files. A file specifies its own program header size with " "the ELF header's I and I members. The ELF program " "header is described by the type I or I depending on " "the architecture:" msgstr "" #. type: Plain text #: build/C/man5/elf.5:708 #, no-wrap msgid "" "typedef struct {\n" " uint32_t p_type;\n" " Elf32_Off p_offset;\n" " Elf32_Addr p_vaddr;\n" " Elf32_Addr p_paddr;\n" " uint32_t p_filesz;\n" " uint32_t p_memsz;\n" " uint32_t p_flags;\n" " uint32_t p_align;\n" "} Elf32_Phdr;\n" msgstr "" #. type: Plain text #: build/C/man5/elf.5:723 #, no-wrap msgid "" "typedef struct {\n" " uint32_t p_type;\n" " uint32_t p_flags;\n" " Elf64_Off p_offset;\n" " Elf64_Addr p_vaddr;\n" " Elf64_Addr p_paddr;\n" " uint64_t p_filesz;\n" " uint64_t p_memsz;\n" " uint64_t p_align;\n" "} Elf64_Phdr;\n" msgstr "" #. .Bl -tag -width "p_offset" #. type: Plain text #: 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 member in the total struct." msgstr "" #. type: TP #: build/C/man5/elf.5:731 #, no-wrap msgid "I" msgstr "" #. .Bl -tag -width "PT_DYNAMIC" #. type: Plain text #: 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:737 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:741 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:762 msgid "" "The array element specifies a loadable segment, described by I and " "I. The bytes from the file are mapped to the beginning of the " "memory segment. If the segment's memory size I is larger than the " "file size I, the \"extra\" bytes are defined to hold the value 0 " "and to follow the segment's initialized area. The file size may not be " "larger than the memory size. Loadable segment entries in the program header " "table appear in ascending order, sorted on the I member." msgstr "" #. type: TP #: build/C/man5/elf.5:762 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:765 msgid "The array element specifies dynamic linking information." msgstr "" #. type: TP #: build/C/man5/elf.5:765 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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 " "for executable files (though it may occur for shared objects). However it " "may not occur more than once in a file. If it is present, it must precede " "any loadable segment entry." msgstr "" #. type: TP #: build/C/man5/elf.5:773 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:776 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:781 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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 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:790 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:795 msgid "" "Values greater than or equal to B are reserved for " "processor-specific semantics." msgstr "" #. type: TP #: build/C/man5/elf.5:795 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:800 msgid "" "Values less than or equal to B are reserved for " "processor-specific semantics." msgstr "" #. type: TP #: build/C/man5/elf.5:800 #, no-wrap msgid "B" 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 member." msgstr "" #. type: TP #: build/C/man5/elf.5:808 #, no-wrap msgid "I" 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:812 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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:816 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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 " "used and must be zero." msgstr "" #. type: TP #: build/C/man5/elf.5:824 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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:828 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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:832 #, no-wrap msgid "I" msgstr "" #. .Bl -tag -width "PF_X" -compact #. type: Plain text #: 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:837 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:841 msgid "An executable segment." msgstr "" #. type: TP #: build/C/man5/elf.5:841 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:844 msgid "A writable segment." msgstr "" #. type: TP #: build/C/man5/elf.5:844 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:847 msgid "A readable segment." msgstr "" #. type: Plain text #: build/C/man5/elf.5:860 msgid "" "A text segment commonly has the flags B and B. A data segment " "commonly has B, B and B." msgstr "" #. type: TP #: build/C/man5/elf.5:860 #, no-wrap msgid "I" msgstr "" #. .El #. type: Plain text #: 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 " "I and I, modulo the page size. Values of zero and one " "mean no alignment is required. Otherwise, I should be a positive, " "integral power of two, and I should equal I, modulo " "I." msgstr "" #. type: Plain text #: 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 or I " "structures. The ELF header's I member gives the byte offset from " "the beginning of the file to the section header table. I holds the " "number of entries the section header table contains. I holds " "the size in bytes of each entry." msgstr "" #. .Bl -tag -width "SHN_LORESERVE" #. type: Plain text #: 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 " "B and B. The initial entry is used in ELF " "extensions for I, I and I; in other cases, each " "field in the initial entry is set to zero. An object file does not have " "sections for these special indices:" msgstr "" #. type: Plain text #: build/C/man5/elf.5:918 msgid "" "This value marks an undefined, missing, irrelevant, or otherwise meaningless " "section reference." msgstr "" #. type: Plain text #: 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 has an " "absolute value and is not affected by relocation." msgstr "" #. type: Plain text #: 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:953 msgid "" "This value specifies the upper bound of the range of reserved indices. The " "system reserves indices between B and B, " "inclusive. The section header table does not contain entries for the " "reserved indices." msgstr "" #. type: Plain text #: build/C/man5/elf.5:957 msgid "The section header has the following structure:" msgstr "" #. type: Plain text #: build/C/man5/elf.5:972 #, no-wrap msgid "" "typedef struct {\n" " uint32_t sh_name;\n" " uint32_t sh_type;\n" " uint32_t sh_flags;\n" " Elf32_Addr sh_addr;\n" " Elf32_Off sh_offset;\n" " uint32_t sh_size;\n" " uint32_t sh_link;\n" " uint32_t sh_info;\n" " uint32_t sh_addralign;\n" " uint32_t sh_entsize;\n" "} Elf32_Shdr;\n" msgstr "" #. type: Plain text #: build/C/man5/elf.5:989 #, no-wrap msgid "" "typedef struct {\n" " uint32_t sh_name;\n" " uint32_t sh_type;\n" " uint64_t sh_flags;\n" " Elf64_Addr sh_addr;\n" " Elf64_Off sh_offset;\n" " uint64_t sh_size;\n" " uint32_t sh_link;\n" " uint32_t sh_info;\n" " uint64_t sh_addralign;\n" " uint64_t sh_entsize;\n" "} Elf64_Shdr;\n" msgstr "" #. .Bl -tag -width "sh_addralign" #. type: Plain text #: 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:994 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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 " "null-terminated string." msgstr "" #. type: TP #: build/C/man5/elf.5:1000 #, no-wrap msgid "I" msgstr "" #. .Bl -tag -width "SHT_PROGBITS" #. type: Plain text #: build/C/man5/elf.5:1004 msgid "This member categorizes the section's contents and semantics." msgstr "" #. type: TP #: build/C/man5/elf.5:1005 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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 " "values." msgstr "" #. type: TP #: build/C/man5/elf.5:1012 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:1016 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1029 msgid "" "This section holds a symbol table. Typically, B provides " "symbols for link editing, though it may also be used for dynamic linking. " "As a complete symbol table, it may contain many symbols unnecessary for " "dynamic linking. An object file can also contain a B section." msgstr "" #. type: TP #: build/C/man5/elf.5:1029 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:1034 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1042 msgid "" "This section holds relocation entries with explicit addends, such as type " "I for the 32-bit class of object files. An object may have " "multiple relocation sections." msgstr "" #. type: TP #: build/C/man5/elf.5:1042 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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 " "hash table." msgstr "" #. type: TP #: build/C/man5/elf.5:1049 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:1054 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:1057 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1065 msgid "" "A section of this type occupies no space in the file but otherwise resembles " "B. Although this section contains no bytes, the I " "member contains the conceptual file offset." msgstr "" #. type: TP #: build/C/man5/elf.5:1065 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1073 msgid "" "This section holds relocation offsets without explicit addends, such as type " "I for the 32-bit class of object files. An object file may have " "multiple relocation sections." msgstr "" #. type: TP #: build/C/man5/elf.5:1073 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1076 msgid "This section is reserved but has unspecified semantics." msgstr "" #. type: TP #: build/C/man5/elf.5:1076 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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 section." msgstr "" #. type: TP #: build/C/man5/elf.5:1083 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1088 msgid "" "This value up to and including B is reserved for " "processor-specific semantics." msgstr "" #. type: TP #: build/C/man5/elf.5:1088 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1093 msgid "" "This value down to and including B is reserved for " "processor-specific semantics." msgstr "" #. type: TP #: build/C/man5/elf.5:1093 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:1097 #, no-wrap msgid "B" msgstr "" #. .El #. type: Plain text #: 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 and B " "may be used by the application, without conflicting with current or future " "system-defined section types." msgstr "" #. type: TP #: build/C/man5/elf.5:1109 #, no-wrap msgid "I" msgstr "" #. .Bl -tag -width "SHF_EXECINSTR" -compact #. type: Plain text #: build/C/man5/elf.5:1122 msgid "" "Sections support one-bit flags that describe miscellaneous attributes. If a " "flag bit is set in I, the attribute is \"on\" for the section. " "Otherwise, the attribute is \"off\" or does not apply. Undefined attributes " "are set to zero." msgstr "" #. type: TP #: build/C/man5/elf.5:1123 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:1127 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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 " "attribute is off for those sections." msgstr "" #. type: TP #: build/C/man5/elf.5:1134 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1137 msgid "This section contains executable machine instructions." msgstr "" #. type: TP #: build/C/man5/elf.5:1137 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:1143 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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 " "member contains zero." msgstr "" #. type: TP #: build/C/man5/elf.5:1148 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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, occupies no " "space in the file, and its I member locates the conceptual " "placement in the file." msgstr "" #. type: TP #: build/C/man5/elf.5:1157 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1169 msgid "" "This member holds the section's size in bytes. Unless the section type is " "B, the section occupies I bytes in the file. A section " "of type B may have a nonzero size, but it occupies no space in " "the file." msgstr "" #. type: TP #: build/C/man5/elf.5:1169 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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:1173 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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:1177 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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 " "section. That is, the value of I must be congruent to zero, modulo " "the value of I. Only zero and positive integral powers of two " "are allowed. Values of zero or one mean the section has no alignment " "constraints." msgstr "" #. type: TP #: build/C/man5/elf.5:1190 #, no-wrap msgid "I" msgstr "" #. .El #. type: Plain text #: 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. " "This member contains zero if the section does not hold a table of fixed-size " "entries." msgstr "" #. .Bl -tag -width ".shstrtab" #. type: Plain text #: build/C/man5/elf.5:1200 msgid "Various sections hold program and control information:" msgstr "" #. type: TP #: build/C/man5/elf.5:1200 #, no-wrap msgid "I<.bss>" msgstr "" #. type: Plain text #: 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 " "when the program begins to run. This section is of type B. The " "attribute types are B and B." msgstr "" #. type: TP #: build/C/man5/elf.5:1212 #, no-wrap msgid "I<.comment>" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1218 msgid "" "This section holds version control information. This section is of type " "B. No attribute types are used." msgstr "" #. type: TP #: build/C/man5/elf.5:1218 #, no-wrap msgid "I<.ctors>" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1227 msgid "" "This section holds initialized pointers to the C++ constructor functions. " "This section is of type B. The attribute types are " "B and B." msgstr "" #. type: TP #: build/C/man5/elf.5:1227 #, no-wrap msgid "I<.data>" msgstr "" #. type: Plain text #: 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. The attribute types are " "B and B." msgstr "" #. type: TP #: build/C/man5/elf.5:1237 #, no-wrap msgid "I<.data1>" msgstr "" #. type: TP #: build/C/man5/elf.5:1247 #, no-wrap msgid "I<.debug>" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1255 msgid "" "This section holds information for symbolic debugging. The contents are " "unspecified. This section is of type B. No attribute types " "are used." msgstr "" #. type: TP #: build/C/man5/elf.5:1255 #, no-wrap msgid "I<.dtors>" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1264 msgid "" "This section holds initialized pointers to the C++ destructor functions. " "This section is of type B. The attribute types are " "B and B." msgstr "" #. type: TP #: build/C/man5/elf.5:1264 #, no-wrap msgid "I<.dynamic>" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1277 msgid "" "This section holds dynamic linking information. The section's attributes " "will include the B bit. Whether the B bit is set is " "processor-specific. This section is of type B. See the " "attributes above." msgstr "" #. type: TP #: build/C/man5/elf.5:1277 #, no-wrap msgid "I<.dynstr>" msgstr "" #. type: Plain text #: 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 " "section is of type B. The attribute type used is B." msgstr "" #. type: TP #: build/C/man5/elf.5:1285 #, no-wrap msgid "I<.dynsym>" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1292 msgid "" "This section holds the dynamic linking symbol table. This section is of " "type B. The attribute used is B." msgstr "" #. type: TP #: build/C/man5/elf.5:1292 #, no-wrap msgid "I<.fini>" msgstr "" #. type: Plain text #: 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 " "execute the code in this section. This section is of type B. " "The attributes used are B and B." msgstr "" #. type: TP #: build/C/man5/elf.5:1304 #, no-wrap msgid "I<.gnu.version>" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1313 msgid "" "This section holds the version symbol table, an array of I " "elements. This section is of type B. The attribute type " "used is B." msgstr "" #. type: TP #: build/C/man5/elf.5:1313 #, no-wrap msgid "I<.gnu.version_d>" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1322 msgid "" "This section holds the version symbol definitions, a table of I " "structures. This section is of type B. The attribute type " "used is B." msgstr "" #. type: TP #: build/C/man5/elf.5:1322 #, no-wrap msgid "I<.gnu.version_r>" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1332 msgid "" "This section holds the version symbol needed elements, a table of " "I structures. This section is of type B. The " "attribute type used is B." msgstr "" #. type: TP #: build/C/man5/elf.5:1332 #, no-wrap msgid "I<.got>" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1338 msgid "" "This section holds the global offset table. This section is of type " "B. The attributes are processor-specific." msgstr "" #. type: TP #: build/C/man5/elf.5:1338 #, no-wrap msgid "I<.hash>" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1345 msgid "" "This section holds a symbol hash table. This section is of type " "B. The attribute used is B." msgstr "" #. type: TP #: build/C/man5/elf.5:1345 #, no-wrap msgid "I<.init>" msgstr "" #. type: Plain text #: 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 " "execute the code in this section before calling the main program entry " "point. This section is of type B. The attributes used are " "B and B." msgstr "" #. type: TP #: build/C/man5/elf.5:1357 #, no-wrap msgid "I<.interp>" msgstr "" #. type: Plain text #: 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 " "include the B bit. Otherwise, that bit will be off. This " "section is of type B." msgstr "" #. type: TP #: build/C/man5/elf.5:1368 #, no-wrap msgid "I<.line>" msgstr "" #. type: Plain text #: 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 " "code. The contents are unspecified. This section is of type " "B. No attribute types are used." msgstr "" #. type: TP #: build/C/man5/elf.5:1376 #, no-wrap msgid "I<.note>" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1389 msgid "" "This section holds information in the \"Note Section\" format. This section " "is of type B. No attribute types are used. OpenBSD native " "executables usually contain a I<.note.openbsd.ident> section to identify " "themselves, for the kernel to bypass any compatibility ELF binary emulation " "tests when loading the file." msgstr "" #. type: TP #: build/C/man5/elf.5:1389 #, no-wrap msgid "I<.note.GNU-stack>" msgstr "" #. type: Plain text #: 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. The only attribute used is " "B. This indicates to the GNU linker that the object file " "requires an executable stack." msgstr "" #. type: TP #: build/C/man5/elf.5:1398 #, no-wrap msgid "I<.plt>" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1404 msgid "" "This section holds the procedure linkage table. This section is of type " "B. The attributes are processor-specific." msgstr "" #. type: TP #: build/C/man5/elf.5:1404 #, no-wrap msgid "I<.relNAME>" msgstr "" #. type: Plain text #: 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 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." msgstr "" #. type: TP #: build/C/man5/elf.5:1423 #, no-wrap msgid "I<.relaNAME>" msgstr "" #. type: Plain text #: 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 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." msgstr "" #. type: TP #: build/C/man5/elf.5:1442 #, no-wrap msgid "I<.rodata>" msgstr "" #. type: Plain text #: 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 " "B. The attribute used is B." msgstr "" #. type: TP #: build/C/man5/elf.5:1450 #, no-wrap msgid "I<.rodata1>" msgstr "" #. type: TP #: build/C/man5/elf.5:1458 #, no-wrap msgid "I<.shstrtab>" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1464 msgid "" "This section holds section names. This section is of type B. " "No attribute types are used." msgstr "" #. type: TP #: build/C/man5/elf.5:1464 #, no-wrap msgid "I<.strtab>" msgstr "" #. type: Plain text #: 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 bit. Otherwise, the bit will be off. This section " "is of type B." msgstr "" #. type: TP #: build/C/man5/elf.5:1476 #, no-wrap msgid "I<.symtab>" msgstr "" #. type: Plain text #: 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 bit. Otherwise, the bit will be off. This section is of type " "B." msgstr "" #. type: TP #: build/C/man5/elf.5:1487 #, no-wrap msgid "I<.text>" msgstr "" #. .El #. type: Plain text #: build/C/man5/elf.5:1499 msgid "" "This section holds the \"text\", or executable instructions, of a program. " "This section is of type B. The attributes used are " "B and B." msgstr "" #. type: Plain text #: 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 " "section names. One references a string as an index into the string table " "section. The first byte, which is index zero, is defined to hold a null " "byte (\\(aq\\e0\\(aq). Similarly, a string table's last byte is defined to " "hold a null byte, ensuring null termination for all strings." msgstr "" #. type: Plain text #: 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 " "index is a subscript into this array." msgstr "" #. type: Plain text #: build/C/man5/elf.5:1526 #, no-wrap msgid "" "typedef struct {\n" " uint32_t st_name;\n" " Elf32_Addr st_value;\n" " uint32_t st_size;\n" " unsigned char st_info;\n" " unsigned char st_other;\n" " uint16_t st_shndx;\n" "} Elf32_Sym;\n" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1539 #, no-wrap msgid "" "typedef struct {\n" " uint32_t st_name;\n" " unsigned char st_info;\n" " unsigned char st_other;\n" " uint16_t st_shndx;\n" " Elf64_Addr st_value;\n" " uint64_t st_size;\n" "} Elf64_Sym;\n" msgstr "" #. .Bl -tag -width "st_value" #. type: Plain text #: 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:1545 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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 " "nonzero, it represents a string table index that gives the symbol name. " "Otherwise, the symbol table has no name." msgstr "" #. type: TP #: build/C/man5/elf.5:1553 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1556 msgid "This member gives the value of the associated symbol." msgstr "" #. type: TP #: build/C/man5/elf.5:1556 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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:1561 #, no-wrap msgid "I" msgstr "" #. .Bl -tag -width "STT_SECTION" #. type: Plain text #: 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:1566 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1569 msgid "The symbol's type is not defined." msgstr "" #. type: TP #: build/C/man5/elf.5:1569 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1572 msgid "The symbol is associated with a data object." msgstr "" #. type: TP #: build/C/man5/elf.5:1572 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:1575 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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 bindings." msgstr "" #. type: TP #: build/C/man5/elf.5:1582 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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 bindings, " "its section index is B, and it precedes the other B " "symbols of the file, if it is present." msgstr "" #. type: TP #: build/C/man5/elf.5:1593 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1598 msgid "" "This value up to and including B is reserved for " "processor-specific semantics." msgstr "" #. type: TP #: build/C/man5/elf.5:1598 #, no-wrap msgid "B" msgstr "" #. .El #. .Bl -tag -width "STB_GLOBAL" #. type: Plain text #: build/C/man5/elf.5:1605 msgid "" "This value down to and including B is reserved for " "processor-specific semantics." msgstr "" #. type: TP #: build/C/man5/elf.5:1605 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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 " "without interfering with each other." msgstr "" #. type: TP #: build/C/man5/elf.5:1611 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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 " "reference to the same symbol." msgstr "" #. type: TP #: build/C/man5/elf.5:1617 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:1621 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1626 msgid "" "This value up to and including B is reserved for " "processor-specific semantics." msgstr "" #. type: TP #: build/C/man5/elf.5:1626 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1631 msgid "" "This value down to and including B is reserved for " "processor-specific semantics." msgstr "" #. type: Plain text #: 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:1640 msgid "" "B(info) or B(info) extract a binding from an " "I value." msgstr "" #. type: Plain text #: build/C/man5/elf.5:1644 msgid "B(info) or B(info)" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1648 msgid "extract a type from an I value." msgstr "" #. type: Plain text #: build/C/man5/elf.5:1652 msgid "B(bind, type) or B(bind, type)" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1656 msgid "convert a binding and a type into an I value." msgstr "" #. type: TP #: build/C/man5/elf.5:1658 #, no-wrap msgid "I" msgstr "" #. .Bl -tag -width "STV_PROTECTED" #. type: Plain text #: build/C/man5/elf.5:1662 msgid "This member defines the symbol visibility." msgstr "" #. type: TP #: build/C/man5/elf.5:1663 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1667 msgid "Default symbol visibility rules." msgstr "" #. type: TP #: build/C/man5/elf.5:1667 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1670 msgid "Processor-specific hidden class." msgstr "" #. type: TP #: build/C/man5/elf.5:1670 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1673 msgid "Symbol is unavailable in other modules." msgstr "" #. type: TP #: build/C/man5/elf.5:1673 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1676 msgid "Not preemptible, not exported." msgstr "" #. type: Plain text #: build/C/man5/elf.5:1679 msgid "There are macros for extracting the visibility type:" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1683 msgid "B(other) or B(other)" msgstr "" #. type: TP #: build/C/man5/elf.5:1685 #, no-wrap msgid "I" msgstr "" #. .El #. type: Plain text #: 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:1701 msgid "" "Relocation is the process of connecting symbolic references with symbolic " "definitions. Relocatable files must have information that describes how to " "modify their section contents, thus allowing executable and shared object " "files to hold the right information for a process's program image. " "Relocation entries are these data." msgstr "" #. type: Plain text #: build/C/man5/elf.5:1703 msgid "Relocation structures that do not need an addend:" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1710 #, no-wrap msgid "" "typedef struct {\n" " Elf32_Addr r_offset;\n" " uint32_t r_info;\n" "} Elf32_Rel;\n" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1719 #, no-wrap msgid "" "typedef struct {\n" " Elf64_Addr r_offset;\n" " uint64_t r_info;\n" "} Elf64_Rel;\n" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1723 msgid "Relocation structures that need an addend:" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1731 #, no-wrap msgid "" "typedef struct {\n" " Elf32_Addr r_offset;\n" " uint32_t r_info;\n" " int32_t r_addend;\n" "} Elf32_Rela;\n" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1741 #, no-wrap msgid "" "typedef struct {\n" " Elf64_Addr r_offset;\n" " uint64_t r_info;\n" " int64_t r_addend;\n" "} Elf64_Rela;\n" msgstr "" #. type: TP #: build/C/man5/elf.5:1744 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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 " "section to the storage unit affected by the relocation. For an executable " "file or shared object, the value is the virtual address of the storage unit " "affected by the relocation." msgstr "" #. type: TP #: build/C/man5/elf.5:1752 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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 " "relocation type or symbol table index, it means the result of applying " "B or B, respectively, to the entry's " "I member." msgstr "" #. type: TP #: build/C/man5/elf.5:1767 #, no-wrap msgid "I" msgstr "" #. .El #. type: Plain text #: 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:1777 msgid "" "The .dynamic section contains a series of structures that hold relevant " "dynamic linking information. The d_tag member controls the interpretation " "of d_un." msgstr "" #. type: Plain text #: build/C/man5/elf.5:1788 #, no-wrap msgid "" "typedef struct {\n" " Elf32_Sword d_tag;\n" " union {\n" " Elf32_Word d_val;\n" " Elf32_Addr d_ptr;\n" " } d_un;\n" "} Elf32_Dyn;\n" "extern Elf32_Dyn _DYNAMIC[];\n" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1801 #, no-wrap msgid "" "typedef struct {\n" " Elf64_Sxword d_tag;\n" " union {\n" " Elf64_Xword d_val;\n" " Elf64_Addr d_ptr;\n" " } d_un;\n" "} Elf64_Dyn;\n" "extern Elf64_Dyn _DYNAMIC[];\n" msgstr "" #. type: TP #: build/C/man5/elf.5:1804 #, no-wrap msgid "I" msgstr "" #. .Bl -tag -width "DT_SYMBOLIC" #. type: Plain text #: build/C/man5/elf.5:1808 msgid "This member may have any of the following values:" msgstr "" #. type: TP #: build/C/man5/elf.5:1809 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1812 msgid "Marks end of dynamic section" msgstr "" #. type: TP #: build/C/man5/elf.5:1812 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1815 msgid "String table offset to name of a needed library" msgstr "" #. type: TP #: build/C/man5/elf.5:1815 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1818 msgid "Size in bytes of PLT relocs" msgstr "" #. type: TP #: build/C/man5/elf.5:1818 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1821 msgid "Address of PLT and/or GOT" msgstr "" #. type: TP #: build/C/man5/elf.5:1821 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1824 msgid "Address of symbol hash table" msgstr "" #. type: TP #: build/C/man5/elf.5:1824 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1827 msgid "Address of string table" msgstr "" #. type: TP #: build/C/man5/elf.5:1827 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1830 msgid "Address of symbol table" msgstr "" #. type: TP #: build/C/man5/elf.5:1830 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1833 msgid "Address of Rela relocs table" msgstr "" #. type: TP #: build/C/man5/elf.5:1833 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1836 msgid "Size in bytes of Rela table" msgstr "" #. type: TP #: build/C/man5/elf.5:1836 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1839 msgid "Size in bytes of a Rela table entry" msgstr "" #. type: TP #: build/C/man5/elf.5:1839 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1842 msgid "Size in bytes of string table" msgstr "" #. type: TP #: build/C/man5/elf.5:1842 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1845 msgid "Size in bytes of a symbol table entry" msgstr "" #. type: TP #: build/C/man5/elf.5:1845 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1848 msgid "Address of the initialization function" msgstr "" #. type: TP #: build/C/man5/elf.5:1848 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1851 msgid "Address of the termination function" msgstr "" #. type: TP #: build/C/man5/elf.5:1851 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1854 msgid "String table offset to name of shared object" msgstr "" #. type: TP #: build/C/man5/elf.5:1854 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1857 msgid "String table offset to library search path (deprecated)" msgstr "" #. type: TP #: build/C/man5/elf.5:1857 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:1860 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1863 msgid "Address of Rel relocs table" msgstr "" #. type: TP #: build/C/man5/elf.5:1863 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1866 msgid "Size in bytes of Rel table" msgstr "" #. type: TP #: build/C/man5/elf.5:1866 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1869 msgid "Size in bytes of a Rel table entry" msgstr "" #. type: TP #: build/C/man5/elf.5:1869 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1872 msgid "Type of reloc the PLT refers (Rela or Rel)" msgstr "" #. type: TP #: build/C/man5/elf.5:1872 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1875 msgid "Undefined use for debugging" msgstr "" #. type: TP #: build/C/man5/elf.5:1875 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:1878 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1881 msgid "Address of reloc entries solely for the PLT" msgstr "" #. type: TP #: build/C/man5/elf.5:1881 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:1885 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1888 msgid "String table offset to library search path" msgstr "" #. type: TP #: build/C/man5/elf.5:1888 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1891 msgid "Start of processor-specific semantics" msgstr "" #. type: TP #: build/C/man5/elf.5:1891 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1894 msgid "End of processor-specific semantics" msgstr "" #. type: TP #: build/C/man5/elf.5:1896 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1899 msgid "This member represents integer values with various interpretations." msgstr "" #. type: TP #: build/C/man5/elf.5:1899 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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 " "value and memory base address. Files do not contain relocation entries to " "fixup these addresses." msgstr "" #. type: TP #: build/C/man5/elf.5:1907 #, no-wrap msgid "I<_DYNAMIC>" msgstr "" #. .El #. type: Plain text #: build/C/man5/elf.5:1912 msgid "" "Array containing all the dynamic structures in the .dynamic section. This " "is automatically populated by the linker." msgstr "" #. OpenBSD #. ELF support first appeared in #. OpenBSD 1.2, #. although not all supported platforms use it as the native #. binary file format. #. type: Plain text #: build/C/man5/elf.5:1921 msgid "ELF first appeared in System V. The ELF format is an adopted standard." msgstr "" #. .SH AUTHORS #. The original version of this manual page was written by #. .An Jeroen Ruigrok van der Werven #. .Aq asmodai@FreeBSD.org #. with inspiration from BSDi's #. .Bsx #. .Nm elf #. man page. #. type: Plain text #: build/C/man5/elf.5:1939 msgid "" "The extensions for I, I and I respectively are " "Linux extensions. Sun, BSD and AMD64 also support them; for further " "information, look under SEE ALSO." msgstr "" #. type: Plain text #: build/C/man5/elf.5:1946 msgid "B(1), B(1), B(1), B(1), B(2), B(5)" msgstr "" #. type: Plain text #: build/C/man5/elf.5:1949 msgid "Hewlett-Packard, I." msgstr "" #. type: Plain text #: build/C/man5/elf.5:1952 msgid "Santa Cruz Operation, I." msgstr "" #. type: Plain text #: build/C/man5/elf.5:1956 msgid "" "UNIX System Laboratories, \"Object Files\", I." msgstr "" #. type: Plain text #: build/C/man5/elf.5:1959 msgid "Sun Microsystems, I." msgstr "" #. type: Plain text #: build/C/man5/elf.5:1962 msgid "" "AMD64 ABI Draft, I." msgstr "" #. type: TH #: build/C/man3/end.3:26 #, no-wrap msgid "END" msgstr "" #. type: TH #: build/C/man3/end.3:26 #, no-wrap msgid "2008-07-17" msgstr "" #. type: Plain text #: build/C/man3/end.3:29 msgid "etext, edata, end - end of program segments" msgstr "" #. type: Plain text #: build/C/man3/end.3:34 #, no-wrap msgid "" "BI< etext>B<;>\n" "BI< edata>B<;>\n" "BI< end>B<;>\n" msgstr "" #. type: Plain text #: 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:38 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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:42 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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:46 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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: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: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: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 " "programs compiled on Linux." msgstr "" #. type: Plain text #: 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 " "will change as memory is allocated via B(2) or B(3). Use " "B(2) with an argument of zero to find the current value of the " "program break." msgstr "" #. type: Plain text #: 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:86 #, no-wrap msgid "" "$B< ./a.out>\n" "First address past:\n" " program text (etext) 0x8048568\n" " initialized data (edata) 0x804a01c\n" " uninitialized data (end) 0x804a024\n" msgstr "" #. type: SS #: 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:93 build/C/man1/memusage.1:238 #, no-wrap msgid "" "#include Estdio.hE\n" "#include Estdlib.hE\n" msgstr "" #. type: Plain text #: build/C/man3/end.3:96 #, no-wrap msgid "" "extern char etext, edata, end; /* The symbols must have some type,\n" " or \"gcc -Wall\" complains */\n" msgstr "" #. type: Plain text #: build/C/man3/end.3:104 #, no-wrap msgid "" "int\n" "main(int argc, char *argv[])\n" "{\n" " printf(\"First address past:\\en\");\n" " printf(\" program text (etext) %10p\\en\", &etext);\n" " printf(\" initialized data (edata) %10p\\en\", &edata);\n" " printf(\" uninitialized data (end) %10p\\en\", &end);\n" msgstr "" #. type: Plain text #: build/C/man3/end.3:113 msgid "B(1), B(1), B(2), B(5)" msgstr "" #. type: TH #: build/C/man8/ld.so.8:5 #, no-wrap msgid "LD.SO" msgstr "" #. type: TH #: build/C/man8/ld.so.8:5 #, no-wrap msgid "2014-12-31" msgstr "" #. type: Plain text #: 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: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 " "dynamic linker can be passed and, in the ELF case, the dynamic linker which " "is stored in the B<.interp> section of the program is executed) or directly " "by running:" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:18 msgid "I [OPTIONS] [PROGRAM [ARGUMENTS]]" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:25 msgid "" "The programs B and B 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:32 msgid "" "Linux binaries require dynamic linking (linking at run time) unless the " "B<-static> option was given to B(1) during compilation." msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:45 msgid "" "The program B handles a.out binaries, a format used long ago; " "B handles ELF (I for libc5, " "I 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(1), B(8), and I." msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:53 msgid "" "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: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. " "Use of DT_RPATH is deprecated." msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:66 msgid "" "Using the environment variable B. 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: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:80 msgid "" "From the cache file I, 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 installed in " "hardware capability directories (see below) are preferred to other " "libraries." msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:88 msgid "" "In the default path I, and then I. 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:88 #, no-wrap msgid "Rpath token expansion" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:92 msgid "" "B 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 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 no matter " "where I 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 or I depending on the architecture (e.g., on " "x86-64, it expands to I and on x86-32, it expands to I)." 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 # #. 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: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 value in the auxiliary vector (see " "B(3))." msgstr "" #. type: SH #: 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:142 #, no-wrap msgid "B<--list>" msgstr "" #. type: Plain text #: 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:145 #, no-wrap msgid "B<--verify>" msgstr "" #. type: Plain text #: 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: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:157 msgid "" "Use PATH instead of B environment variable setting (see " "below)." msgstr "" #. type: TP #: build/C/man8/ld.so.8:157 #, no-wrap msgid "B<--inhibit-rpath LIST>" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:163 msgid "" "Ignore RPATH and RUNPATH information in object names in LIST. This option " "is ignored if B is set-user-ID or set-group-ID." msgstr "" #. type: TP #: build/C/man8/ld.so.8:163 #, no-wrap msgid "B<--audit LIST>" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:166 msgid "Use objects named in LIST as auditors." msgstr "" #. type: SH #: build/C/man8/ld.so.8:166 #, no-wrap msgid "HARDWARE CAPABILITIES" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:177 msgid "" "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. 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:177 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:180 msgid "ev4, ev5, ev56, ev6, ev67" msgstr "" #. type: TP #: build/C/man8/ld.so.8:180 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:183 msgid "loongson2e, loongson2f, octeon, octeon2" msgstr "" #. type: TP #: build/C/man8/ld.so.8:183 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:188 msgid "" "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" msgstr "" #. type: Plain text #: 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:191 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:195 msgid "" "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:195 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:199 msgid "" "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: SH #: build/C/man8/ld.so.8:199 #, no-wrap msgid "ENVIRONMENT" msgstr "" #. type: Plain text #: 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" 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 as a " "section labeled B.) 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 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:" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:227 #, no-wrap msgid "$ B\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 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 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(7)." msgstr "" #. type: TP #: build/C/man8/ld.so.8:244 build/C/man8/ld.so.8:325 #, no-wrap msgid "B" 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" 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" 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 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" 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" 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(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" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:294 msgid "" "(libc5) Version of B for a.out binaries only. Old " "versions of ld-linux.so.1 also supported B." msgstr "" #. type: TP #: build/C/man8/ld.so.8:294 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:302 msgid "" "(libc5) Version of B for a.out binaries only. Old versions of " "ld-linux.so.1 also supported B." msgstr "" #. type: TP #: build/C/man8/ld.so.8:302 #, no-wrap msgid "B" 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 " "in the process). These libraries can be used to audit the operation of the " "dynamic linker. B is ignored for set-user-ID/set-group-ID " "binaries." msgstr "" #. type: Plain text #: 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 " "calling a symbol from another shared object\\(emby calling an appropriate " "function within the audit library. For details, see B(7). The " "auditing interface is largely compatible with that provided on Solaris, as " "described in its I, in the chapter I." msgstr "" #. type: Plain text #: 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:330 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:343 msgid "" "(glibc since 2.1) Output verbose debugging information about the dynamic " "linker. If set to B prints all debugging information it has, if set to " "B prints a help message about which categories can be specified in " "this environment variable. Since glibc 2.3.4, B is ignored for " "set-user-ID/set-group-ID binaries." msgstr "" #. type: TP #: build/C/man8/ld.so.8:343 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:352 msgid "" "(glibc since 2.1) File in which B output should be written. The " "default is standard error. B is ignored for " "set-user-ID/set-group-ID binaries." msgstr "" #. type: TP #: build/C/man8/ld.so.8:352 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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, " "B is ignored for set-user-ID/set-group-ID binaries." msgstr "" #. type: TP #: build/C/man8/ld.so.8:359 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:363 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:368 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:373 #, no-wrap msgid "B" 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: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 is " "ignored for set-user-ID/set-group-ID binaries." msgstr "" #. type: TP #: build/C/man8/ld.so.8:382 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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 " "security mechanism whereby some pointers to code stored in writable program " "memory (return addresses saved by B(3) or function pointers used by " "various glibc internals) are mangled semi-randomly to make it more difficult " "for an attacker to hijack the pointers for use in the event of a buffer " "overrun or stack-smashing attack." msgstr "" #. type: TP #: build/C/man8/ld.so.8:394 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:401 msgid "" "(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:401 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:414 msgid "" "(glibc since 2.1) Directory where B output should be written. " "If this variable is not defined, or is defined as an empty string, then the " "default is I. B is ignored for set-user-ID and " "set-group-ID programs, which always use I." msgstr "" #. type: TP #: build/C/man8/ld.so.8:414 #, no-wrap msgid "B" msgstr "" #. FIXME #. Document LD_TRACE_PRELINKING (e.g.: LD_TRACE_PRELINKING=libx1.so ./prog) #. Available since glibc 2.3 #. Also enables DL_DEBUG_PRELINK #. type: Plain text #: 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 is ignored for " "set-user-ID/set-group-ID binaries." msgstr "" #. type: TP #: build/C/man8/ld.so.8:425 #, no-wrap msgid "B" msgstr "" #. http://sources.redhat.com/ml/libc-hacker/2003-11/msg00127.html #. Subject: [PATCH] Support LD_USE_LOAD_BIAS #. Jakub Jelinek #. type: Plain text #: 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 is defined " "with the value 1, both executables and PIEs will honor the base addresses. " "If B 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:444 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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 the B environment " "variable has been set." msgstr "" #. type: TP #: build/C/man8/ld.so.8:452 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: 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:456 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:463 msgid "(libc5) I[0] to be used by B(1) when none is present." msgstr "" #. type: SH #: 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:465 build/C/man8/ldconfig.8:158 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:468 msgid "a.out dynamic linker/loader" msgstr "" #. type: TP #: build/C/man8/ld.so.8:468 #, no-wrap msgid "I{I<1>,I<2>}" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:471 msgid "ELF dynamic linker/loader" msgstr "" #. type: TP #: build/C/man8/ld.so.8:471 build/C/man8/ldconfig.8:165 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: 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:475 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:479 msgid "" "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:479 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:482 msgid "shared libraries" msgstr "" #. type: Plain text #: build/C/man8/ld.so.8:489 msgid "" "The B functionality is available for executables compiled using libc " "version 4.4.3 or greater. ELF functionality is available since Linux 1.1.52 " "and libc5." msgstr "" #. .SH AUTHORS #. ld.so: David Engel, Eric Youngdale, Peter MacDonald, Hongjiu Lu, Linus #. Torvalds, Lars Wirzenius and Mitch D'Souza #. ld-linux.so: Roland McGrath, Ulrich Drepper and others. # #. In the above, (libc5) stands for David Engel's ld.so/ld-linux.so. #. type: Plain text #: build/C/man8/ld.so.8:505 msgid "" "B(1), B(1), B(1), B(1), B(3), B(3), " "B(7), B(8), B(8)" msgstr "" #. type: TH #: build/C/man8/ldconfig.8:22 #, no-wrap msgid "LDCONFIG" msgstr "" #. type: TH #: build/C/man8/ldconfig.8:22 #, no-wrap msgid "2012-05-10" msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:25 msgid "ldconfig - configure dynamic linker run-time bindings" msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:40 msgid "" "B [ B<-nNvXV> ] [ B<-f\\ conf> ] [ B<-C\\ cache> ] [ B<-r\\ " "root> ] I\\ ..." msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:49 msgid "B B<-l> [ B<-v> ] I\\ ..." msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:54 msgid "B B<-p>" msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:71 msgid "" "B creates the necessary links and cache to the most recent shared " "libraries found in the directories specified on the command line, in the " "file I, and in the trusted directories (I and " "I). The cache is used by the run-time linker, I or " "I. B checks the header and filenames of the " "libraries it encounters when determining which versions should have their " "links updated." msgstr "" #. The following sentence looks suspect #. (perhaps historical cruft) -- MTK, Jul 2005 #. Therefore, when making dynamic libraries, #. it is wise to explicitly link against libc (use \-lc). #. type: Plain text #: build/C/man8/ldconfig.8:79 msgid "" "B will attempt to deduce the type of ELF libs (i.e., libc5 or " "libc6/glibc) based on what C libs, if any, the library was linked against." msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:100 msgid "" "Some existing libs do not contain enough information to allow the deduction " "of their type. Therefore, the I file format allows the " "specification of an expected type. This is used I 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 allowed. Also see the B<-p> option. B should " "normally be run by the superuser as it may require write permission on some " "root owned directories and files." msgstr "" #. type: TP #: build/C/man8/ldconfig.8:101 #, no-wrap msgid "B<-v>" msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:107 msgid "" "Verbose mode. Print current version number, the name of each directory as " "it is scanned, and any links that are created. Overrides quiet mode." msgstr "" #. type: TP #: build/C/man8/ldconfig.8:107 #, no-wrap msgid "B<-n>" msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:118 msgid "" "Only process directories specified on the command line. Don't process the " "trusted directories (I and I) nor those specified in " "I. Implies B<-N>." msgstr "" #. type: TP #: build/C/man8/ldconfig.8:118 #, no-wrap msgid "B<-N>" msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:124 msgid "" "Don't rebuild the cache. Unless B<-X> is also specified, links are still " "updated." msgstr "" #. type: TP #: build/C/man8/ldconfig.8:124 #, no-wrap msgid "B<-X>" msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:130 msgid "" "Don't update links. Unless B<-N> is also specified, the cache is still " "rebuilt." msgstr "" #. type: TP #: build/C/man8/ldconfig.8:130 #, no-wrap msgid "B<-f conf>" msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:136 msgid "Use B instead of I." msgstr "" #. type: TP #: build/C/man8/ldconfig.8:136 #, no-wrap msgid "B<-C cache>" msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:142 msgid "Use B instead of I." msgstr "" #. type: TP #: build/C/man8/ldconfig.8:142 #, no-wrap msgid "B<-r root>" msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:147 msgid "Change to and use I as the root directory." msgstr "" #. type: TP #: build/C/man8/ldconfig.8:147 #, no-wrap msgid "B<-l>" msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:152 msgid "" "Library mode. Manually link individual libraries. Intended for use by " "experts only." msgstr "" #. type: TP #: build/C/man8/ldconfig.8:152 #, no-wrap msgid "B<-p>" msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:156 msgid "" "Print the lists of directories and candidate libraries stored in the current " "cache." msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:161 msgid "run-time linker/loader" msgstr "" #. type: TP #: build/C/man8/ldconfig.8:161 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:165 msgid "" "File containing a list of colon, space, tab, newline, or comma-separated " "directories in which to search for libraries." msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:174 msgid "" "File containing an ordered list of libraries found in the directories " "specified in I, as well as those found in I and " "I." msgstr "" #. type: Plain text #: build/C/man8/ldconfig.8:178 msgid "B(1), B(8)" msgstr "" #. type: TH #: build/C/man1/ldd.1:14 #, no-wrap msgid "LDD" msgstr "" #. type: Plain text #: build/C/man1/ldd.1:17 msgid "ldd - print shared library dependencies" msgstr "" #. type: Plain text #: build/C/man1/ldd.1:19 msgid "B [I