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