Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!rpi!rpi.edu!tale From: tale@pawl.rpi.edu (David C Lawrence) Newsgroups: gnu.gdb.bug Subject: gdb under sunos 4.0 Message-ID: Date: 14 Mar 89 18:59:08 GMT Sender: usenet@rpi.edu Reply-To: tale@pawl.rpi.edu Distribution: gnu Organization: The Octagon Room Lines: 67 (This is a re-request for help. I received no response on the first.) In the Emacs 18.53 distribution, gdb is broken in SunOS 4.0 due to changes in , which changed the struct in core.h which was originally declared in . This is fixed by fixing the references to that part of the struct in core.c. Well, -almost- fixed. The pointer that used to be surrounded with #ifdef's for sun in core.h are now surrounded by FPU. Unfortunately, FPU is only #defined in reg.h if KERNEL is defined. Not knowing my way well enough around 4.0, all I've done is #define FPU and hoped for the best. It might work just fine, but because it is only defined if KERNEL is (in theory), I fear I may have only replaced a broken version that doesn't compile with a broken one that does. Would someone either please tell me whether this patch is adequate or if it made a serious blunder? Thanks. (It is now three hours after I started this note and I am ready for bed. In between doing other things, I remade gdb and now am unable to run any programmes within gdb. It sets exec-file and load-file and when it starts to run, it bombs out with a return code of 0177 and a "crt0: /usr/lib/ld.so mapping failure". The following is the only modifications I made; is this a SunOS 4.0 problem? Or is my waning energy playing with my brain? Either way, you help is appreciated.) *** core.orig.c Thu Mar 9 22:58:50 1989 --- core.c Fri Mar 10 00:28:50 1989 *************** *** 36,41 **** --- 36,44 ---- #endif #ifdef NEW_SUN_CORE + #ifndef FPU + #define FPU + #endif /* FPU */ #include #else /* not NEW_SUN_CORE */ #ifdef UMAX_CORE *************** *** 204,215 **** bcopy (&corestr.c_regs, registers, 16 * 4); *(int *)®isters[REGISTER_BYTE (PS_REGNUM)] = corestr.c_regs.r_ps; *(int *)®isters[REGISTER_BYTE (PC_REGNUM)] = corestr.c_regs.r_pc; ! bcopy (corestr.c_fpstatus.fps_regs, ®isters[REGISTER_BYTE (FP0_REGNUM)], ! sizeof corestr.c_fpstatus.fps_regs); ! bcopy (&corestr.c_fpstatus.fps_control, ®isters[REGISTER_BYTE (FPC_REGNUM)], ! sizeof corestr.c_fpstatus - sizeof corestr.c_fpstatus.fps_regs); bcopy (&corestr.c_aouthdr, &core_aouthdr, sizeof (struct exec)); --- 207,218 ---- bcopy (&corestr.c_regs, registers, 16 * 4); *(int *)®isters[REGISTER_BYTE (PS_REGNUM)] = corestr.c_regs.r_ps; *(int *)®isters[REGISTER_BYTE (PC_REGNUM)] = corestr.c_regs.r_pc; ! bcopy (corestr.c_fpu.f_fpstatus.fps_regs, ®isters[REGISTER_BYTE (FP0_REGNUM)], ! sizeof corestr.c_fpu.f_fpstatus.fps_regs); ! bcopy (&corestr.c_fpu.f_fpstatus.fps_control, ®isters[REGISTER_BYTE (FPC_REGNUM)], ! sizeof corestr.c_fpu.f_fpstatus - sizeof corestr.c_fpu.f_fpstatus.fps_regs); bcopy (&corestr.c_aouthdr, &core_aouthdr, sizeof (struct exec)); -- tale@rpitsmts.bitnet, tale%mts@rpitsgw.rpi.edu, tale@pawl.rpi.edu