Lots of changes
[kopensolaris-gnu/glibc.git] / rtld_db / sysdeps / unix / sysv / solaris2 / kopensolaris-gnu / 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 <sys/link.h>
27 #include <dlfcn.h>
28
29 #define RD_VERSION1     1
30 #define RD_VERSION2     2
31 #define RD_VERSION3     3
32 #define RD_VERSION4     4
33 #define RD_VERSION      RD_VERSION4
34
35 typedef enum
36   {
37         RD_ERR,
38         RD_OK,
39         RD_NOCAPAB,
40         RD_DBERR,
41         RD_NOBASE,
42         RD_NODYNAM,
43         RD_NOMAPS
44   } rd_err_e;
45
46 typedef struct rd_agent rd_agent_t;
47
48 typedef struct rd_loadobj
49   {
50         psaddr_t rl_nameaddr;
51         unsigned int rl_flags;
52         psaddr_t rl_base;
53         psaddr_t rl_data_base;
54         Lmid_t rl_lmident;
55         psaddr_t rl_refnameaddr;
56         psaddr_t rl_plt_base;
57         unsigned int rl_plt_size;
58         psaddr_t rl_bend;
59         psaddr_t rl_padstart;
60         psaddr_t rl_padend;
61         psaddr_t rl_dynamic;
62         unsigned long rl_tlsmodid;
63   } rd_loadobj_t;
64
65 /* r_flags values.  */
66 #define RD_FLG_MEM_OBJECT       0x0001
67
68 typedef int rl_iter_f (const rd_loadobj_t *, void *);
69
70 typedef enum
71   {
72         RD_NOTIFY_BPT,
73         RD_NOTIFY_AUTOBPT,
74         RD_NOTIFY_SYSCALL
75   } rd_notify_e;
76
77 typedef struct rd_notify
78   {
79         rd_notify_e type;
80         union
81           {
82                 psaddr_t bptaddr;
83                 long syscallno;
84           } u;
85   } rd_notify_t;
86
87 typedef enum
88   {
89         RD_NOSTATE = 0,
90         RD_CONSISTENT,
91         RD_ADD,
92         RD_DELETE
93   } rd_state_e;
94
95 typedef struct rd_event_msg
96   {
97         rd_event_e type;
98         union
99           {
100                 rd_state_e state;
101           } u;
102   } rd_event_msg_t;
103
104 #endif /* _RTLD_DB_H */