summaryrefslogtreecommitdiffstats
path: root/templates/man3/dl_iterate_phdr.3.pot
diff options
context:
space:
mode:
Diffstat (limited to 'templates/man3/dl_iterate_phdr.3.pot')
-rw-r--r--templates/man3/dl_iterate_phdr.3.pot759
1 files changed, 759 insertions, 0 deletions
diff --git a/templates/man3/dl_iterate_phdr.3.pot b/templates/man3/dl_iterate_phdr.3.pot
new file mode 100644
index 00000000..709c6508
--- /dev/null
+++ b/templates/man3/dl_iterate_phdr.3.pot
@@ -0,0 +1,759 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-03-01 16:55+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=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 fedora-40 fedora-rawhide mageia-cauldron
+#, no-wrap
+msgid "2023-10-31"
+msgstr ""
+
+#. type: TH
+#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+#, no-wrap
+msgid "Linux man-pages 6.06"
+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<libc>, 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 E<lt>link.hE<gt>>\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<int dl_iterate_phdr(>\n"
+"B< int (*>I<callback>B<)(struct dl_phdr_info *>I<info>B<,>\n"
+"B< size_t >I<size>B<, void *>I<data>B<),>\n"
+"B< void *>I<data>B<);>\n"
+msgstr ""
+
+#. type: SH
+#: 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<dl_iterate_phdr>() 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<dl_iterate_phdr>() function walks through the list of an "
+"application's shared objects and calls the function I<callback> once for "
+"each object, until either all shared objects have been processed or "
+"I<callback> 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<callback> receives three arguments: I<info>, which is a "
+"pointer to a structure containing information about the shared object; "
+"I<size>, which is the size of the structure pointed to by I<info>; and "
+"I<data>, which is a copy of whatever value was passed by the calling program "
+"as the second argument (also named I<data>) in the call to "
+"B<dl_iterate_phdr>()."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "The I<info> 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<dlpi_phdr> */\n"
+"\\&\n"
+" /* The following fields were added in glibc 2.4, after the first\n"
+" version of this structure was available. Check the I<size>\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<ElfW>() 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<ElfW(Addr)> yields the data type name I<Elf32_Addr>. Further "
+"information on these types can be found in the I<E<lt>elf.hE<gt>> and "
+"I<E<lt>link.hE<gt>> 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<dlpi_addr> 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<dlpi_name> 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<dlpi_phdr> and I<dlpi_phnum> 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<dlpi_phdr> field is a pointer to an array of the program headers for "
+"this shared object. The I<dlpi_phnum> 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<x>, 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-E<gt>dlpi_addr + info-E<gt>dlpi_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<p_type> include the following (see I<E<lt>elf.hE<gt>> "
+"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<dl_iterate_phdr>() function returns whatever value was returned by "
+"the last call to I<callback>."
+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<attributes>(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<dl_iterate_phdr>()"
+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<dl_phdr_info> structure differ. On the BSDs and Solaris, "
+"the structure includes the fields I<dlpi_addr>, I<dlpi_name>, I<dlpi_phdr>, "
+"and I<dlpi_phnum> 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<dl_phdr_info> structure; in that event, the I<size> 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<callback> is the main program. For the main "
+"program, the I<dlpi_name> 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 E<lt>link.hE<gt>\n"
+"#include E<lt>stdint.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\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-E<gt>dlpi_name,\n"
+" info-E<gt>dlpi_phnum);\n"
+"\\&\n"
+" for (size_t j = 0; j E<lt> info-E<gt>dlpi_phnum; j++) {\n"
+" p_type = info-E<gt>dlpi_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-E<gt>dlpi_addr + info-E<gt>dlpi_phdr[j].p_vaddr),\n"
+" (uintmax_t) info-E<gt>dlpi_phdr[j].p_memsz,\n"
+" (uintmax_t) info-E<gt>dlpi_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<ldd>(1), B<objdump>(1), B<readelf>(1), B<dladdr>(3), B<dlopen>(3), "
+"B<elf>(5), B<ld.so>(8)"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"I<Executable and Linking Format Specification>, 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<dlpi_phdr> */\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<size>\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<dl_iterate_phdr>() has been supported since glibc 2.2.4."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"The B<dl_iterate_phdr>() function is not specified in any standard. "
+"Various other systems provide a version of this function, although details "
+"of the returned I<dl_phdr_info> structure differ. On the BSDs and Solaris, "
+"the structure includes the fields I<dlpi_addr>, I<dlpi_name>, I<dlpi_phdr>, "
+"and I<dlpi_phnum> 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 E<lt>link.hE<gt>\n"
+"#include E<lt>stdint.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\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-E<gt>dlpi_name,\n"
+" info-E<gt>dlpi_phnum);\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" for (size_t j = 0; j E<lt> info-E<gt>dlpi_phnum; j++) {\n"
+" p_type = info-E<gt>dlpi_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-E<gt>dlpi_addr + info-E<gt>dlpi_phdr[j].p_vaddr),\n"
+" (uintmax_t) info-E<gt>dlpi_phdr[j].p_memsz,\n"
+" (uintmax_t) info-E<gt>dlpi_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
+#: debian-unstable opensuse-tumbleweed
+#, no-wrap
+msgid "2023-07-20"
+msgstr ""
+
+#. type: TH
+#: debian-unstable opensuse-tumbleweed
+#, no-wrap
+msgid "Linux man-pages 6.05.01"
+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 ""