On Tue, Sep 9, 2014 at 1:09 AM, Fausto Saporito <[email protected]> wrote:
> 2014-09-09 9:07 GMT+02:00 Carl Shapiro <[email protected]>: > > > > On Mon, Sep 8, 2014 at 11:50 PM, Fausto Saporito < > [email protected]> > > wrote: > >> > >> > Can we find out what is in a1 at the time of the crash? That should > be > >> > the > >> > jump target. I am curious if it is 0, which it certainly seems like, > >> > but we > >> > have no idea what the debugger might be doing behind your back. If > the > >> > lisp.nm file does not contain an address for debug_print, genesis will > >> > >> this is the line in lisp.nm > >> > >> 0x000000120152ec T debug_print > > > > > > Here is some of what my lisp.nm says for 18a on x86 > > > > 0804e5a0 T call_into_c > > ... > > 0804a940 T debug_print > > I have also call_into_c > > 0x0000001201b550 T call_into_c > > > And here is what the disassembly of %initial-function on 18a looks like > > > > * (disassemble 'COMMON-LISP::%INITIAL-FUNCTION) > > > > 550E6F88: .ENTRY COMMON-LISP::%INITIAL-FUNCTION() ; (FUNCTION NIL > > (VALUES ..)) > > 6FA0: POP DWORD PTR [EBP-8] > > 6FA3: LEA ESP, [EBP-96] > > > > 6FA6: TEST ECX, ECX > > 6FA8: JNE L0 > > 6FAE: MOV EAX, [#x550E6E7C] ; No-arg-parsing entry point > > 6FB4: PUSH EAX > > 6FB5: LEA EAX, [#x804A940] > > 6FBB: CALL #x804E5A0 > > > > As you can see, debug_print is called indirectly through call_into_c. If > > either of these functions could not be found in your lisp.nm or, if there > > was a parsing error, you would see a lot of zeros. > > > > What kind of warnings, if any, do you get when you build a kernel.core > > regarding foreign symbols? Anything like "Ignoring malformed line..." or > > "Undefined foreign symbol: ..."? You can see a list of these things > around > > the definition of load-foreign-symbol-table in > > compiler/generic/new-genesis.lisp. > > no warnings at all > > But, in compile-compiler.log, at the end of the file, (in the > alpha-cross directory) I have these warnings: > > ; Warning: These functions are undefined: > ; LISP::COLD-REGISTER-FOREIGN-LINKAGE ALPHA:FIXUP-CODE-OBJECT > ALPHA:SANCTIFY-F > OR-EXECUTION > I see similar warnings when cross-compiling to sparc. > ; > > In compile-compiler.log (in the alpha-target directory) I have this > warning: > ; Warning: This function is undefined: > ; LISP::COLD-REGISTER-FOREIGN-LINKAGE > ; > This might be ok. At least the comment for fop-foriegn-data-fixup in new-genesis.lisp indicates it might be ok. > > but the first of this warning is very strange... > cold-register-foreign-linkage should be use only if I have > linkage-table as feature, if I understood well the code > but I removed that feature... > > ... searching in the compile-lisp.log (alpha-target directory), I > found two errors... but those didn't prevent the creation of > kernel.core! > > ; Comment: $Header: /project/cmucl/cvsroot/src/code/unix.lisp,v 1.107 > 2005/10/10 > 18:46:39 rtoy Exp $ > > ; > > ; Warning: Redefining SWBLK-T to be: > ; (SIGNED 64), > ; was > ; (SIGNED 32) > ; ; > > ; Warning: Redefining SIZE-T to be: > ; (UNSIGNED 64), > ; was > ; (UNSIGNED 32) > ; ; > > ; Error: (during macroexpansion) > ; Error while parsing arguments to DEFMACRO DEF-ALIEN-TYPE: > ; Invalid number of elements in: > ; (TIME-T LONG UNSIGNED-INT) > ; to satisfy lambda-list: .. > ; ; > > ; Error: (during macroexpansion) > ; Error while parsing arguments to DEFMACRO DEF-ALIEN-TYPE: > ; Invalid number of elements in: > ; (DEV-T INT UNSIGNED-LONG) > ; to satisfy lambda-list: .. > Probably harmless right now but these will eventually need to be fixed. > ; > ; Compiling DEFTYPE FILE-OFFSET: > ; Compiling Top-Level Form: > > and at the end of the log file I have: > > > ; Warning: 35235 more uses of undefined type STREAM:FILE-SIMPLE-STREAM. > ; ; > > ; Warning: These functions are undefined: > ; KERNEL:%SET-SYMBOL-HASH ALPHA::COMPATIBLE-FUNCTION-TYPES-P > ; ; > > ; Warning: This type is undefined: > ; STREAM:FILE-SIMPLE-STREAM > > > > > > Also, you can test my theory by providing a better default than 0 for > > missing undefined symbols like so > > > > (defun lookup-foreign-symbol (name) > > (multiple-value-bind > > (value found) > > (gethash name *cold-foreign-symbol-table* #xDEADDEAD) > > (unless found > > (warn "Undefined foreign symbol: ~S" name)) > > value)) > > > > my definition of such function in new-genesis.lisp is quite different. > I have the gethash line with nil at the end. Can I modify only that > value to "DEAD"? :D > -- Ray _______________________________________________ cmucl-help mailing list [email protected] http://lists.zs64.net/mailman/listinfo/cmucl-help
