*/
#define LANGUAGE_ASSEMBLY
#include "sbcl.h"
+
.text
#if defined LISP_FEATURE_X86
.L ## fct ## e1: ; \
.size ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ;
-#elif defined LISP_FEATURE_PPC
+#elif ((defined LISP_FEATURE_PPC) && (defined LISP_FEATURE_LINUX))
#define LDSO_STUBIFY(fct) \
.globl ldso_stub__ ## fct ; \
.type ldso_stub__ ## fct,@function ; \
b fct ; \
.L ## fct ## e1: ; \
.size ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ;
+
+#elif ((defined LISP_FEATURE_PPC) && (defined LISP_FEATURE_DARWIN))
+#define LDSO_STUBIFY(fct) @\
+.text @\
+.globl ldso_stub___ ## fct @\
+ldso_stub___ ## fct: @\
+ b ldso_stub__ ## fct ## stub @\
+.symbol_stub ldso_stub__ ## fct ## stub: @\
+.indirect_symbol _ ## fct @\
+ lis r11,ha16(ldso_stub__ ## fct ## $lazy_ptr) @\
+ lwz r12,lo16(ldso_stub__ ## fct ## $lazy_ptr)(r11) @\
+ mtctr r12 @\
+ addi r11,r11,lo16(ldso_stub__ ## fct ## $lazy_ptr) @\
+ bctr @\
+.lazy_symbol_pointer @\
+ldso_stub__ ## fct ## $lazy_ptr: @\
+ .indirect_symbol _ ## fct @\
+ .long dyld_stub_binding_helper
#elif defined LISP_FEATURE_SPARC
LDSO_STUBIFY(connect)
LDSO_STUBIFY(cosh)
LDSO_STUBIFY(creat)
+#ifndef LISP_FEATURE_DARWIN
LDSO_STUBIFY(dlclose)
LDSO_STUBIFY(dlerror)
LDSO_STUBIFY(dlopen)
LDSO_STUBIFY(dlsym)
+#endif
LDSO_STUBIFY(dup)
LDSO_STUBIFY(dup2)
LDSO_STUBIFY(execve)
LDSO_STUBIFY(send)
LDSO_STUBIFY(setitimer)
LDSO_STUBIFY(setpgrp)
+ LDSO_STUBIFY(setsid)
#if !defined(SVR4)
LDSO_STUBIFY(sigsetmask)
#endif
* Note: There might be some other functions in this category as well.
* E.g. I notice tanh() and acos() in the list above.. -- WHN 2001-06-07
*/
-#if !defined __i386__
+#if !defined LISP_FEATURE_X86
LDSO_STUBIFY(sin)
LDSO_STUBIFY(cos)
LDSO_STUBIFY(tan)