badf82a0a37ad3bd86c6358899bc78fe1cd9362f
[kopensolaris-gnu/glibc.git] / rtld_db / rtld_db.h
1 /* Copyright (C) 2008 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3    Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, write to the Free
17    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18    02111-1307 USA.  */
19
20 #ifndef _RTLD_DB_H
21 #define _RTLD_DB_H
22
23 #include <sys/types.h>
24 #include <features.h>
25 #include <proc_service.h>
26 #include <dlfcn.h>
27
28 #define RD_VERSION1     1
29 #define RD_VERSION2     2
30 #define RD_VERSION3     3
31 #define RD_VERSION4     4
32 #define RD_VERSION      RD_VERSION4
33
34 typedef enum
35   {
36         RD_ERR,
37         RD_OK,
38         RD_NOCAPAB,
39         RD_DBERR,
40         RD_NOBASE,
41         RD_NODYNAM,
42         RD_NOMAPS
43   } rd_err_e;
44
45 typedef struct rd_agent rd_agent_t;
46
47 typedef struct rd_loadobj
48   {
49         psaddr_t rl_nameaddr;
50         unsigned int rl_flags;
51         psaddr_t rl_base;
52         psaddr_t rl_data_base;
53         Lmid_t rl_lmident;
54         psaddr_t rl_refnameaddr;
55         psaddr_t rl_plt_base;
56         unsigned int rl_plt_size;
57         psaddr_t rl_bend;
58         psaddr_t rl_padstart;
59         psaddr_t rl_padend;
60         psaddr_t rl_dynamic;
61         unsigned long rl_tlsmodid;
62   } rd_loadobj_t;
63
64 /* r_flags values.  */
65 #define RD_FLG_MEM_OBJECT       0x0001
66
67 typedef int rl_iter_f (const rd_loadobj_t *, void *);
68
69 #endif /* _RTLD_DB_H */