1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 #if !defined LT__PRIVATE_H
32 #define LT__PRIVATE_H 1
33
34 #if defined LT_CONFIG_H
35 # include LT_CONFIG_H
36 #else
37 # include <config.h>
38 #endif
39
40 #include <stdio.h>
41 #include <ctype.h>
42 #include <assert.h>
43 #include <errno.h>
44 #include <string.h>
45
46 #if defined HAVE_UNISTD_H
47 # include <unistd.h>
48 #endif
49
50
51 #include "lt__alloc.h"
52 #include "lt__dirent.h"
53 #include "lt__strl.h"
54 #include "lt__glibc.h"
55
56
57 #include "ltdl.h"
58
59 #if defined WITH_DMALLOC
60 # include <dmalloc.h>
61 #endif
62
63
64
65 #ifndef LT_GLOBAL_DATA
66 # if defined __WINDOWS__ || defined __CYGWIN__
67 # if defined DLL_EXPORT
68 # define LT_GLOBAL_DATA __declspec(dllexport)
69 # endif
70 # endif
71 # ifndef LT_GLOBAL_DATA
72 # define LT_GLOBAL_DATA
73 # endif
74 #endif
75
76 #ifndef __attribute__
77 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
78 # define __attribute__(x)
79 # endif
80 #endif
81
82 #ifndef LT__UNUSED
83 # define LT__UNUSED __attribute__ ((__unused__))
84 #endif
85
86
87 LT_BEGIN_C_DECLS
88
89 #if !defined errno
90 extern int errno;
91 #endif
92
93 LT_SCOPE void lt__alloc_die_callback (void);
94
95
96
97 #define STRNEQ(s1, s2) (strcmp((s1), (s2)) != 0)
98 #define STREQ(s1, s2) (strcmp((s1), (s2)) == 0)
99
100
101
102
103
104
105 typedef struct {
106 lt_dlinterface_id key;
107 void * data;
108 } lt_interface_data;
109
110 struct lt__handle {
111 lt_dlhandle next;
112 const lt_dlvtable * vtable;
113 lt_dlinfo info;
114 int depcount;
115 lt_dlhandle * deplibs;
116 lt_module module;
117 void * system;
118 lt_interface_data * interface_data;
119 int flags;
120 };
121
122 struct lt__advise {
123 unsigned int try_ext:1;
124 unsigned int is_resident:1;
125 unsigned int is_symglobal:1;
126
127 unsigned int is_symlocal:1;
128
129 unsigned int try_preload_only:1;
130 };
131
132
133
134
135
136
137 #define LT__STRERROR(name) lt__error_string(LT_CONC(LT_ERROR_,name))
138
139 #define LT__GETERROR(lvalue) (lvalue) = lt__get_last_error()
140 #define LT__SETERRORSTR(errormsg) lt__set_last_error(errormsg)
141 #define LT__SETERROR(errorcode) LT__SETERRORSTR(LT__STRERROR(errorcode))
142
143 LT_SCOPE const char *lt__error_string (int errorcode);
144 LT_SCOPE const char *lt__get_last_error (void);
145 LT_SCOPE const char *lt__set_last_error (const char *errormsg);
146
147 LT_END_C_DECLS
148
149 #endif