Greetings! This is due to a long-standing design bug in the .data format appended to the .o file and used to initialize lisp objects on loading compiled binaries.
Referenced lisp symbols are written with out with package prefixes, and stored in a vector, which is unreadable unless the packages exist at that time. GCL makes a crude attempt at detecting 'package operations' and moving these to the head of the file, which of course is dangerous and triggers the warning. The obvious solution is to leave the vector of symbols uninitialized until an element is referenced, and then store the symbol at the last minute. On my todo list. Take care, Raymond Toy <[email protected]> writes: > If you compile something like: > > (in-package "CL-USER") > (defun zot (x) > (print x)) > (print *package*) > (in-package "CL") > (cl:print *package*) > (defun zot-cl (x) > (print 'zot-cl)) > > I get warnings from the second in-package that the in-package > operation is in a bad place. What does that really mean? > > If I load the result, CL-USER is printed twice, but zot-cl is actually > in the CL package, not CL-USER. > > So what does this all really mean? > > -- > Ray > > > _______________________________________________ > Gcl-devel mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/gcl-devel > > > > -- Camm Maguire [email protected] ========================================================================== "The earth is but one country, and mankind its citizens." -- Baha'u'llah _______________________________________________ Gcl-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/gcl-devel
