From: William H. N. <wil...@ai...> - 2001-02-20 03:13:54
|
On Mon, Feb 19, 2001 at 11:57:03PM +0000, Daniel Barlow wrote: > lispobj debug_print(lispobj string) > { > - fprintf(stderr, "%s\n", (char *)(((struct vector *)PTR(string))->data)); > + char untouched[32]; > + fprintf(stderr, "%s\n", > + (char *)(((struct vector *)PTR(string))->data),untouched); > return NIL; > } > > > is not the kind of fix I'm proud of, but It Seems To Work. And > anyway, :sb-show may be almost a part of my family by now, but that > doesn't make it a _normal_ thing to have enabled. Uh, right.:-| But there is probably a lot to be said for It Seems To Work at this point. A lot of debugging and cleaning up can wait until the system works end-to-end. > Onto challenges fresh, then: sb!impl:define-assembly-routine doesn't > exist in my cold-sbcl.core and isn't created anywhere I can see in > cold-init.lisp - this causes attempts to build > assembly/target/assem-rtns to die miserably. On the other hand, if I > remove the :assem flag from that file in stems-and-flags.lisp-expr > then the CMUCL-hosted compiler builds it fine. With reference to your > comments in cold/warm.lisp I also do not understand how ASSEMBLE-FILE > works, but it would seem at least that getting the cross-compiler to > compile those files is not currently a win. > > Any pointers? The question there, if you missed it, was "where does > the macro DEFINE-ASSEMBLY-ROUTINE come from in a cold core that's > initialized as far as the toplevel?" DEF!MACRO DEFINE-ASSEMBLY-ROUTINE is in src/assembly/assemfile.lisp. A minor pet project of mine is to make global definitions FOO lexically findable with "find -name '*.lisp' | xargs egrep 'def.*foo'" if possible, since that's my preferred poor man's way of browsing the system. In current SBCL such a search still fails in many cases (and in some cases like structure accessors it's always going to fail) but it does work in this case. As a fallback, you can sometimes ask your running SBCL where something is defined. In this case, first you have to guess that it's in SB-C, not SB-IMPL (or else just be methodical enough always to start with APROPOS) or you'll come up with nothing, but once you get the right package, you can find it: * (describe 'sb-c::define-assembly-routine) SB-C:DEFINE-ASSEMBLY-ROUTINE is an external symbol in #<PACKAGE "SB-C">. Macro-function: #<FUNCTION "DEF!MACRO DEFINE-ASSEMBLY-ROUTINE" {1959E61}> Macro arguments: (#:whole-434 #:environment-435) On Sun, Feb 18, 2001 09:24:31 AM CST it was compiled from: /usr/stuff/sbcl/src/assembly/assemfile.lisp Created: Tuesday, November 7, 2000 11:50:11 AM CST I'd guess something wrong with packaging, something wrong with assembly-level files getting built only based on something like #+x86 which hasn't been updated for Alpha, or something wrong with DEF!MACRO. The first is the most likely, since I've had a ton of packaging problems, some self-inflicted, some not. And the last seems most unlikely, since DEF!MACRO is the same mechanism that's used to define some fundamental things like DEFTYPE and DEFSETF, so if it's not working, I'd expect your initialized cold core would be pretty seriously dain-bramaged in other ways besides this. -- William Harold Newman <wil...@ai...> software consultant PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C |