# 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: 2024-06-01 05:47+0200\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 #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "dlopen" msgstr "" #. type: TH #: archlinux debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "" #. type: TH #: archlinux debian-unstable #, no-wrap msgid "Linux man-pages 6.8" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NAME" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "dlclose, dlopen, dlmopen - open and close a shared object" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "LIBRARY" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Dynamic linking library (I, I<-ldl>)" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SYNOPSIS" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B<#include Edlfcn.hE>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "BIB<, int >IB<);>\n" "BIB<);>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B<#define _GNU_SOURCE>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "BIB<, const char *>IB<, int >IB<);>\n" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "DESCRIPTION" msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "dlopen()" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The function B() loads the dynamic shared object (shared library) " "file named by the null-terminated string I and returns an opaque " "\"handle\" for the loaded object. This handle is employed with other " "functions in the dlopen API, such as B(3), B(3), " "B(3), and B()." msgstr "" #. FIXME On Solaris, when handle is NULL, we seem to get back #. a handle for (something like) the root of the namespace. #. The point here is that if we do a dlmopen(LM_ID_NEWLM), then #. the filename==NULL case returns a different handle than #. in the initial namespace. But, on glibc, the same handle is #. returned. This is probably a bug in glibc. #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "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 object as follows (see B(8) for further details):" msgstr "" #. type: IP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "\\[bu]" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(ELF only) If the calling object (i.e., the shared library or executable " "from which B() is called) 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 #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed 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 #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(ELF only) If the calling object contains a DT_RUNPATH tag, then the " "directories listed in that tag are searched." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The cache file I (maintained by B(8)) is " "checked to see whether it contains an entry for I." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "The directories I and I are searched (in that order)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If the object specified by I has dependencies on other shared " "objects, then these are also automatically loaded by the dynamic linker " "using the same rules. (This process may occur recursively, if those objects " "in turn have dependencies, and so on.)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "One of the following two values must be included in I:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. commit 12b5b6b7f78ea111e89bbf638294a5413c791072 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Perform lazy binding. Resolve symbols only 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 shared object is loaded.) " "Since glibc 2.1.1, this flag is overridden by the effect of the " "B environment variable." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If this value is specified, or the environment variable B is " "set to a nonempty string, all undefined symbols in the shared object are " "resolved before B() returns. If this cannot be done, an error is " "returned." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Zero or more of the following values may also be ORed in I:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The symbols defined by this shared object will be made available for symbol " "resolution of subsequently loaded shared objects." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This is the converse of B, and the default if neither flag is " "specified. Symbols defined in this shared object are not made available to " "resolve references in subsequently loaded shared objects." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since glibc 2.2)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Do not unload the shared object during B(). Consequently, the " "object's static and global variables are not reinitialized if the object is " "reloaded with B() at a later time." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B (since glibc 2.2)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Don't load the shared object. This can be used to test if the object is " "already resident (B() returns NULL if it is not, or the object's " "handle if it is resident). This flag can also be used to promote the flags " "on a shared object that is already loaded. For example, a shared object " "that was previously loaded with B can be reopened with " "B." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, 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 #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Place the lookup scope of the symbols in this shared object ahead of the " "global scope. This means that a self-contained object will use its own " "symbols in preference to global symbols with the same name contained in " "objects that have already been loaded." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If I is NULL, then the returned handle is for the main program. " "When given to B(3), this handle causes a search for a symbol in the " "main program, followed by all shared objects loaded at program startup, and " "then all shared objects loaded by B() with the flag B." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Symbol references in the shared object are resolved using (in order): " "symbols in the link map of objects loaded for the main program and its " "dependencies; symbols in shared objects (and their dependencies) that were " "previously opened with B() using the B flag; and " "definitions in the shared object itself (and any dependencies that were " "loaded for that object)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Any global symbols in the executable that were placed into its dynamic " "symbol table by B(1) can also be used to resolve references in a " "dynamically loaded shared object. Symbols may be placed in the dynamic " "symbol table either because the executable was linked with the flag \"-" "rdynamic\" (or, synonymously, \"--export-dynamic\"), which causes all of the " "executable's global symbols to be placed in the dynamic symbol table, or " "because B(1) noted a dependency on a symbol in another object during " "static linking." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If the same shared object is opened again with B(), the same object " "handle is returned. The dynamic linker maintains reference counts for " "object handles, so a dynamically loaded shared object is not deallocated " "until B() has been called on it as many times as B() has " "succeeded on it. Constructors (see below) are called only when the object " "is actually loaded into memory (i.e., when the reference count increases to " "1)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "A subsequent B() call that loads the same shared object with " "B may force symbol resolution for a shared object earlier loaded " "with B. Similarly, an object that was previously opened with " "B can be promoted to B in a subsequent B()." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "If B() fails for any reason, it returns NULL." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "dlmopen()" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This function performs the same task as B()\\[em]the I and " "I arguments, as well as the return value, are the same, except for " "the differences noted below." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B() function differs from B() primarily in that it " "accepts an additional argument, I, that specifies the link-map list " "(also referred to as a I) in which the shared object should be " "loaded. (By comparison, B() adds the dynamically loaded shared " "object to the same namespace as the shared object from which the " "B() call is made.) The I type is an opaque handle that " "refers to a namespace." msgstr "" #. FIXME: Is using dlinfo() RTLD_DI_LMID the right technique? #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I argument is either the ID of an existing namespace (which can be " "obtained using the B(3) B request) or one of the " "following special values:" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Load the shared object in the initial namespace (i.e., the application's " "namespace)." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Create a new namespace and load the shared object in that namespace. The " "object must have been correctly linked to reference all of the other shared " "objects that it requires, since the new namespace is initially empty." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If I is NULL, then the only permitted value for I is " "B." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "dlclose()" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The function B() decrements the reference count on the dynamically " "loaded shared object referred to by I." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If the object's reference count drops to zero and no symbols in this object " "are required by other objects, then the object is unloaded after first " "calling any destructors defined for the object. (Symbols in this object " "might be required in another object because this object was opened with the " "B flag and one of its symbols satisfied a relocation in another " "object.)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "All shared objects that were automatically loaded when B() was " "invoked on the object referred to by I are recursively closed in the " "same manner." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "A successful return from B() does not guarantee that the symbols " "associated with I are removed from the caller's address space. In " "addition to references resulting from explicit B() calls, a shared " "object may have been implicitly loaded (and reference counted) because of " "dependencies in other shared objects. Only when all references have been " "released can the shared object be removed from the address space." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "RETURN VALUE" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On success, B() and B() return a non-NULL handle for the " "loaded object. On error (file could not be found, was not readable, had the " "wrong format, or caused errors during loading), these functions return NULL." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On success, B() returns 0; on error, it returns a nonzero value." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Errors from these functions can be diagnosed using B(3)." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "ATTRIBUTES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "For an explanation of the terms used in this section, see B(7)." msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Interface" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Attribute" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Value" msgstr "" #. type: tbl table #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid ".na\n" msgstr "" #. type: tbl table #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid ".nh\n" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "B(),\n" "B(),\n" "B()" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Thread safety" msgstr "" #. type: tbl table #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "MT-Safe" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "STANDARDS" msgstr "" #. type: TP #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "POSIX.1-2008." msgstr "" #. type: TP #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B()" msgstr "" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: TQ #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "GNU." msgstr "" #. type: TP #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "Solaris." msgstr "" #. type: SH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "HISTORY" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "glibc 2.0. POSIX.1-2001." msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "glibc 2.3.4." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NOTES" msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "dlmopen() and namespaces" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "A link-map list defines an isolated namespace for the resolution of symbols " "by the dynamic linker. Within a namespace, dependent shared objects are " "implicitly loaded according to the usual rules, and symbol references are " "likewise resolved according to the usual rules, but such resolution is " "confined to the definitions provided by the objects that have been " "(explicitly and implicitly) loaded into the namespace." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B() function permits object-load isolation\\[em]the ability to " "load a shared object in a new namespace without exposing the rest of the " "application to the symbols made available by the new object. Note that the " "use of the B flag is not sufficient for this purpose, since it " "prevents a shared object's symbols from being available to I other " "shared object. In some cases, we may want to make the symbols provided by a " "dynamically loaded shared object available to (a subset of) other shared " "objects without exposing those symbols to the entire application. This can " "be achieved by using a separate namespace and the B flag." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B() function also can be used to provide better isolation than " "the B flag. In particular, shared objects loaded with " "B may be promoted to B if they are dependencies of " "another shared object loaded with B. Thus, B is " "insufficient to isolate a loaded shared object except in the (uncommon) " "case where one has explicit control over all shared object dependencies." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Possible uses of B() are plugins where the author of the plugin-" "loading framework can't trust the plugin authors and does not wish any " "undefined symbols from the plugin framework to be resolved to plugin " "symbols. Another use is to load the same object more than once. Without " "the use of B(), this would require the creation of distinct copies " "of the shared object file. Using B(), this can be achieved by " "loading the same shared object file into different namespaces." msgstr "" #. DL_NNS #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "The glibc implementation supports a maximum of 16 namespaces." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Initialization and finalization functions" msgstr "" #. info gcc "C Extensions" "Function attributes" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Shared objects may export functions using the " "B<__attribute__((constructor))> and B<__attribute__((destructor))> function " "attributes. Constructor functions are executed before B() returns, " "and destructor functions are executed before B() returns. A " "shared object may export multiple constructors and destructors, and " "priorities can be associated with each function to determine the order in " "which they are executed. See the B info pages (under \"Function " "attributes\") for further information." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "An older method of (partially) achieving the same result is via the use of " "two special symbols recognized by the linker: B<_init> and B<_fini>. If a " "dynamically loaded shared object exports a routine named B<_init>(), then " "that code is executed after loading a shared object, before B() " "returns. If the shared object exports a routine named B<_fini>(), then that " "routine is called just before the object is unloaded. In this case, one " "must avoid linking against the system startup files, which contain default " "versions of these files; this can be done by using the B(1) I<-" "nostartfiles> command-line option." msgstr "" # #. 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). #. .\" void _init(void) __attribute__((constructor)); #. .\" void _fini(void) __attribute__((destructor)); #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Use of B<_init> and B<_fini> is now deprecated in favor of the " "aforementioned constructors and destructors, which among other advantages, " "permit multiple initialization and finalization functions to be defined." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Since glibc 2.2.3, B(3) can be used to register an exit handler " "that is automatically called when a shared object is unloaded." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "History" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "These functions are part of the dlopen API, derived from SunOS." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "BUGS" msgstr "" #. dlerror(): "invalid mode" #. https://sourceware.org/bugzilla/show_bug.cgi?id=18684 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "As at glibc 2.24, specifying the B flag when calling " "B() generates an error. Furthermore, specifying B " "when calling B() results in a program crash (B) if the " "call is made from any object loaded in a namespace other than the initial " "namespace." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "EXAMPLES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The program below loads the (glibc) math library, looks up the address of " "the B(3) function, and prints the cosine of 2.0. The following is an " "example of building and running the program:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "$ B\n" "$ B<./a.out>\n" "-0.416147\n" msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Program source" 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 #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "#include Edlfcn.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "\\&\n" "#include Egnu/lib-names.hE /* Defines LIBM_SO (which will be a\n" " string such as \"libm.so.6\") */\n" "int\n" "main(void)\n" "{\n" " void *handle;\n" " double (*cosine)(double);\n" " char *error;\n" "\\&\n" " handle = dlopen(LIBM_SO, RTLD_LAZY);\n" " if (!handle) {\n" " fprintf(stderr, \"%s\\en\", dlerror());\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " dlerror(); /* Clear any existing error */\n" "\\&\n" " cosine = (double (*)(double)) dlsym(handle, \"cos\");\n" "\\&\n" " /* According to the ISO C standard, casting between function\n" " pointers and \\[aq]void *\\[aq], as done above, produces undefined results.\n" " POSIX.1-2001 and POSIX.1-2008 accepted this state of affairs and\n" " proposed the following workaround:\n" "\\&\n" " *(void **) (&cosine) = dlsym(handle, \"cos\");\n" "\\&\n" " This (clumsy) cast conforms with the ISO C standard and will\n" " avoid any compiler warnings.\n" "\\&\n" " The 2013 Technical Corrigendum 1 to POSIX.1-2008 improved matters\n" " by requiring that conforming implementations support casting\n" " \\[aq]void *\\[aq] to a function pointer. Nevertheless, some compilers\n" " (e.g., gcc with the \\[aq]-pedantic\\[aq] option) may complain about the\n" " cast used in this program. */\n" "\\&\n" " error = dlerror();\n" " if (error != NULL) {\n" " fprintf(stderr, \"%s\\en\", error);\n" " exit(EXIT_FAILURE);\n" " }\n" "\\&\n" " printf(\"%f\\en\", (*cosine)(2.0));\n" " dlclose(handle);\n" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. SRC END #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SEE ALSO" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B(1), B(1), B(1), B(3), B(3), " "B(3), B(3), B(3), B(7), B(8), " "B(8)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "gcc info pages, ld info pages" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "2023-02-05" msgstr "" #. type: TH #: debian-bookworm #, no-wrap msgid "Linux man-pages 6.03" msgstr "" #. type: SH #: debian-bookworm #, no-wrap msgid "VERSIONS" msgstr "" #. type: Plain text #: debian-bookworm msgid "" "B() and B() are present in glibc 2.0 and later. " "B() first appeared in glibc 2.3.4." msgstr "" #. type: Plain text #: debian-bookworm msgid "" "POSIX.1-2001 describes B() and B(). The B() " "function is a GNU extension." msgstr "" #. type: Plain text #: debian-bookworm msgid "" "The B, B, and B flags are GNU " "extensions; the first two of these flags are also present on Solaris." msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#include Edlfcn.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#include Egnu/lib-names.hE /* Defines LIBM_SO (which will be a\n" " string such as \"libm.so.6\") */\n" "int\n" "main(void)\n" "{\n" " void *handle;\n" " double (*cosine)(double);\n" " char *error;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, 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 #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " dlerror(); /* Clear any existing error */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " cosine = (double (*)(double)) dlsym(handle, \"cos\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /* According to the ISO C standard, casting between function\n" " pointers and \\[aq]void *\\[aq], as done above, produces undefined results.\n" " POSIX.1-2001 and POSIX.1-2008 accepted this state of affairs and\n" " proposed the following workaround:\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " *(void **) (&cosine) = dlsym(handle, \"cos\");\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, 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 #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " The 2013 Technical Corrigendum 1 to POSIX.1-2008 improved matters\n" " by requiring that conforming implementations support casting\n" " \\[aq]void *\\[aq] to a function pointer. Nevertheless, some compilers\n" " (e.g., gcc with the \\[aq]-pedantic\\[aq] option) may complain about the\n" " cast used in this program. */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, 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 #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " printf(\"%f\\en\", (*cosine)(2.0));\n" " dlclose(handle);\n" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. type: TH #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2023-10-31" msgstr "" #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" msgstr "" #. type: TH #: fedora-rawhide #, no-wrap msgid "Linux man-pages 6.7" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "2023-03-30" msgstr "" #. type: TH #: opensuse-leap-15-6 #, no-wrap msgid "Linux man-pages 6.04" msgstr "" #. type: TH #: opensuse-tumbleweed #, no-wrap msgid "Linux man-pages (unreleased)" msgstr ""