From: Raymond W. <ra...@ti...> - 2006-10-09 04:14:47
|
> Brent Fulgham <bf...@pa...> writes: > >> Change 1.34 to "src/rruntime/x86-assm.S" doesn't compile under >> Windows (at least using Cygwin as the build environment) (see >> "http://sbcl.cvs.sourceforge.net/sbcl/sbcl/src/runtime/x86-assem.S?view=diff&r1=text&tr1=1.34&r2=text&tr2=1.33&diff_format=h" >> for the details.) >> >> It looks like the assembler doesn't know how to handle the .type and >> .size tags. >> >> Commenting lines 368 and 374 (using the current CVS sources) allows >> sbcl to build, but I'm not sure if any functionality is broken by >> this kludge. > > Thanks; I knew it would need testing. I believe that removing lines > 368 and 374 is probably the right answer, but it would be nice to have > confirmation from someone who actually knows what the assembler is > doing with those .type and .size directives. Given that this > trampoline only ever gets called from lisp, do I actually need them? > > Cheers, > > Christophe Version 1.35 of x86-assem.S does not compile under MacOSX, either. The cause appears to be a typo in line 367 (.global instead of .globl), and the use of .type and .size instead of SIZE and TYPE at line 368 and 374. With the patch below, sbcl builds successfully. Index: src/runtime/x86-assem.S =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/x86-assem.S,v retrieving revision 1.35 diff -u -r1.35 x86-assem.S --- src/runtime/x86-assem.S 6 Oct 2006 11:24:47 -0000 1.35 +++ src/runtime/x86-assem.S 9 Oct 2006 04:13:02 -0000 @@ -364,14 +364,14 @@ .text .align align_4byte,0x90 - .global GNAME(funcallable_instance_tramp) - .type GNAME(funcallable_instance_tramp),@function + .globl GNAME(funcallable_instance_tramp) + TYPE(GNAME(funcallable_instance_tramp)) GNAME(funcallable_instance_tramp): movl FUNCALLABLE_INSTANCE_FUNCTION_OFFSET(%eax),%eax /* KLUDGE: on this platform, whatever kind of function is in %rax * now, the first word of it contains the address to jump to. */ jmp *CLOSURE_FUN_OFFSET(%eax) - .size GNAME(funcallable_instance_tramp), .-GNAME(funcallable_instance_ tramp) + SIZE(GNAME(funcallable_instance_tramp)) /* * fun-end breakpoint magic |