🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.gdb.bug
Article #10088

[eirik@elf.tn.cornell.edu: sparc core files and gdb 3.90.11]

#10088
From: rms
Date: Sun, 29 Jul 1990 02:22
195 lines
6856 bytes
Return-Path: <eirik@elf.tn.cornell.edu>
Date: Fri, 27 Jul 90 19:39:07 EDT
From: "Eirik Fuller" <eirik@elf.tn.cornell.edu>
To: rms@ai.mit.edu
Subject: sparc core files and gdb 3.90.11

Sorry I don't know where to send this; it doesn't seem appropriate for
bug-gdb since the bug described here does not exist in gdb 3.5, the
most recent official release I know of.  A couple of months ago I'd
have sent it to Jim Kingdon.  I'm open to suggestions about better
places to send reports like this.

With gdb 3.90.11, the last gdb.tar.Z that Jim made on pogo, gdb is
unable to find registers in a core file.  With the enclosed patches,
it does find the register values.  I don't know where the value
0xff000000 came from, but the correct value, USRSTACK from vmparam.h,
is how gdb 3.5 defines STACK_END_ADDR; numerically, it is 0xf8000000


*** sparc-xdep.c~	Fri Apr 20 21:33:53 1990
--- sparc-xdep.c	Fri Jul 27 13:49:05 1990
***************
*** 235,240 ****
--- 235,241 ----
  	       &registers[REGISTER_BYTE (FPS_REGNUM)],
  	       sizeof (FPU_FSR_TYPE));
  #endif
+ 	registers_fetched ();
  
  	bcopy (&corestr.c_aouthdr, &core_aouthdr, sizeof (struct exec));
  
*** tm-sparc.h~	Mon Jun  4 18:13:20 1990
--- tm-sparc.h	Fri Jul 27 19:27:45 1990
***************
*** 81,87 ****
  
  #define SAVED_PC_AFTER_CALL(frame) PC_ADJUST (read_register (RP_REGNUM))
  
! #define STACK_END_ADDR 0xff000000
  
  #define INNER_THAN <
  
--- 81,89 ----
  
  #define SAVED_PC_AFTER_CALL(frame) PC_ADJUST (read_register (RP_REGNUM))
  
! #include <sys/types.h>
! #include <machine/vmparam.h>
! #define STACK_END_ADDR USRSTACK
  
  #define INNER_THAN <
  
*** findvar.c~	Thu Jul 26 14:03:39 1990
--- findvar.c	Fri Jul 27 13:49:27 1990
***************
*** 221,227 ****
  {
    int i;
    for (i = 0; i < NUM_REGS; i++)
!     register_valid[i] = 0;
  }
  
  /* Fetch register REGNO, or all regs if regno == -1.  */
--- 221,227 ----
  {
    int i;
    for (i = 0; i < NUM_REGS; i++)
!     register_valid[i] = 1;
  }
  
  /* Fetch register REGNO, or all regs if regno == -1.  */
*** findvar.c~	Fri May  4 12:28:40 1990
--- findvar.c	Sat Jun 16 03:57:24 1990
***************
*** 156,162 ****
    if (regnum == FP_REGNUM)
      {
        bcopy (&FRAME_FP(selected_frame), myaddr, sizeof (CORE_ADDR));
!       return;
      }
  
    get_saved_register (myaddr, &optim, NULL, selected_frame, regnum);
--- 156,162 ----
    if (regnum == FP_REGNUM)
      {
        bcopy (&FRAME_FP(selected_frame), myaddr, sizeof (CORE_ADDR));
!       return 0;
      }
  
    get_saved_register (myaddr, &optim, NULL, selected_frame, regnum);
*** sparc-xdep.c~	Fri Apr 20 21:33:53 1990
--- sparc-xdep.c	Fri Jul 27 13:49:05 1990
***************
*** 235,240 ****
--- 235,241 ----
  	       &registers[REGISTER_BYTE (FPS_REGNUM)],
  	       sizeof (FPU_FSR_TYPE));
  #endif
+ 	registers_fetched ();
  
  	bcopy (&corestr.c_aouthdr, &core_aouthdr, sizeof (struct exec));
  
*** tm-sparc.h.orig	Mon Jun  4 18:13:20 1990
--- tm-sparc.h	Fri Jul 27 19:27:45 1990
***************
*** 81,87 ****
  
  #define SAVED_PC_AFTER_CALL(frame) PC_ADJUST (read_register (RP_REGNUM))
  
! #define STACK_END_ADDR 0xff000000
  
  #define INNER_THAN <
  
--- 81,89 ----
  
  #define SAVED_PC_AFTER_CALL(frame) PC_ADJUST (read_register (RP_REGNUM))
  
! #include <sys/types.h>
! #include <machine/vmparam.h>
! #define STACK_END_ADDR USRSTACK
  
  #define INNER_THAN <
  
***************
*** 515,521 ****
    CORE_ADDR pc = read_register (PC_REGNUM) - 8;				\
    CORE_ADDR rp = read_register (RP_REGNUM);				\
    void do_save_insn ();							\
!   supply_register (RP_REGNUM, &pc);					\
    do_save_insn (0x140);							\
    fp = read_register (FP_REGNUM);					\
    write_memory (fp - 0x80, &registers[REGISTER_BYTE (FP0_REGNUM)], 32 * 4);\
--- 517,523 ----
    CORE_ADDR pc = read_register (PC_REGNUM) - 8;				\
    CORE_ADDR rp = read_register (RP_REGNUM);				\
    void do_save_insn ();							\
!   write_register (RP_REGNUM, pc);					\
    do_save_insn (0x140);							\
    fp = read_register (FP_REGNUM);					\
    write_memory (fp - 0x80, &registers[REGISTER_BYTE (FP0_REGNUM)], 32 * 4);\
*** tm-sparc.h~	Mon Jun  4 18:13:20 1990
--- tm-sparc.h	Mon Jun 18 03:46:17 1990
***************
*** 81,87 ****
  
  #define SAVED_PC_AFTER_CALL(frame) PC_ADJUST (read_register (RP_REGNUM))
  
! #define STACK_END_ADDR 0xff000000
  
  #define INNER_THAN <
  
--- 81,87 ----
  
  #define SAVED_PC_AFTER_CALL(frame) PC_ADJUST (read_register (RP_REGNUM))
  
! #define STACK_END_ADDR 0xf8000000
  
  #define INNER_THAN <
  
***************
*** 515,521 ****
    CORE_ADDR pc = read_register (PC_REGNUM) - 8;				\
    CORE_ADDR rp = read_register (RP_REGNUM);				\
    void do_save_insn ();							\
!   supply_register (RP_REGNUM, &pc);					\
    do_save_insn (0x140);							\
    fp = read_register (FP_REGNUM);					\
    write_memory (fp - 0x80, &registers[REGISTER_BYTE (FP0_REGNUM)], 32 * 4);\
--- 515,521 ----
    CORE_ADDR pc = read_register (PC_REGNUM) - 8;				\
    CORE_ADDR rp = read_register (RP_REGNUM);				\
    void do_save_insn ();							\
!   write_register (RP_REGNUM, pc);					\
    do_save_insn (0x140);							\
    fp = read_register (FP_REGNUM);					\
    write_memory (fp - 0x80, &registers[REGISTER_BYTE (FP0_REGNUM)], 32 * 4);\
*** tm-sparc.h~	Mon Jun  4 18:13:20 1990
--- tm-sparc.h	Mon Jun 18 03:46:17 1990
***************
*** 515,521 ****
    CORE_ADDR pc = read_register (PC_REGNUM) - 8;				\
    CORE_ADDR rp = read_register (RP_REGNUM);				\
    void do_save_insn ();							\
!   supply_register (RP_REGNUM, &pc);					\
    do_save_insn (0x140);							\
    fp = read_register (FP_REGNUM);					\
    write_memory (fp - 0x80, &registers[REGISTER_BYTE (FP0_REGNUM)], 32 * 4);\
--- 515,521 ----
    CORE_ADDR pc = read_register (PC_REGNUM) - 8;				\
    CORE_ADDR rp = read_register (RP_REGNUM);				\
    void do_save_insn ();							\
!   write_register (RP_REGNUM, pc);					\
    do_save_insn (0x140);							\
    fp = read_register (FP_REGNUM);					\
    write_memory (fp - 0x80, &registers[REGISTER_BYTE (FP0_REGNUM)], 32 * 4);\
Technical Details
Message-ID: <9007290222.AA20891@sugar-bombs.ai.mit.edu>
Path: arc1-ca.pugleaf.net!gmdzi!unido!mcsun!uunet!tut.cis.ohio-state.edu!AI.MIT.EDU!rms

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: f5053,5e82c437ccf49dbb,start
X-Google-Attributes: gidf5053,public
X-Google-ArrivalTime: 1990-07-28 19:22:05 PST
Path: arc1-ca.pugleaf.net!gmdzi!unido!mcsun!uunet!tut.cis.ohio-state.edu!AI.MIT.EDU!rms
From: rms@AI.MIT.EDU
Newsgroups: gnu.gdb.bug
Subject: [eirik@elf.tn.cornell.edu: sparc core files and gdb 3.90.11]
Message-ID: <9007290222.AA20891@sugar-bombs.ai.mit.edu>
Date: 29 Jul 90 02:22:05 GMT
Sender: daemon@tut.cis.ohio-state.edu
Distribution: gnu
Organization: GNUs Not Usenet
Lines: 195
Posted: Sun Jul 29 03:22:05 1990