source: git/Singular/mod_raw.cc @ 5ea75c

spielwiese
Last change on this file since 5ea75c was 5ea75c, checked in by Hans Schönemann <hannes@…>, 24 years ago
*hannes: adaption to static.hmod_raw.cc git-svn-id: file:///usr/local/Singular/svn/trunk@4371 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 6.2 KB
Line 
1/****************************************
2*  Computer Algebra System SINGULAR     *
3****************************************/
4/* $Id: mod_raw.cc,v 1.8 2000-05-23 13:10:10 Singular Exp $ */
5/*
6 * ABSTRACT: machine depend code for dynamic modules
7 *
8 * Provides: dynl_open()
9 *           dynl_sym()
10 *           dynl_error()
11 *           dunl_close()
12*/
13
14#include "mod2.h"
15#include "static.h"
16#ifdef HAVE_STATIC
17#undef HAVE_DYNAMIC_LOADING
18#undef HAVE_DYN_RL
19#endif
20
21#if defined(HAVE_DYNAMIC_LOADING) || defined(HAVE_DYN_RL)
22#include "mod_raw.h"
23
24
25/*****************************************************************************
26 * SECTION ix86-linux / alpha-linux                                          *
27 *****************************************************************************/
28#if defined(ix86_Linux) || defined(DecAlpha_Linux) || defined(ix86_Linux_libc5)
29#include <dlfcn.h>
30
31void *dynl_open(
32  char *filename    /* I: filename to load */
33  )
34{
35  return(dlopen(filename, RTLD_NOW|RTLD_GLOBAL));
36}
37
38void *dynl_sym(void *handle, char *symbol)
39{
40  return(dlsym(handle, symbol));
41}
42
43int dynl_close (void *handle)
44{
45  return(dlclose (handle));
46}
47
48const char *dynl_error()
49{
50  return(dlerror());
51}
52#endif /* ix86_Linux */
53
54/*****************************************************************************
55 * SECTION HPUX-9/10                                                         *
56 *****************************************************************************/
57#if defined(HPUX_9) || defined(HPUX_10)
58#include <dl.h>
59
60typedef char *((*func_ptr) ());
61
62void *dynl_open(char *filename)
63{
64  shl_t           handle = shl_load(filename, BIND_DEFERRED, 0);
65
66  return ((void *) handle);
67}
68
69void *dynl_sym(void *handle, char *symbol)
70{
71  func_ptr        f;
72
73  if (shl_findsym((shl_t *) & handle, symbol, TYPE_PROCEDURE, &f) == -1)
74  {
75    if (shl_findsym((shl_t *) & handle, symbol, TYPE_UNDEFINED, &f) == -1)
76    {
77      f = (func_ptr) NULL;
78    }
79  }
80  return (f);
81}
82
83int dynl_close (void *handle)
84{
85  shl_unload((shl_t) handle);
86  return(0);
87}
88
89const char *dynl_error()
90{
91  static char errmsg[] = "shl_load failed";
92
93  return errmsg;
94}
95#endif /* HPUX_9  or HPUX_10 */
96
97/*****************************************************************************
98 * SECTION 68k-MPW                                                           *
99 *****************************************************************************/
100#ifdef 68k_MPW
101/* #    include <> */
102
103void *dynl_open(char *filename)
104{
105  return(NULL);
106}
107
108void *dynl_sym(void *handle, char *symbol)
109{
110  return(NULL);
111}
112
113int dynl_close (void *handle)
114{
115  return(0);
116}
117
118const char *dynl_error()
119{
120  static char errmsg[] = "support for dynamic loading not implemented";
121
122  return errmsg;
123}
124#  endif /* 68k_MPW */
125
126
127/*****************************************************************************
128 * SECTION AIX-4                                                             *
129 *****************************************************************************/
130#ifdef AIX_4
131/* #    include <> */
132
133void *dynl_open(char *filename)
134{
135  return(NULL);
136}
137
138void *dynl_sym(void *handle, char *symbol)
139{
140  return(NULL);
141}
142
143int dynl_close (void *handle)
144{
145  return(0);
146}
147
148const char *dynl_error()
149{
150  static char errmsg[] = "support for dynamic loading not implemented";
151
152  return errmsg;
153}
154#  endif /* AIX_4 */
155
156/*****************************************************************************
157 * SECTION IRIX-6                                                            *
158 *****************************************************************************/
159#ifdef IRIX_6
160/* #    include <> */
161
162void *dynl_open(char *filename)
163{
164  return(NULL);
165}
166
167void *dynl_sym(void *handle, char *symbol)
168{
169  return(NULL);
170}
171
172int dynl_close (void *handle)
173{
174  return(0);
175}
176
177const char *dynl_error()
178{
179  static char errmsg[] = "support for dynamic loading not implemented";
180
181  return errmsg;
182}
183#  endif /* IRIX_6 */
184
185/*****************************************************************************
186 * SECTION Sun3OS-4                                                          *
187 *****************************************************************************/
188#ifdef Sun3OS_4
189/* #    include <> */
190
191void *dynl_open(char *filename)
192{
193  return(NULL);
194}
195
196void *dynl_sym(void *handle, char *symbol)
197{
198  return(NULL);
199}
200
201int dynl_close (void *handle)
202{
203  return(0);
204}
205
206const char *dynl_error()
207{
208  static char errmsg[] = "support for dynamic loading not implemented";
209
210  return errmsg;
211}
212#endif /* Sun3OS_4 */
213
214/*****************************************************************************
215 * SECTION SunOS-4/5                                                         *
216 *****************************************************************************/
217#if defined(SunOS_4) || defined(SunOS_5)
218/* #    include <> */
219
220void *dynl_open(char *filename)
221{
222  return(NULL);
223}
224
225void *dynl_sym(void *handle, char *symbol)
226{
227  return(NULL);
228}
229
230int dynl_close (void *handle)
231{
232  return(0);
233}
234
235const char *dynl_error()
236{
237  static char errmsg[] = "support for dynamic loading not implemented";
238
239  return errmsg;
240}
241#endif /* SunOS_4 or SunOS_5 */
242
243/*****************************************************************************
244 * SECTION ix86-win                                                          *
245 *****************************************************************************/
246#ifdef ix86_win
247/* #    include <> */
248
249void *dynl_open(char *filename)
250{
251  return(NULL);
252}
253
254void *dynl_sym(void *handle, char *symbol)
255{
256  return(NULL);
257}
258
259int dynl_close (void *handle)
260{
261  return(0);
262}
263
264const char *dynl_error()
265{
266  static char errmsg[] = "support for dynamic loading not implemented";
267
268  return errmsg;
269}
270#endif /* ix86_win */
271
272/*****************************************************************************
273 * SECTION ppc-MPW                                                           *
274 *****************************************************************************/
275#ifdef ppc_MPW
276/* #    include <> */
277
278void *dynl_open(char *filename)
279{
280  return(NULL);
281}
282
283void *dynl_sym(void *handle, char *symbol)
284{
285  return(NULL);
286}
287
288int dynl_close (void *handle)
289{
290  return(0);
291}
292
293const char *dynl_error()
294{
295  static char errmsg[] = "support for dynamic loading not implemented";
296  return errmsg;
297}
298#  endif /* ppc_MPW */
299
300
301#endif /* HAVE_DYNAMIC_LOADING */
Note: See TracBrowser for help on using the repository browser.