From: Nathan F. <nf...@us...> - 2005-01-15 20:28:41
|
Update of /cvsroot/sbcl/sbcl/tools-for-build In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6170/tools-for-build Modified Files: Tag: alpha64-3-branch ldso-stubs.lisp Log Message: 0.8.18.25.alpha64-3.7: "The rest is trivial." Minor changes: * tools-for-build/ldso-stubs.lisp: untabify and update OSF/1 stub for a dynamically-linked world; * src/runtime/alpha-assem.S: s/stl/stq/ (again, *sigh*) * src/assembly/alpha/arith.lisp: optimize GENERIC-+/GENERIC--; * src/compiler/generic/{interr,vm-type,vm-typetran}.lisp, src/code/{pred,interr}.lisp: update with new 64-bit types and add back specialized typechecks for {UN,}SIGNED-BYTE-32, on the suspicion that they will be needed for the FFI. Current status: plods forward until first GC (even with setting up the pretty-printer, woohoo!), where it dies mysteriously during scavenging. crhodes suggesting reverting the patches made earlier to GC, as jsnell thoroughly 64-bitized the GC for the x86-64 port; have to try that and see if that does anything. Various messages are blathered across the console about unaligned accesses during setup of the pretty-printer; those should be investigated... Index: ldso-stubs.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/tools-for-build/ldso-stubs.lisp,v retrieving revision 1.5 retrieving revision 1.5.2.1 diff -u -d -r1.5 -r1.5.2.1 --- ldso-stubs.lisp 6 Jan 2005 12:48:05 -0000 1.5 +++ ldso-stubs.lisp 15 Jan 2005 20:28:32 -0000 1.5.2.1 @@ -33,13 +33,13 @@ (defun ldso-stubify (fct str) (apply #'format str " .globl ldso_stub__~A ; \\ - FUNCDEF(ldso_stub__~A) ; \\ + FUNCDEF(ldso_stub__~A) ; \\ ldso_stub__~A: ; \\ - sethi %hi(~A),%g1 ; \\ - jmpl %g1+%lo(~A),%g0 ; \\ - nop /* delay slot*/ ; \\ + sethi %hi(~A),%g1 ; \\ + jmpl %g1+%lo(~A),%g0 ; \\ + nop /* delay slot*/ ; \\ .L~Ae1: ; \\ - .size ldso_stub__~A,.L~Ae1-ldso_stub__~A ;~%" + .size ldso_stub__~A,.L~Ae1-ldso_stub__~A ;~%" (make-list 9 :initial-element fct))) (defvar *preludes* '(" @@ -57,59 +57,60 @@ #!+(or x86 x86-64) " #define LDSO_STUBIFY(fct) \\ - .align 16 ; \\ + .align 16 ; \\ .globl ldso_stub__ ## fct ; \\ - .type ldso_stub__ ## fct,@function ; \\ + .type ldso_stub__ ## fct,@function ; \\ ldso_stub__ ## fct: ; \\ - jmp fct ; \\ + jmp fct ; \\ .L ## fct ## e1: ; \\ - .size ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ;" + .size ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ;" ;;; osf1 has ancient cpp that doesn't do ## #!+(and osf1 alpha) " #define LDSO_STUBIFY(fct) \\ .globl ldso_stub__/**/fct ; \\ ldso_stub__/**/fct: ; \\ - jmp fct ; \\ + lda $27, fct ; \\ + jmp ($27) ; \\ .L/**/fct/**/e1: ;" ;;; but there's no reason we need to put up with that on modern (Linux) OSes #!+(and linux alpha) " #define LDSO_STUBIFY(fct) \\ .globl ldso_stub__ ## fct ; \\ - .type ldso_stub__ ## fct,@function ; \\ + .type ldso_stub__ ## fct,@function ; \\ ldso_stub__ ## fct: ; \\ - jmp fct ; \\ + jmp fct ; \\ .L ## fct ## e1: ; \\ - .size ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ;" + .size ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ;" #!+(and linux ppc) " #define LDSO_STUBIFY(fct) \\ .globl ldso_stub__ ## fct ; \\ - .type ldso_stub__ ## fct,@function ; \\ + .type ldso_stub__ ## fct,@function ; \\ ldso_stub__ ## fct: ; \\ b fct ; \\ .L ## fct ## e1: ; \\ .size ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ;" #!+(and darwin ppc) " -#define LDSO_STUBIFY(fct) @\\ +#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" - +.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" + ;;; KLUDGE: set up the vital fifth argument, passed on the ;;; stack. Do this unconditionally, even if the stub is for a ;;; function with few arguments: it can't hurt. We only do this for @@ -119,21 +120,21 @@ #!+mips " #define LDSO_STUBIFY(fct) \\ .globl ldso_stub__ ## fct ; \\ - .type ldso_stub__ ## fct,@function ; \\ + .type ldso_stub__ ## fct,@function ; \\ ldso_stub__ ## fct: ; \\ - addiu $29,-48 ; \\ - sw $28,40($29) ; \\ - sw $31,44($29) ; \\ - lw $25,64($29) ; \\ - sw $25,16($29) ; \\ - la $25, fct ; \\ - jalr $25 ; \\ - lw $31,44($29) ; \\ - lw $28,40($29) ; \\ - addiu $29,48 ; \\ - jr $31 ; \\ + addiu $29,-48 ; \\ + sw $28,40($29) ; \\ + sw $31,44($29) ; \\ + lw $25,64($29) ; \\ + sw $25,16($29) ; \\ + la $25, fct ; \\ + jalr $25 ; \\ + lw $31,44($29) ; \\ + lw $28,40($29) ; \\ + addiu $29,48 ; \\ + jr $31 ; \\ .L ## fct ## e1: ; \\ - .size ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ;")) + .size ldso_stub__ ## fct,.L ## fct ## e1-ldso_stub__ ## fct ;")) (defvar *stubs* (append '("accept" @@ -233,7 +234,7 @@ "tzname" "unlink" "utimes" - "wait3" + "wait3" "write") ;; These aren't needed on the X86 because they're microcoded into the ;; FPU, so the Lisp VOPs can implement them directly without having to @@ -259,8 +260,8 @@ "dlerror" "dlopen" "dlsym") - #!+os-provides-dladdr - '("dladdr") + #!+os-provides-dladdr + '("dladdr") #!-(and sparc sunos) ;; !defined(SVR4) '("sigsetmask"))) |