Greetings! Just a followup note to say that I've reconfirmed this problem, and have a gdb trace. All is well with 2.95 -O6 -fomit-frame-pointer, but the following happens with gcc-3.2 with -O2 or greater: (For the time being, GCL lowers its gcc optimization to -O when using powerpc and >=gcc-3.2. )
============================================================================= [EMAIL PROTECTED]:~/gcl1/unixport$ gcc-3.2 -v gcc-3.2 -v Reading specs from /usr/lib/gcc-lib/powerpc-linux/3.2.3/specs Configured with: ../src/configure -v --enable-languages=c,c++,java,f77,proto,pascal,objc,ada --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.2 --enable-shared --with-system-zlib --enable-nls --without-included-gettext --enable-__cxa_atexit --enable-clocale=gnu --enable-java-gc=boehm --enable-objc-gc powerpc-linux Thread model: posix gcc version 3.2.3 20030210 (Debian prerelease) ============================================================================= cpp -I../h new_init.c |grep -5 MACROEXP { extern object sLfuncall ; sLfuncall = (1 == 1 ? make_ordinary("FUNCALL") : 1 == 0 ? make_si_ordinary("FUNCALL"): 1 == 2 ? make_keyword("FUNCALL"): (error("Bad pack variable in DEF_ORDINARY\n"),(object)0));} { extern object sLAmacroexpand_hookA; sLAmacroexpand_hookA = (1 == 1 ? make_special("*MACROEXPAND-HOOK*",sLfuncall) : (1 == 0 ? make_si_special("*MACROEXPAND-HOOK*",sLfuncall): (error("Bad pack variable in DEFVAR\n"),(object)0)));} ============================================================================= gdb raw_gcl gdb raw_gcl GNU gdb 5.3-debian Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "powerpc-linux"... (gdb) r ./ <foo r ./ <foo Starting program: /home/camm/gcl1/unixport/raw_gcl ./ <foo GCL (GNU Common Lisp) April 1994 32768 pages Building symbol table for /home/camm/gcl1/unixport/raw_gcl .. loading ./../lsp/export.lsp Initializing defmacro.o Initializing evalmacros.o Initializing top.o Initializing module.o loading ./../lsp/autoload.lsp Program received signal SIGSEGV, Segmentation fault. IapplyVector (fun=0x0, nargs=3, base=0x10264998) at nfunlink.c:197 197 switch(type_of(fun)) { (gdb) b make_special b make_special Breakpoint 1 at 0x1002d1f4: file symbol.d, line 112. (gdb) r r The program being debugged has been started already. Start it from the beginning? (y or n) y y Starting program: /home/camm/gcl1/unixport/raw_gcl ./ <foo GCL (GNU Common Lisp) April 1994 32768 pages Breakpoint 1, make_special (s=0x10249edc "*MACROEXPAND-HOOK*", v=0x0) at symbol.d:112 112 x = make_ordinary(s); (gdb) (gdb) bt bt #0 make_special (s=0x10249edc "*MACROEXPAND-HOOK*", v=0x0) at symbol.d:112 #1 0x10006f0c in NewInit () at new_init.c:128 #2 0x100032e8 in initlisp () at main.c:464 #3 0x10002d04 in main (argc=270925824, argv=0x10260000, envp=0x10300000) at main.c:330 #4 0x0fd08e04 in __libc_start_main () from /lib/libc.so.6 (gdb) p &make_special p &make_special $4 = (object (*)(char *, object)) 0x1002d1e0 <make_special> (gdb) frame 0 frame 0 #0 make_special (s=0x10249edc "*MACROEXPAND-HOOK*", v=0x0) at symbol.d:112 112 x = make_ordinary(s); (gdb) p &v p &v Address requested for identifier "v" which is in register $r29 (gdb) frame 1 frame 1 #1 0x10006f0c in NewInit () at new_init.c:128 128 DEFVAR("*MACROEXPAND-HOOK*",sLAmacroexpand_hookA,LISP,sLfuncall,"") (gdb) p sLfuncall p sLfuncall $5 = 0x10318288 (gdb) p &sLfuncall p &sLfuncall $6 = (object *) 0x10262c10 (gdb) i reg i reg r0 0x10006f0c 268463884 r1 0x7ffffc50 2147482704 r2 0x0 0 r3 0x10249edc 270835420 r4 0x0 0 r5 0x0 0 r6 0x10249ed4 270835412 r7 0x262f6cd5 640642261 r8 0x1 1 r9 0x10260000 270925824 r10 0x7 7 r11 0x7 7 r12 0x80808080 -2139062144 r13 0x1026a680 270968448 r14 0x0 0 r15 0x0 0 r16 0x0 0 r17 0x0 0 r18 0x0 0 r19 0x0 0 r20 0x10260000 270925824 r21 0xa 10 r22 0x10300000 271581184 r23 0x10260000 270925824 r24 0x10010000 268500992 r25 0x7fffffff 2147483647 r26 0x10290000 271122432 r27 0x10300000 271581184 r28 0x10260000 270925824 r29 0x10300000 271581184 r30 0x10260000 270925824 r31 0x10300000 271581184 pc 0x1002d1f4 268620276 ps 0x2d032 184370 cr 0x48000822 1207961634 lr 0x10006f0c 268463884 ctr 0x1000babc 268483260 xer 0x20000000 536870912 fpscr 0x82024000 -2113781760 vscr 0x0 0 vrsave 0x0 0 (gdb) disassemble (snip) 0x10006edc <NewInit+2616>: bl 0x10087e5c <LISP_makefun> 0x10006ee0 <NewInit+2620>: lis r3,4133 0x10006ee4 <NewInit+2624>: addi r3,r3,-24876 0x10006ee8 <NewInit+2628>: crclr 4*cr1+eq 0x10006eec <NewInit+2632>: bl 0x1002d0c8 <make_ordinary> 0x10006ef0 <NewInit+2636>: lis r9,4134 0x10006ef4 <NewInit+2640>: mr r0,r3 0x10006ef8 <NewInit+2644>: lwz r4,11280(r9) 0x10006efc <NewInit+2648>: lis r3,4133 0x10006f00 <NewInit+2652>: stw r0,11280(r9) 0x10006f04 <NewInit+2656>: addi r3,r3,-24868 0x10006f08 <NewInit+2660>: bl 0x1002d1e0 <make_special> ---Type <return> to continue, or q <return> to quit--- 0x10006f0c <NewInit+2664>: lis r9,4134 0x10006f10 <NewInit+2668>: stw r3,10576(r9) 0x10006f14 <NewInit+2672>: lis r3,4133 0x10006f18 <NewInit+2676>: addi r3,r3,-24848 0x10006f1c <NewInit+2680>: crclr 4*cr1+eq 0x10006f20 <NewInit+2684>: bl 0x1002d258 <make_si_ordinary> 0x10006f24 <NewInit+2688>: lis r9,4134 0x10006f28 <NewInit+2692>: mr r0,r3 0x10006f2c <NewInit+2696>: addi r4,r29,-5488 0x10006f30 <NewInit+2700>: lis r3,4133 0x10006f34 <NewInit+2704>: stw r0,10348(r9) 0x10006f38 <NewInit+2708>: addi r3,r3,-24836 ============================================================================= Take care, -- Camm Maguire [EMAIL PROTECTED] ========================================================================== "The earth is but one country, and mankind its citizens." -- Baha'u'llah