0.6.12.36:
[sbcl.git] / src / runtime / ldso-stubs.S
1 /*
2  * stubs for C-linkage library functions which we need to refer to 
3  * from Lisp 
4  *
5  * These exist for the benefit of Lisp code that needs to refer to
6  * foreign symbols when dlsym() is not available (i.e. when dumping
7  * cold-sbcl.core, when we may be running in a host that's not SBCL,
8  * or on platforms that don't have it at all). If the runtime is
9  * dynamically linked, library functions won't be linked into it, so
10  * the map file won't show them. So, we need a bunch of stubs that
11  * nm(1) _can_ see.  
12  */
13
14 /*
15  * This software is part of the SBCL system. See the README file for
16  * more information.
17  *
18  * This software is derived from the CMU CL system, which was
19  * written at Carnegie Mellon University and released into the
20  * public domain. The software is in the public domain and is
21  * provided with absolutely no warranty. See the COPYING and CREDITS
22  * files for more information.
23  */
24
25         .file   "ldso-stubs.S"
26         .version        "01.01"
27 gcc2_compiled.:
28         .text
29
30 #if defined __i386__
31         
32 #define LDSO_STUBIFY(fct)                       \
33         .align 16 ;                             \
34 .globl ldso_stub__ ## fct ;                     \
35         .type    ldso_stub__ ## fct,@function ; \
36 ldso_stub__ ## fct: ;                           \
37         jmp fct ;                               \
38 .L ## fct ## e1: ;                              \
39         .size    ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ;
40
41 #elif defined alpha
42         
43         /* I _hope_ this is correct - I haven't checked in the manual
44          * yet.  It works to the point of building and passing tests,
45          * at any rate     - dan 2001.05.10 */
46 #define LDSO_STUBIFY(fct)                       \
47 .globl ldso_stub__ ## fct ;                     \
48         .type    ldso_stub__ ## fct,@function ; \
49 ldso_stub__ ## fct: ;                           \
50         jmp fct ;                               \
51 .L ## fct ## e1: ;                              \
52         .size    ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ;
53         
54 #else
55 #error unsupported CPU architecture
56 #endif
57         
58  LDSO_STUBIFY(accept)
59  LDSO_STUBIFY(access)
60  LDSO_STUBIFY(acos)
61  LDSO_STUBIFY(acosh)
62  LDSO_STUBIFY(asin)
63  LDSO_STUBIFY(asinh)
64  LDSO_STUBIFY(atanh)
65  LDSO_STUBIFY(bind)
66  LDSO_STUBIFY(cfgetispeed)
67  LDSO_STUBIFY(cfgetospeed)
68  LDSO_STUBIFY(cfsetispeed)
69  LDSO_STUBIFY(cfsetospeed)
70  LDSO_STUBIFY(chmod)
71  LDSO_STUBIFY(chown)
72  LDSO_STUBIFY(close)
73  LDSO_STUBIFY(closedir)
74  LDSO_STUBIFY(connect)
75  LDSO_STUBIFY(cosh)
76  LDSO_STUBIFY(creat)
77  LDSO_STUBIFY(dlclose)
78  LDSO_STUBIFY(dlerror)
79  LDSO_STUBIFY(dlopen)
80  LDSO_STUBIFY(dlsym)
81  LDSO_STUBIFY(dup)
82  LDSO_STUBIFY(dup2)
83  LDSO_STUBIFY(execve)
84  LDSO_STUBIFY(exit)
85  LDSO_STUBIFY(fchmod)
86  LDSO_STUBIFY(fchown)
87  LDSO_STUBIFY(fcntl)
88  LDSO_STUBIFY(fork)
89  LDSO_STUBIFY(free)
90  LDSO_STUBIFY(fstat)
91  LDSO_STUBIFY(fsync)
92  LDSO_STUBIFY(ftruncate)
93  LDSO_STUBIFY(getcwd)
94  LDSO_STUBIFY(getdtablesize)
95  LDSO_STUBIFY(getegid)
96  LDSO_STUBIFY(getenv)
97  LDSO_STUBIFY(getgid)
98  LDSO_STUBIFY(gethostbyaddr)
99  LDSO_STUBIFY(gethostbyname)
100  LDSO_STUBIFY(gethostname)
101  LDSO_STUBIFY(getitimer)
102  LDSO_STUBIFY(getpagesize)
103  LDSO_STUBIFY(getpeername)
104  LDSO_STUBIFY(getpgrp)
105  LDSO_STUBIFY(getpid)
106  LDSO_STUBIFY(getppid)
107  LDSO_STUBIFY(getrusage)
108  LDSO_STUBIFY(getsockname)
109  LDSO_STUBIFY(gettimeofday)
110  LDSO_STUBIFY(getuid)
111  LDSO_STUBIFY(hypot)
112  LDSO_STUBIFY(ioctl)
113  LDSO_STUBIFY(isatty)
114  LDSO_STUBIFY(kill)
115  LDSO_STUBIFY(killpg)
116  LDSO_STUBIFY(link)
117  LDSO_STUBIFY(listen)
118  LDSO_STUBIFY(log1p)
119  LDSO_STUBIFY(lseek)
120  LDSO_STUBIFY(lstat)
121  LDSO_STUBIFY(malloc)
122  LDSO_STUBIFY(memmove)
123  LDSO_STUBIFY(mkdir)
124  LDSO_STUBIFY(open)
125  LDSO_STUBIFY(opendir)
126  LDSO_STUBIFY(pipe)
127  LDSO_STUBIFY(pow)
128  LDSO_STUBIFY(read)
129  LDSO_STUBIFY(readdir)
130  LDSO_STUBIFY(readlink)
131  LDSO_STUBIFY(recv)
132  LDSO_STUBIFY(rename)
133  LDSO_STUBIFY(rmdir)
134  LDSO_STUBIFY(select)
135  LDSO_STUBIFY(send)
136  LDSO_STUBIFY(setitimer)
137  LDSO_STUBIFY(setpgrp)
138  LDSO_STUBIFY(sigblock)
139  LDSO_STUBIFY(sigpause)
140  LDSO_STUBIFY(sigsetmask)
141  LDSO_STUBIFY(sinh)
142  LDSO_STUBIFY(socket)
143  LDSO_STUBIFY(stat)
144  LDSO_STUBIFY(strerror)
145  LDSO_STUBIFY(symlink)
146  LDSO_STUBIFY(sync)
147  LDSO_STUBIFY(tanh)
148  LDSO_STUBIFY(tcdrain)
149  LDSO_STUBIFY(tcflow)
150  LDSO_STUBIFY(tcflush)
151  LDSO_STUBIFY(tcgetattr)
152  LDSO_STUBIFY(tcsendbreak)
153  LDSO_STUBIFY(tcsetattr)
154  LDSO_STUBIFY(truncate)
155  LDSO_STUBIFY(ttyname)
156  LDSO_STUBIFY(tzname)
157  LDSO_STUBIFY(unlink)
158  LDSO_STUBIFY(utimes)
159  LDSO_STUBIFY(wait3)    
160  LDSO_STUBIFY(write)
161
162 /*
163  * These aren't needed on the X86 because they're microcoded into the
164  * FPU, so the Lisp VOPs can implement them directly without having to
165  * call C code.
166  *
167  * Note: There might be some other functions in this category as well.
168  * E.g. I notice tanh() and acos() in the list above.. -- WHN 2001-06-07
169  */
170 #if !defined __i386__
171  LDSO_STUBIFY(sin)
172  LDSO_STUBIFY(cos) 
173  LDSO_STUBIFY(tan)      
174  LDSO_STUBIFY(atan) 
175  LDSO_STUBIFY(atan2) 
176  LDSO_STUBIFY(exp)      
177  LDSO_STUBIFY(log) 
178  LDSO_STUBIFY(log10) 
179  LDSO_STUBIFY(sqrt) 
180 #endif