Remove incorrect export declaration
[dyninst.git] / common / h / util.h
1 /*
2  * See the dyninst/COPYRIGHT file for copyright information.
3  * 
4  * We provide the Paradyn Tools (below described as "Paradyn")
5  * on an AS IS basis, and do not warrant its validity or performance.
6  * We reserve the right to update, modify, or discontinue this
7  * software at any time.  We shall have no obligation to supply such
8  * updates or modifications or any other form of support to you.
9  * 
10  * By your use of Paradyn, you understand and agree that we (or any
11  * other person or entity with proprietary rights in Paradyn) are
12  * under no obligation to provide either maintenance services,
13  * update services, notices of latent defects, or correction of
14  * defects for Paradyn.
15  * 
16  * This library is free software; you can redistribute it and/or
17  * modify it under the terms of the GNU Lesser General Public
18  * License as published by the Free Software Foundation; either
19  * version 2.1 of the License, or (at your option) any later version.
20  * 
21  * This library is distributed in the hope that it will be useful,
22  * but WITHOUT ANY WARRANTY; without even the implied warranty of
23  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
24  * Lesser General Public License for more details.
25  * 
26  * You should have received a copy of the GNU Lesser General Public
27  * License along with this library; if not, write to the Free Software
28  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
29  */
30
31
32 #if !defined(SYMTAB_EXPORT)
33   #if defined(_MSC_VER)
34     #if defined SYMTAB_LIB
35       #define SYMTAB_EXPORT __declspec(dllexport)
36     #else
37       #define SYMTAB_EXPORT __declspec(dllimport)
38     #endif
39   #else
40     #define SYMTAB_EXPORT __attribute__((visibility ("default")))
41   #endif
42 #endif
43
44 #if !defined(SYMLITE_EXPORT)
45   #if defined(_MSC_VER)
46     #if defined SYMLITE_LIB
47       #define SYMLITE_EXPORT __declspec(dllexport)
48     #else
49       #define SYMLITE_EXPORT __declspec(dllimport)
50     #endif
51   #else
52     #define SYMLITE_EXPORT __attribute__((visibility ("default")))
53   #endif
54 #endif
55
56 #if !defined(DYNELF_EXPORT)
57   #if defined(_MSC_VER)
58     #if defined DYNELF_LIB
59       #define DYNELF_EXPORT __declspec(dllexport)
60     #else
61       #define DYNELF_EXPORT __declspec(dllimport)
62     #endif
63   #else
64     #define DYNELF_EXPORT __attribute__((visibility ("default")))
65   #endif
66 #endif
67
68 #if !defined(DYNDWARF_EXPORT)
69   #if defined(_MSC_VER)
70     #if defined DYNDWARF_LIB
71       #define DYNDWARF_EXPORT __declspec(dllexport)
72     #else
73       #define DYNDWARF_EXPORT __declspec(dllimport)
74     #endif
75   #else
76     #define DYNDWARF_EXPORT __attribute__((visibility ("default")))
77   #endif
78 #endif
79
80 #if !defined(COMMON_EXPORT)
81   #if defined (_MSC_VER)
82     #if defined(COMMON_LIB)
83        #define COMMON_EXPORT __declspec(dllexport)
84     #else
85        #define COMMON_EXPORT __declspec(dllimport)   
86     #endif
87   #else
88     #define COMMON_EXPORT __attribute__((visibility ("default")))
89   #endif
90 #endif
91
92 #if !defined(COMMON_TEMPLATE_EXPORT)
93   #if defined (_MSC_VER)
94     #if defined(COMMON_LIB) || defined(INSTRUCTION_LIB) || \
95                 defined(SYMTAB_LIB)     || defined(BPATCH_LIBRARY)
96        #define COMMON_TEMPLATE_EXPORT __declspec(dllexport)
97     #else
98        #define COMMON_TEMPLATE_EXPORT __declspec(dllimport)   
99     #endif
100   #else
101     #define COMMON_TEMPLATE_EXPORT  __attribute__((visibility ("default")))
102   #endif
103 #endif
104
105 #if !defined(INSTRUCTION_EXPORT)
106   #if defined(_MSC_VER)
107     #if defined(INSTRUCTION_LIB)
108       #define INSTRUCTION_EXPORT __declspec(dllexport)
109     #else
110       #define INSTRUCTION_EXPORT __declspec(dllimport)
111     #endif
112   #else
113     #define INSTRUCTION_EXPORT __attribute__((visibility ("default")))
114 #endif
115 #endif
116
117 #if !defined(PARSER_EXPORT)
118   #if defined(_MSC_VER)
119     #if defined(PARSER_LIB)
120       #define PARSER_EXPORT __declspec(dllexport)
121     #else
122       #define PARSER_EXPORT __declspec(dllimport)
123     #endif
124   #else
125     #define PARSER_EXPORT __attribute__((visibility ("default")))
126 #endif
127 #endif
128
129 #if !defined(PATCHAPI_EXPORT)
130   #if defined(_MSC_VER)
131     #if defined(PATCHAPI_LIB)
132       #define PATCHAPI_EXPORT __declspec(dllexport)
133     #else
134       #define PATCHAPI_EXPORT __declspec(dllimport)
135     #endif
136   #else
137     #define PATCHAPI_EXPORT __attribute__((visibility ("default")))
138 #endif
139 #endif
140
141 #if !defined(DATAFLOW_EXPORT)
142   #if defined(_MSC_VER)
143     #if defined(DATAFLOW_LIB)
144       #define DATAFLOW_EXPORT __declspec(dllexport)
145     #else
146       #define DATAFLOW_EXPORT __declspec(dllimport)
147     #endif
148   #else
149     #define DATAFLOW_EXPORT __attribute__((visibility ("default")))
150 #endif
151 #endif
152
153 #if !defined(PC_EXPORT)
154   #if defined(_MSC_VER)
155     #if defined(PROCCONTROL_EXPORTS)
156       #define PC_EXPORT __declspec(dllexport)
157     #else
158       #define PC_EXPORT __declspec(dllimport)
159     #endif
160   #else
161     #define PC_EXPORT __attribute__((visibility ("default")))
162 #endif
163 #endif
164
165 #if !defined(SW_EXPORT)
166   #if defined(_MSC_VER)
167     #if defined(STACKWALKER_EXPORTS)
168       #define SW_EXPORT __declspec(dllexport)
169     #else
170       #define SW_EXPORT __declspec(dllimport)
171     #endif
172   #else
173     #define SW_EXPORT __attribute__((visibility ("default")))
174 #endif
175 #endif
176
177 #if !defined(INJECTOR_EXPORT)
178   #if defined(_MSC_VER)
179     #if defined(INJECTOR_EXPORTS)
180       #define INJECTOR_EXPORT __declspec(dllexport)
181     #else
182       #define INJECTOR_EXPORT __declspec(dllimport)
183     #endif
184   #else
185     #define INJECTOR_EXPORT __attribute__((visibility ("default")))
186 #endif
187 #endif
188
189 #if !defined(SYMEVAL_EXPORT)
190   #if defined(_MSC_VER)
191     #if defined(SYMEVAL_LIB)
192       #define SYMEVAL_EXPORT __declspec(dllexport)
193     #else
194       #define SYMEVAL_EXPORT __declspec(dllimport)
195     #endif
196   #else
197     #define SYMEVAL_EXPORT __attribute__((visibility ("default")))
198 #endif
199 #endif
200
201 #if !defined(THROW) && !defined(THROW_SPEC)
202 #if defined(_MSC_VER)
203 #define THROW_SPEC(x)
204 #define THROW
205 #else
206 #define THROW_SPEC(x) throw (x)
207 #define THROW throw ()
208 #endif
209 #endif
210
211 #ifndef __UTIL_H__
212 #define __UTIL_H__
213
214 #include <string>
215 #include "dyntypes.h"
216
217 /* GCC 4.7.0 and 4.7.1 broke ABI compatibility between C++11 and C++98
218  * code in a MAJOR way. Disallow that combination; other versions of
219  * the compiler are fine. 
220  */
221 #if !((__cplusplus >= 201103L) || defined(__GXX_EXPERIMENTAL_CXX0X__))
222 #if (__GNUC__ == 4 && __GNUC_MINOR__ == 7 && ((__GNUC_PATCHLEVEL__ == 0) || (__GNUC_PATCHLEVEL__ == 1)))
223 #error "Using GCC 4.7.0 or 4.7.1 with Dyninst requires the -std:c++0x or -std:c++11 flag. Other versions do not."
224 #endif
225 #endif
226
227 #if defined(_MSC_VER)
228 #pragma warning(disable: 4251 4275 4396 4996)
229 #endif
230
231
232 namespace Dyninst {
233
234 COMMON_EXPORT unsigned addrHashCommon(const Address &addr);
235 COMMON_EXPORT unsigned ptrHash(const void * addr);
236 COMMON_EXPORT unsigned ptrHash(void * addr);
237
238 COMMON_EXPORT unsigned addrHash(const Address &addr);
239 COMMON_EXPORT unsigned addrHash4(const Address &addr);
240 COMMON_EXPORT unsigned addrHash16(const Address &addr);
241
242 COMMON_EXPORT unsigned stringhash(const std::string &s);
243 COMMON_EXPORT std::string itos(int);
244 COMMON_EXPORT std::string utos(unsigned);
245
246 #define WILDCARD_CHAR '?'
247 #define MULTIPLE_WILDCARD_CHAR '*'
248
249 COMMON_EXPORT bool wildcardEquiv(const std::string &us, const std::string &them, bool checkCase = false );
250
251 const char *platform_string();
252 }
253
254 #endif