85 lines
2.5 KiB
Groff
85 lines
2.5 KiB
Groff
.\" $NetBSD: dl_iterate_phdr.3,v 1.2 2010/10/16 12:05:48 wiz Exp $
|
|
.\" $OpenBSD: dl_iterate_phdr.3,v 1.3 2007/05/31 19:19:48 jmc Exp $
|
|
.\"
|
|
.\" Copyright (c) 2005 Mark Kettenis
|
|
.\"
|
|
.\" Permission to use, copy, modify, and distribute this software for any
|
|
.\" purpose with or without fee is hereby granted, provided that the above
|
|
.\" copyright notice and this permission notice appear in all copies.
|
|
.\"
|
|
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
.\"
|
|
.Dd October 16, 2010
|
|
.Dt DL_ITERATE_PHDR 3
|
|
.Os
|
|
.Sh NAME
|
|
.Nm dl_iterate_phdr
|
|
.Nd iterate over program headers
|
|
.Sh SYNOPSIS
|
|
.In link.h
|
|
.Ft int
|
|
.Fn dl_iterate_phdr "int (*callback)(struct dl_phdr_info *, size_t, void*)" "void *data"
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Fn dl_iterate_phdr
|
|
function iterates over all shared objects loaded into a process's
|
|
address space, calling
|
|
.Fa callback
|
|
for each shared object, passing it information about the object's
|
|
program headers and the
|
|
.Fa data
|
|
argument.
|
|
The information about the program headers is passed in a structure
|
|
that is defined as:
|
|
.Bd -literal
|
|
struct dl_phdr_info {
|
|
Elf_Addr dlpi_addr;
|
|
const char *dlpi_name;
|
|
const Elf_Phdr *dlpi_phdr;
|
|
Elf_Half dlpi_phnum;
|
|
unsigned long long int dlpi_adds;
|
|
unsigned long long int dlpi_subs;
|
|
size_t dlpi_tls_modid;
|
|
void *dlpi_tls_data;
|
|
};
|
|
.Ed
|
|
.Pp
|
|
The members of
|
|
.Li struct dl_phdr_info
|
|
have the following meaning:
|
|
.Bl -tag -width XXXdlpi_phdr
|
|
.It Fa dlpi_addr
|
|
The base address at which the shared object is mapped into the address
|
|
space of the calling process.
|
|
.It Fa dlpi_name
|
|
The name of the shared object.
|
|
.It Fa dlpi_phdr
|
|
A pointer to the shared object's program headers.
|
|
.It Fa dlpi_phnum
|
|
The number of program headers in the shared object.
|
|
.It Fa dlpi_adds
|
|
The number of objects added into the main program.
|
|
.It Fa dlpi_subs
|
|
The number of objects removed from the main program.
|
|
.El
|
|
.Pp
|
|
To make it possible for programs to check whether any new members have
|
|
been added, the size of the structure is passed as an argument to
|
|
.Fa callback .
|
|
.Sh SEE ALSO
|
|
.Xr ld 1 ,
|
|
.Xr ld.elf_so 1 ,
|
|
.Xr dlfcn 3 ,
|
|
.Xr elf 5
|
|
.Sh HISTORY
|
|
The
|
|
.Nm
|
|
function first appeared in
|
|
.Nx 6.0 .
|