X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fldso-stubs.S;h=73ef19f081df5783364fed779b6db5929470e1a8;hb=1b650be8b800cf96e2c268ae317fb26d0bf36827;hp=736edab85a5b47fd4ce1bdfc768b25421b79ab4e;hpb=4df3887d4f74248fb2ce830b86eb07fd30986d8a;p=sbcl.git diff --git a/src/runtime/ldso-stubs.S b/src/runtime/ldso-stubs.S index 736edab..73ef19f 100644 --- a/src/runtime/ldso-stubs.S +++ b/src/runtime/ldso-stubs.S @@ -24,13 +24,12 @@ * provided with absolutely no warranty. See the COPYING and CREDITS * files for more information. */ +#define LANGUAGE_ASSEMBLY +#include "sbcl.h" - .file "ldso-stubs.S" - .version "01.01" -gcc2_compiled.: .text -#if defined __i386__ +#if defined LISP_FEATURE_X86 #define LDSO_STUBIFY(fct) \ .align 16 ; \ @@ -41,7 +40,17 @@ ldso_stub__ ## fct: ; \ .L ## fct ## e1: ; \ .size ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ; -#elif defined alpha +#elif ((defined LISP_FEATURE_OSF1) && (defined LISP_FEATURE_ALPHA)) +/* osf1 has ancient cpp that doesn't do ## */ +#define LDSO_STUBIFY(fct) \ +.globl ldso_stub__/**/fct ; \ +ldso_stub__/**/fct: ; \ + jmp fct ; \ +.L/**/fct/**/e1: ; + + +#elif ((defined LISP_FEATURE_LINUX) && (defined LISP_FEATURE_ALPHA)) +/* but there's no reason we need to put up with that on modern (Linux) OSes */ #define LDSO_STUBIFY(fct) \ .globl ldso_stub__ ## fct ; \ .type ldso_stub__ ## fct,@function ; \ @@ -50,7 +59,7 @@ ldso_stub__ ## fct: ; \ .L ## fct ## e1: ; \ .size ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ; -#elif defined ppc +#elif ((defined LISP_FEATURE_PPC) && (defined LISP_FEATURE_LINUX)) #define LDSO_STUBIFY(fct) \ .globl ldso_stub__ ## fct ; \ .type ldso_stub__ ## fct,@function ; \ @@ -58,8 +67,26 @@ ldso_stub__ ## fct: ; \ 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 sparc +#elif defined LISP_FEATURE_SPARC /* This is an attempt to follow DB's hint of sbcl-devel * 2001-09-18. -- CSR */ @@ -96,10 +123,12 @@ ldso_stub__ ## fct: ; \ 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) @@ -157,7 +186,10 @@ ldso_stub__ ## fct: ; \ LDSO_STUBIFY(send) LDSO_STUBIFY(setitimer) LDSO_STUBIFY(setpgrp) + LDSO_STUBIFY(setsid) +#if !defined(SVR4) LDSO_STUBIFY(sigsetmask) +#endif LDSO_STUBIFY(sinh) LDSO_STUBIFY(socket) LDSO_STUBIFY(stat)