# 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 "dl_iterate_phdr" 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 "dl_iterate_phdr - walk through list of shared objects" 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 "Standard C library (I, I<-lc>)" 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<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n" "B<#include Elink.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 "" "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 #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "DESCRIPTION" 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 allows an application to inquire at run " "time to find out which shared objects it has loaded, and the order in which " "they were loaded." 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 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 #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed 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 #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "The I argument is a structure of the following type:" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, 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" " /* The following fields were added in glibc 2.4, after the first\n" " version of this structure was available. Check the I\n" " argument passed to the dl_iterate_phdr callback to determine\n" " whether or not each later member is available. */\n" "\\&\n" " unsigned long long dlpi_adds;\n" " /* Incremented when a new object may\n" " have been added */\n" " unsigned long long dlpi_subs;\n" " /* Incremented when an object may\n" " have been removed */\n" " size_t dlpi_tls_modid;\n" " /* If there is a PT_TLS segment, its module\n" " ID as used in TLS relocations, else zero */\n" " void *dlpi_tls_data;\n" " /* The address of the calling thread\\[aq]s instance\n" " of this module\\[aq]s PT_TLS segment, if it has\n" " one and it has been allocated in the calling\n" " thread, otherwise a null pointer */\n" "};\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed 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, I yields the data type name I. Further " "information on these types can be found in the Ielf.hE> and " "Ilink.hE> header files.)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed 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 #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed 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 #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "These program headers are structures of the following form:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, 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 #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Note that we can calculate the location of a particular program header, " "I, in virtual memory using the formula:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "addr == info-Edlpi_addr + info-Edlpi_phdr[x].p_vaddr;\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Possible values for I include the following (see Ielf.hE> " "for further details):" msgstr "" #. For PT_GNU_STACK, see http://www.airs.com/blog/archives/518 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "#define PT_LOAD 1 /* Loadable program segment */\n" "#define PT_DYNAMIC 2 /* Dynamic linking information */\n" "#define PT_INTERP 3 /* Program interpreter */\n" "#define PT_NOTE 4 /* Auxiliary information */\n" "#define PT_SHLIB 5 /* Reserved */\n" "#define PT_PHDR 6 /* Entry for header table itself */\n" "#define PT_TLS 7 /* Thread-local storage segment */\n" "#define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */\n" "#define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */\n" "#define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */\n" 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 "" "The B() function returns whatever value was returned by " "the last call to I." 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()" 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 "VERSIONS" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Various other systems provide a version of this function, although details " "of the returned I structure differ. On the BSDs and Solaris, " "the structure includes the fields I, I, I, " "and I in addition to other implementation-specific fields." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Future versions of the C library may add further fields to the " "I structure; in that event, the I argument provides a " "mechanism for the callback function to discover whether it is running on a " "system with added fields." 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: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "None." 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.2.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: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The first object visited by I is the main program. For the main " "program, the I field will be an empty string." 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 following program displays a list of pathnames of the shared objects it " "has loaded. For each shared object, the program lists some information " "(virtual address, size, flags, and type) for each of the objects ELF " "segments." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The following shell session demonstrates the output produced by the program " "on an x86-64 system. The first shared object for which output is displayed " "(where the name is an empty string) is the main 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<./a.out>\n" "Name: \"\" (9 segments)\n" " 0: [ 0x400040; memsz: 1f8] flags: 0x5; PT_PHDR\n" " 1: [ 0x400238; memsz: 1c] flags: 0x4; PT_INTERP\n" " 2: [ 0x400000; memsz: ac4] flags: 0x5; PT_LOAD\n" " 3: [ 0x600e10; memsz: 240] flags: 0x6; PT_LOAD\n" " 4: [ 0x600e28; memsz: 1d0] flags: 0x6; PT_DYNAMIC\n" " 5: [ 0x400254; memsz: 44] flags: 0x4; PT_NOTE\n" " 6: [ 0x400970; memsz: 3c] flags: 0x4; PT_GNU_EH_FRAME\n" " 7: [ (nil); memsz: 0] flags: 0x6; PT_GNU_STACK\n" " 8: [ 0x600e10; memsz: 1f0] flags: 0x4; PT_GNU_RELRO\n" "Name: \"linux-vdso.so.1\" (4 segments)\n" " 0: [0x7ffc6edd1000; memsz: e89] flags: 0x5; PT_LOAD\n" " 1: [0x7ffc6edd1360; memsz: 110] flags: 0x4; PT_DYNAMIC\n" " 2: [0x7ffc6edd17b0; memsz: 3c] flags: 0x4; PT_NOTE\n" " 3: [0x7ffc6edd17ec; memsz: 3c] flags: 0x4; PT_GNU_EH_FRAME\n" "Name: \"/lib64/libc.so.6\" (10 segments)\n" " 0: [0x7f55712ce040; memsz: 230] flags: 0x5; PT_PHDR\n" " 1: [0x7f557145b980; memsz: 1c] flags: 0x4; PT_INTERP\n" " 2: [0x7f55712ce000; memsz: 1b6a5c] flags: 0x5; PT_LOAD\n" " 3: [0x7f55716857a0; memsz: 9240] flags: 0x6; PT_LOAD\n" " 4: [0x7f5571688b80; memsz: 1f0] flags: 0x6; PT_DYNAMIC\n" " 5: [0x7f55712ce270; memsz: 44] flags: 0x4; PT_NOTE\n" " 6: [0x7f55716857a0; memsz: 78] flags: 0x4; PT_TLS\n" " 7: [0x7f557145b99c; memsz: 544c] flags: 0x4; PT_GNU_EH_FRAME\n" " 8: [0x7f55712ce000; memsz: 0] flags: 0x6; PT_GNU_STACK\n" " 9: [0x7f55716857a0; memsz: 3860] flags: 0x4; PT_GNU_RELRO\n" "Name: \"/lib64/ld-linux-x86-64.so.2\" (7 segments)\n" " 0: [0x7f557168f000; memsz: 20828] flags: 0x5; PT_LOAD\n" " 1: [0x7f55718afba0; memsz: 15a8] flags: 0x6; PT_LOAD\n" " 2: [0x7f55718afe10; memsz: 190] flags: 0x6; PT_DYNAMIC\n" " 3: [0x7f557168f1c8; memsz: 24] flags: 0x4; PT_NOTE\n" " 4: [0x7f55716acec4; memsz: 604] flags: 0x4; PT_GNU_EH_FRAME\n" " 5: [0x7f557168f000; memsz: 0] flags: 0x6; PT_GNU_STACK\n" " 6: [0x7f55718afba0; memsz: 460] flags: 0x4; PT_GNU_RELRO\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 "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "#define _GNU_SOURCE\n" "#include Elink.hE\n" "#include Estdint.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "\\&\n" "static int\n" "callback(struct dl_phdr_info *info, size_t size, void *data)\n" "{\n" " char *type;\n" " int p_type;\n" "\\&\n" " printf(\"Name: \\e\"%s\\e\" (%d segments)\\en\", info-Edlpi_name,\n" " info-Edlpi_phnum);\n" "\\&\n" " for (size_t j = 0; j E info-Edlpi_phnum; j++) {\n" " p_type = info-Edlpi_phdr[j].p_type;\n" " type = (p_type == PT_LOAD) ? \"PT_LOAD\" :\n" " (p_type == PT_DYNAMIC) ? \"PT_DYNAMIC\" :\n" " (p_type == PT_INTERP) ? \"PT_INTERP\" :\n" " (p_type == PT_NOTE) ? \"PT_NOTE\" :\n" " (p_type == PT_INTERP) ? \"PT_INTERP\" :\n" " (p_type == PT_PHDR) ? \"PT_PHDR\" :\n" " (p_type == PT_TLS) ? \"PT_TLS\" :\n" " (p_type == PT_GNU_EH_FRAME) ? \"PT_GNU_EH_FRAME\" :\n" " (p_type == PT_GNU_STACK) ? \"PT_GNU_STACK\" :\n" " (p_type == PT_GNU_RELRO) ? \"PT_GNU_RELRO\" : NULL;\n" "\\&\n" " printf(\" %2zu: [%14p; memsz:%7jx] flags: %#jx; \", j,\n" " (void *) (info-Edlpi_addr + info-Edlpi_phdr[j].p_vaddr),\n" " (uintmax_t) info-Edlpi_phdr[j].p_memsz,\n" " (uintmax_t) info-Edlpi_phdr[j].p_flags);\n" " if (type != NULL)\n" " printf(\"%s\\en\", type);\n" " else\n" " printf(\"[other (%#x)]\\en\", p_type);\n" " }\n" "\\&\n" " return 0;\n" "}\n" "\\&\n" "int\n" "main(void)\n" "{\n" " dl_iterate_phdr(callback, NULL);\n" "\\&\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(5), B(8)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "I, available at various " "locations online." 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: Plain text #: debian-bookworm opensuse-leap-15-6 #, 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" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " /* The following fields were added in glibc 2.4, after the first\n" " version of this structure was available. Check the I\n" " argument passed to the dl_iterate_phdr callback to determine\n" " whether or not each later member is available. */\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " unsigned long long dlpi_adds;\n" " /* Incremented when a new object may\n" " have been added */\n" " unsigned long long dlpi_subs;\n" " /* Incremented when an object may\n" " have been removed */\n" " size_t dlpi_tls_modid;\n" " /* If there is a PT_TLS segment, its module\n" " ID as used in TLS relocations, else zero */\n" " void *dlpi_tls_data;\n" " /* The address of the calling thread\\[aq]s instance\n" " of this module\\[aq]s PT_TLS segment, if it has\n" " one and it has been allocated in the calling\n" " thread, otherwise a null pointer */\n" "};\n" msgstr "" #. type: Plain text #: debian-bookworm msgid "B() has been supported since glibc 2.2.4." msgstr "" #. type: Plain text #: debian-bookworm msgid "" "The B() function is not specified in any standard. " "Various other systems provide a version of this function, although details " "of the returned I structure differ. On the BSDs and Solaris, " "the structure includes the fields I, I, I, " "and I in addition to other implementation-specific fields." msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#define _GNU_SOURCE\n" "#include Elink.hE\n" "#include Estdint.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "static int\n" "callback(struct dl_phdr_info *info, size_t size, void *data)\n" "{\n" " char *type;\n" " int p_type;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " printf(\"Name: \\e\"%s\\e\" (%d segments)\\en\", info-Edlpi_name,\n" " info-Edlpi_phnum);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " for (size_t j = 0; j E info-Edlpi_phnum; j++) {\n" " p_type = info-Edlpi_phdr[j].p_type;\n" " type = (p_type == PT_LOAD) ? \"PT_LOAD\" :\n" " (p_type == PT_DYNAMIC) ? \"PT_DYNAMIC\" :\n" " (p_type == PT_INTERP) ? \"PT_INTERP\" :\n" " (p_type == PT_NOTE) ? \"PT_NOTE\" :\n" " (p_type == PT_INTERP) ? \"PT_INTERP\" :\n" " (p_type == PT_PHDR) ? \"PT_PHDR\" :\n" " (p_type == PT_TLS) ? \"PT_TLS\" :\n" " (p_type == PT_GNU_EH_FRAME) ? \"PT_GNU_EH_FRAME\" :\n" " (p_type == PT_GNU_STACK) ? \"PT_GNU_STACK\" :\n" " (p_type == PT_GNU_RELRO) ? \"PT_GNU_RELRO\" : NULL;\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " printf(\" %2zu: [%14p; memsz:%7jx] flags: %#jx; \", j,\n" " (void *) (info-Edlpi_addr + info-Edlpi_phdr[j].p_vaddr),\n" " (uintmax_t) info-Edlpi_phdr[j].p_memsz,\n" " (uintmax_t) info-Edlpi_phdr[j].p_flags);\n" " if (type != NULL)\n" " printf(\"%s\\en\", type);\n" " else\n" " printf(\"[other (%#x)]\\en\", p_type);\n" " }\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " return 0;\n" "}\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "int\n" "main(void)\n" "{\n" " dl_iterate_phdr(callback, NULL);\n" msgstr "" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " 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 ""