🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Ray Moody Sat, 25 Mar 1989 18:53
Gdb 3.1 on 4.3BSD ISI machines (doesn't work; fixes included)
#735
Author: Ray Moody
Date: Sat, 25 Mar 1989 18:53
134 lines
5076 bytes
    Gdb 3.1 does not work on 4.3BSD ISI machines.

    First of all, m-isi.h must be patched or else REGISTER_U_ADDR is not able
to correctly compute the address of certain registers (namely D2-D7).

    (This hasn't been tested on a 4.2BSD ISI machine....)

-------------------------------------------------------------------------------
RCS file: m-isi.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -c -r1.1 -r1.2
*** /tmp/,RCSt1006852	Fri Mar 24 21:44:53 1989
--- /tmp/,RCSt2006852	Fri Mar 24 21:44:55 1989
***************
*** 181,186
  #define FP0_REGNUM 18		/* Floating point register 0 */
  #define FPC_REGNUM 26		/* 68881 control register */
  
  #ifdef BSD43_ISI40D
  #define BLOCKFUDGE	0x400000
  #else

--- 181,187 -----
  #define FP0_REGNUM 18		/* Floating point register 0 */
  #define FPC_REGNUM 26		/* 68881 control register */
  
+ #include <machine/reg.h>
  #ifdef BSD43_ISI40D
  #define BLOCKFUDGE	0x400000
  #else
***************
*** 186,203
  #else
  #define BLOCKFUDGE	0
  #endif
! #define REGISTER_U_ADDR(addr, blockend, regno)			\
! {	blockend -= BLOCKFUDGE;					\
! 	if (regno < 2) addr = blockend - 0x18 + regno * 4;	\
! 	else if (regno < 8) addr = blockend - 0x54 + regno * 4;	\
! 	else if (regno < 10) addr = blockend - 0x30 + regno * 4;\
! 	else if (regno < 15) addr = blockend - 0x5c + regno * 4;\
! 	else if (regno < 16) addr = blockend - 0x1c;		\
! 	else if (regno < 18) addr = blockend - 0x44 + regno * 4;\
! 	else if (regno < 26) addr = (int) ((struct user *)0)->u_68881_regs \
! 	    + (regno - 18) * 12;				\
! 	else if (regno < 29) addr = (int) ((struct user *)0)->u_68881_regs \
! 	    + 8 * 12 + (regno - 26) * 4;			\
  }
  
  /* Total amount of space needed to store our copies of the machine's

--- 187,210 -----
  #else
  #define BLOCKFUDGE	0
  #endif
! #define REGISTER_U_ADDR(addr, blockend, regno)			            \
! {      	       	       	       						    \
!   static int r[] = {D0, D1, D2, D3, D4, D5, D6, D7,			    \
! 		    A0, A1, A2, A3, A4, A5, A6, A7,			    \
! 		    PS, PC};   						    \
! 			       						    \
!   if (regno < 18)	       						    \
!     {			       						    \
!       addr = blockend - BLOCKFUDGE + r[regno]*4;			    \
!     }			       						    \
!   else if (regno < 26)	       						    \
!     {			       						    \
!       addr = (int) ((struct user *)0)->u_68881_regs + (regno-18)*12;	    \
!     }			       						    \
!   else			       						    \
!     {			       						    \
!       addr = (int) ((struct user *)0)->u_68881_regs + 8*12 + (regno-26)*4;  \
!     }									    \
  }
  
  /* Total amount of space needed to store our copies of the machine's
-------------------------------------------------------------------------------

    Next, default-dep.c should probably be changed so that it does not include
<fcntl.h>.  This is really a workaround for an ISI bug.  It is not possible to
include both <sys/file.h> and <fcntl.h> in the same source file!  Warning
messages to the effect "/usr/include/fcntl.h: 13: O_RDONLY redefined" result.

    I can't find anything in default-dep.c that actually uses <fcntl.h>.

-------------------------------------------------------------------------------
RCS file: default-dep.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -c -r1.1 -r1.2
*** /tmp/,RCSt1007014	Fri Mar 24 21:55:09 1989
--- /tmp/,RCSt2007014	Fri Mar 24 21:55:10 1989
***************
*** 33,39
  #include <signal.h>
  #include <sys/user.h>
  #include <sys/ioctl.h>
- #include <fcntl.h>
  
  #ifdef COFF_ENCAPSULATE
  #include "a.out.encap.h"

--- 33,38 -----
  #include <signal.h>
  #include <sys/user.h>
  #include <sys/ioctl.h>
  
  #ifdef COFF_ENCAPSULATE
  #include "a.out.encap.h"
-------------------------------------------------------------------------------

    Finally, a comment in the Makefile about -DBSD43_ISI40D really should be
added.  I spend much time looking through source that I really didn't want to
read before I discovered this was required for our machines.

-------------------------------------------------------------------------------
RCS file: Makefile,v
retrieving revision 1.1
retrieving revision 1.2
diff  -r1.1 -r1.2
20a21,23
> # On ISI machines, make sure to compile gdb with -DBSD43_ISI40D if you run
> # 4.3BSD.
> 
-------------------------------------------------------------------------------

    Ok.  That about does it.

    Keep up the good work guys.  This is the most marvelous debugger that I
have seen in my life!!!!

								Ray
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads