tower@WHEATIES.AI.MIT.EDU (Leonard H. Tower Jr.) (01/25/89)
GDB has it's own bug list: bug-gdb@prep.ai.mit.edu Return-Path: <dupuy@cs.columbia.edu> Date: Tue, 24 Jan 89 19:35:04 EST From: Alexander Dupuy <dupuy@cs.columbia.edu> To: bug-gnu-utils@prep.ai.mit.edu Subject: Sun-2 support in GDB Reply-To: dupuy@columbia.edu GDB 3.0 lacks complete support for Sun-2s running SunOS 3.x or 4.x. Since Sun-2s are pretty similar to Sun-3s, it is fairly easy to add the requisite files. Since most Sun-2s are running a 3.x operating system, we make that the default in config.gdb. First the new files, then the patches. : This is a shar archive. Extract with sh, not csh. : The rest of this file will extract: : : m-sun2os2.h : m-sun2os4.h : echo x - m-sun2os2.h sed 's/^X//' > m-sun2os2.h << '//go.sysin dd *' X#include "m-sun2.h" X#undef NEW_SUN_PTRACE X#undef NEW_SUN_CORE X#undef ATTACH_DETACH //go.sysin dd * echo x - m-sun2os4.h sed 's/^X//' > m-sun2os4.h << '//go.sysin dd *' X#include "m-sun2.h" X#define SUNOS4 //go.sysin dd * exit *** /tmp/,RCSt1a14916 Tue Jan 24 17:27:42 1989 --- sun3-dep.c Tue Jan 24 17:25:52 1989 *************** *** 131,137 **** --- 131,139 ---- fetch_inferior_registers () { struct regs inferior_registers; + #ifndef sun2 struct fp_status inferior_fp_registers; + #endif sun2 extern char registers[]; if (remote_debugging) *************** *** 139,154 **** --- 141,162 ---- else { ptrace (PTRACE_GETREGS, inferior_pid, &inferior_registers); + #ifndef sun2 ptrace (PTRACE_GETFPREGS, inferior_pid, &inferior_fp_registers); + #endif sun2 bcopy (&inferior_registers, registers, 16 * 4); + #ifndef sun2 bcopy (&inferior_fp_registers, ®isters[REGISTER_BYTE (FP0_REGNUM)], sizeof inferior_fp_registers.fps_regs); + #endif sun2 *(int *)®isters[REGISTER_BYTE (PS_REGNUM)] = inferior_registers.r_ps; *(int *)®isters[REGISTER_BYTE (PC_REGNUM)] = inferior_registers.r_pc; + #ifndef sun2 bcopy (&inferior_fp_registers.fps_control, ®isters[REGISTER_BYTE (FPC_REGNUM)], sizeof inferior_fp_registers - sizeof inferior_fp_registers.fps_regs); + #endif sun2 } } *************** *** 160,166 **** --- 168,176 ---- int regno; { struct regs inferior_registers; + #ifndef sun2 struct fp_status inferior_fp_registers; + #endif sun2 extern char registers[]; if (remote_debugging) *************** *** 168,183 **** --- 178,199 ---- else { bcopy (registers, &inferior_registers, 16 * 4); + #ifndef sun2 bcopy (®isters[REGISTER_BYTE (FP0_REGNUM)], &inferior_fp_registers, sizeof inferior_fp_registers.fps_regs); + #endif sun2 inferior_registers.r_ps = *(int *)®isters[REGISTER_BYTE (PS_REGNUM)]; inferior_registers.r_pc = *(int *)®isters[REGISTER_BYTE (PC_REGNUM)]; + #ifndef sun2 bcopy (®isters[REGISTER_BYTE (FPC_REGNUM)], &inferior_fp_registers.fps_control, sizeof inferior_fp_registers - sizeof inferior_fp_registers.fps_regs); + #endif sun2 ptrace (PTRACE_SETREGS, inferior_pid, &inferior_registers); + #ifndef sun2 ptrace (PTRACE_SETFPREGS, inferior_pid, &inferior_fp_registers); + #endif sun2 } } *************** *** 441,446 **** --- 457,463 ---- 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; + #ifndef sun2 #ifdef SUNOS4 bcopy (corestr.c_fpu.f_fpstatus.fps_regs, ®isters[REGISTER_BYTE (FP0_REGNUM)], *************** *** 456,461 **** --- 473,479 ---- ®isters[REGISTER_BYTE (FPC_REGNUM)], sizeof corestr.c_fpstatus - sizeof corestr.c_fpstatus.fps_regs); #endif + #endif sun2 bcopy (&corestr.c_aouthdr, &core_aouthdr, sizeof (struct exec)); printf ("Core file is from \"%s\".\n", corestr.c_cmdname); *** /tmp/,RCSt1a16227 Tue Jan 24 18:18:07 1989 --- m-sun2.h Tue Jan 24 18:09:31 1989 *************** *** 193,198 **** --- 193,215 ---- #define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) (*(int *)(REGBUF)) + /* Enable use of alternate code to read and write registers. */ + + #define NEW_SUN_PTRACE + + /* Enable use of alternate code for Sun's format of core dump file. */ + + #define NEW_SUN_CORE + + /* Do implement the attach and detach commands. */ + + #define ATTACH_DETACH + + /* It is safe to look for symsegs on a Sun, because Sun's ld + does not screw up with random garbage at end of file. */ + + #define READ_GDB_SYMSEGS + /* This is a piece of magic that is given a register number REGNO and as BLOCKEND the address in the system of the end of the user structure and stores in ADDR the address in the kernel or core dump *** /tmp/,RCSt1a14977 Tue Jan 24 17:33:31 1989 --- config.gdb Mon Jan 23 19:27:34 1989 *************** *** 81,86 **** --- 81,95 ---- pinsnfile=gld-pinsn.c ;; sun2) + case $os in + os4|sunos4) + paramfile=m-sun2os4.h + depfile=sun3-dep.c;; + none|os3|sunos3) + depfile=sun3-dep.c;; + os2|sunos2) + paramfile=m-sun2os2.h;; + esac pinsnfile=m68k-pinsn.c opcodefile=m68k-opcode.h ;; -- inet: dupuy@cs.columbia.edu uucp: ...!rutgers!cs.columbia.edu!dupuy