diff options
Diffstat (limited to 'templates/man3/dl_iterate_phdr.3.pot')
-rw-r--r-- | templates/man3/dl_iterate_phdr.3.pot | 759 |
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 "" |