www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1995/02/24/13:39:27

Date: Fri, 24 Feb 1995 09:28:28 +0800
From: pierre AT phi DOT la DOT tce DOT com (Pierre Willard)
To: palomino!edward AT uunet DOT uu DOT net
Cc: uunet!sun.soe.clarkson.edu!djgpp AT uunet DOT uu DOT net
Subject: Re: Where can I find source code for xgdb to work with gdb-4.13
Reply-To: pierre AT la DOT tce DOT com

Get xxgdb 1.08, you can ftp from : ftp.funet.fi in /pub/X11R5/contrib
directory, file :

- -rw-r--r--  1 ruokonen ftp        109994 Jan 12 22:41 xxgdb.108.tar.gz

Also there is a small patch to build xxgdb 1.09 (see below).
Bye
Pierre Willard

*** XDbx.NEW_INTERFACE	Thu Dec  2 16:01:55 1993
--- ../XDbx.NEW_INTERFACE	Fri Feb 11 09:26:50 1994
***************
*** 1,6 ****
! #
! # XXgdb 1.08 Application defaults file with NEW_INTERFACE
! # (derived from Xdbx 2.1 app-defaults)
  
  *background: 				snow1
  *foreground: 				black
--- 1,6 ----
! !
! ! XXgdb 1.08 Application defaults file with NEW_INTERFACE
! ! (derived from Xdbx 2.1 app-defaults)
  
  *background: 				snow1
  *foreground: 				black
*** XDbx.ad	Mon Jan 10 13:13:10 1994
--- ../XDbx.ad	Fri Feb 11 09:24:06 1994
***************
*** 1,6 ****
! #
! # Xdbx 2.1 Application defaults file
! #
  
  *background: 				snow1
  *foreground: 				black
--- 1,6 ----
! !
! ! Xdbx 2.1 Application defaults file
! !
  
  *background: 				snow1
  *foreground: 				black
***************
*** 46,55 ****
  	<Btn1Up>:       SelectEnd() \n
  *commandWindow.preferredPaneSize:	135
  *commandWindow.skipAdjust:		True
! #*commandWindow.hSpace:			14
! #*commandWindow.vSpace:			10
! #*Command.height:                	20
! #*Command.width:                 	60
  *List.columnSpacing:            	10
  *displayWindow.preferredPaneSize:	50
  *displayWindow.skipAdjust:      	True
--- 46,55 ----
  	<Btn1Up>:       SelectEnd() \n
  *commandWindow.preferredPaneSize:	135
  *commandWindow.skipAdjust:		True
! !*commandWindow.hSpace:			14
! !*commandWindow.vSpace:			10
! !*Command.height:                	20
! !*Command.width:                 	60
  *List.columnSpacing:            	10
  *displayWindow.preferredPaneSize:	50
  *displayWindow.skipAdjust:      	True
*** bitmaps.h	Thu Nov 18 15:46:00 1993
--- ../bitmaps.h	Fri Feb 11 09:19:06 1994
***************
*** 37,47 ****
   *	in the source window.
   */
  
  /* bitmap data for 48x48 xdbx icon */
  
  #define xdbx48_width 48
  #define xdbx48_height 48
! static char xdbx48_bits[] = {
     0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0xf0,
     0xfc, 0x3f, 0x00, 0x00, 0x00, 0x78, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x3c,
     0xf8, 0x7f, 0x00, 0x02, 0x00, 0x3c, 0xf0, 0xff, 0x00, 0x02, 0x00, 0x1e,
--- 37,52 ----
   *	in the source window.
   */
  
+ /*
+  * iand	94/02/10 remove compiler warnings
+  */
+ 
  /* bitmap data for 48x48 xdbx icon */
  
  #define xdbx48_width 48
  #define xdbx48_height 48
! #define xdbx48_bits (char *)xdbx48_bits_u
! static unsigned char xdbx48_bits_u[] = {
     0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0xf0,
     0xfc, 0x3f, 0x00, 0x00, 0x00, 0x78, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x3c,
     0xf8, 0x7f, 0x00, 0x02, 0x00, 0x3c, 0xf0, 0xff, 0x00, 0x02, 0x00, 0x1e,
***************
*** 72,78 ****
  
  #define xdbx64_width 64
  #define xdbx64_height 64
! static char xdbx64_bits[] = {
     0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfe, 0xff, 0x01, 0x00,
     0x00, 0x00, 0x00, 0xf8, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x7c,
     0xf8, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xf8, 0xff, 0x07, 0x00,
--- 77,84 ----
  
  #define xdbx64_width 64
  #define xdbx64_height 64
! #define xdbx64_bits (char *)xdbx64_bits_u
! static unsigned char xdbx64_bits_u[] = {
     0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfe, 0xff, 0x01, 0x00,
     0x00, 0x00, 0x00, 0xf8, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x7c,
     0xf8, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xf8, 0xff, 0x07, 0x00,
***************
*** 124,130 ****
  #define stop_height 16
  #define stop_x_hot -1
  #define stop_y_hot -1
! static char stop_bits[] = {
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xd0, 0x01, 0x5c, 0x07,
     0x54, 0x05, 0x54, 0x05, 0x14, 0x04, 0x0c, 0x04, 0x08, 0x04, 0x18, 0x06,
     0xf0, 0x03, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00};
--- 130,137 ----
  #define stop_height 16
  #define stop_x_hot -1
  #define stop_y_hot -1
! #define stop_bits (char *)stop_bits_u
! static unsigned char stop_bits_u[] = {
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xd0, 0x01, 0x5c, 0x07,
     0x54, 0x05, 0x54, 0x05, 0x14, 0x04, 0x0c, 0x04, 0x08, 0x04, 0x18, 0x06,
     0xf0, 0x03, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00};
***************
*** 136,142 ****
  #define arrow_height 16
  #define arrow_x_hot -1
  #define arrow_y_hot -1
! static char arrow_bits[] = {
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x01, 0x80, 0x03,
     0xff, 0x07, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x07, 0x80, 0x03, 0x80, 0x01,
     0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
--- 143,150 ----
  #define arrow_height 16
  #define arrow_x_hot -1
  #define arrow_y_hot -1
! #define arrow_bits (char *)arrow_bits_u
! static unsigned char arrow_bits_u[] = {
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x01, 0x80, 0x03,
     0xff, 0x07, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x07, 0x80, 0x03, 0x80, 0x01,
     0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
***************
*** 148,154 ****
  #define updown_height 16
  #define updown_x_hot -1
  #define updown_y_hot -1
! static char updown_bits[] = {
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x01, 0x80, 0x03,
     0xff, 0x06, 0x01, 0x0c, 0x01, 0x0c, 0xff, 0x06, 0x80, 0x03, 0x80, 0x01,
     0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
--- 156,163 ----
  #define updown_height 16
  #define updown_x_hot -1
  #define updown_y_hot -1
! #define updown_bits (char *)updown_bits_u
! static unsigned char updown_bits_u[] = {
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x01, 0x80, 0x03,
     0xff, 0x06, 0x01, 0x0c, 0x01, 0x0c, 0xff, 0x06, 0x80, 0x03, 0x80, 0x01,
     0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
***************
*** 158,164 ****
  
  #define bomb_width 16
  #define bomb_height 16
! static char bomb_bits[] = {
     0x00, 0x00, 0x69, 0x00, 0x94, 0x00, 0x8a, 0x00, 0xc0, 0x01, 0xc5, 0x01,
     0xf0, 0x07, 0xf0, 0x07, 0xf8, 0x0f, 0xf8, 0x0d, 0xf8, 0x0d, 0xf8, 0x0d,
     0xf0, 0x06, 0xf0, 0x07, 0xc0, 0x01, 0x00, 0x00};
--- 167,174 ----
  
  #define bomb_width 16
  #define bomb_height 16
! #define bomb_bits (char *)bomb_bits_u
! static unsigned char bomb_bits_u[] = {
     0x00, 0x00, 0x69, 0x00, 0x94, 0x00, 0x8a, 0x00, 0xc0, 0x01, 0xc5, 0x01,
     0xf0, 0x07, 0xf0, 0x07, 0xf8, 0x0f, 0xf8, 0x0d, 0xf8, 0x0d, 0xf8, 0x0d,
     0xf0, 0x06, 0xf0, 0x07, 0xc0, 0x01, 0x00, 0x00};
*** calldbx.c	Mon Nov 29 17:49:38 1993
--- ../calldbx.c	Wed Apr 13 14:43:57 1994
***************
*** 69,74 ****
--- 69,83 ----
   *    create_io_window(): create an io window for gdb to use 
   */
  
+ /*	iand	94/02/10 clean up iowin stuff
+  *	iand	94/02/10 enable CREATE_IO_WINDOW feature to compile on SVR4 
+  *	iand	94/02/10 Better pty support.   
+  *		 			 Removes complaints about tcsetpgrp fails etc.
+  *		 			 Don't need to explicitly fiddle process groups anyway.
+  *		 			 Push ttcompat on SVR4 boxen.
+  *	pw		94/02/11 Include <signal.h> and <stropts.h> if not SVR4.
+  */
+ 
  /*
   * (JBL)10MAY91 : not only OLDSUNOS but generic BSD have sgttyb
   */
***************
*** 81,86 ****
--- 90,96 ----
  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>
+ #include <signal.h>
  
  #include	"global.h"
  
***************
*** 89,112 ****
  #include        <sys/un.h>
  #endif /* CREATE_IO_WINDOW */
  
! #ifdef SYSV 
  #ifdef SUNOS4 /*(PW)27AUG93 : for Solaris */
  #include <sys/file.h>
  #endif /* SUNOS4 */
! #ifdef SVR4				/* (MJH) Need to use STREAMS pseudo-ttys */
! #define MASTER_CLONE "/dev/ptmx"
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <sys/stropts.h>
  #include <fcntl.h>
- #include <signal.h>
  #else
  #ifdef sco
! #  include	<sys/fcntl.h>
  #endif /* sco */
  #endif /* SVR4 */
  #endif /* SYSV */
  
  extern char *progname;		/* (MJH) */
  
  FILE   	    	*dbxfp = NULL;		/* file pointer to dbx */
--- 99,128 ----
  #include        <sys/un.h>
  #endif /* CREATE_IO_WINDOW */
  
! #ifdef SYSV
  #ifdef SUNOS4 /*(PW)27AUG93 : for Solaris */
  #include <sys/file.h>
  #endif /* SUNOS4 */
! 
! #define MASTER_CLONE "/dev/ptmx"	/* (MJH) Need to use STREAMS pseudo-ttys */
! 
! #ifdef SVR4
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <sys/stropts.h>
  #include <fcntl.h>
  #else
+ #include <stropts.h>
  #ifdef sco
! #include <sys/fcntl.h>
  #endif /* sco */
  #endif /* SVR4 */
  #endif /* SYSV */
  
+ #if defined(SYSV) || defined(SVR4)
+ #define signal sigset
+ #endif
+ 
  extern char *progname;		/* (MJH) */
  
  FILE   	    	*dbxfp = NULL;		/* file pointer to dbx */
***************
*** 120,130 ****
  #ifndef SVR4				/* (MJH) */
  static char 	pty[11] = "/dev/pty??";	/* master side of pseudo-terminal */
  static char 	tty[11] = "/dev/tty??";	/* slave side of pseudo-terminal */
  #ifdef CREATE_IO_WINDOW
! char            iowintty[] = "/dev/ttyp0";
  int             iowinpid = 0;
  #endif /* CREATE_IO_WINDOW */
- #endif /* SVR4 */
  extern char	*dbxprompt;
  
  /*
--- 136,146 ----
  #ifndef SVR4				/* (MJH) */
  static char 	pty[11] = "/dev/pty??";	/* master side of pseudo-terminal */
  static char 	tty[11] = "/dev/tty??";	/* slave side of pseudo-terminal */
+ #endif /* SVR4 */
  #ifdef CREATE_IO_WINDOW
! char            iowintty[50];
  int             iowinpid = 0;
  #endif /* CREATE_IO_WINDOW */
  extern char	*dbxprompt;
  
  /*
***************
*** 136,148 ****
  {
      int master;
      
! #ifdef SVR4				/* (MJH) Use STREAMS */
  
      if((master = open(MASTER_CLONE, O_RDWR)) < 0)
  	perror(MASTER_CLONE);
      else
  	return master;
! #else
      int  i;
      char c;
  
--- 152,166 ----
  {
      int master;
      
! #ifdef MASTER_CLONE		/* (MJH) Use STREAMS */
  
      if((master = open(MASTER_CLONE, O_RDWR)) < 0)
  	perror(MASTER_CLONE);
      else
  	return master;
! 
! #else /* not MASTER_CLONE */
! 
      int  i;
      char c;
  
***************
*** 161,168 ****
  #ifndef sco
  	}
  #endif
! #endif /* SVR4 */
  
  #ifdef GDB
      fprintf(stderr, "xxgdb: all ptys in use\n");
  #else
--- 179,187 ----
  #ifndef sco
  	}
  #endif
! #endif /* MASTER_CLONE */
  
+ 
  #ifdef GDB
      fprintf(stderr, "xxgdb: all ptys in use\n");
  #else
***************
*** 177,187 ****
  {
      int slave;
  
! #ifdef SVR4				/* (MJH) */
      char *slave_name = "unknown";
      extern char *ptsname(int master);
      void (*handler)();
  
      if(((handler = signal(SIGCHLD, SIG_DFL)) != SIG_ERR) &&
         (grantpt(master) == 0) &&
         (signal(SIGCHLD, handler) == SIG_DFL) &&
--- 196,234 ----
  {
      int slave;
  
! #ifdef MASTER_CLONE			/* (MJH) */
      char *slave_name = "unknown";
      extern char *ptsname(int master);
      void (*handler)();
  
+ #if 1
+ 	if ((handler = signal(SIGCHLD, SIG_DFL)) == SIG_ERR) {
+ 		perror ("Pseudo-tty slave : signal SIG_DFL");
+ 	} else if (grantpt(master)) {
+ 		perror ("Pseudo-tty slave : grantpt");
+ 	} else if (signal(SIGCHLD, handler) != SIG_DFL) {
+ 		perror ("Pseudo-tty slave : signal handler");
+ 	} else if (unlockpt(master)) {
+ 		perror ("Pseudo-tty slave : unlockpt");
+ 	} else if ((slave_name = ptsname(master)) == NULL) {
+ 		perror ("Pseudo-tty slave : ptsname");
+ 	} else if ((slave = open(slave_name, O_RDWR)) < 0) {
+ 		perror ("Pseudo-tty slave : open");
+ 		fprintf(stderr, "open: cannot open slave pty %s", slave_name);
+ 	} else if (ioctl(slave, I_PUSH, "ptem") < 0) {
+ 		perror ("Pseudo-tty slave : ioctl ptem");
+ 	} else if (ioctl(slave, I_PUSH, "ldterm") < 0) {
+ 		perror ("Pseudo-tty slave : ioctl ldterm");
+ #ifdef SVR4
+ 	} else if (ioctl(slave, I_PUSH, "ttcompat") < 0) {
+ 		perror ("Pseudo-tty slave : ioctl ttcompat");
+ #endif
+ 	} else {
+ 		return slave;
+ 	}
+ 	exit (1);
+ #else
+ 
      if(((handler = signal(SIGCHLD, SIG_DFL)) != SIG_ERR) &&
         (grantpt(master) == 0) &&
         (signal(SIGCHLD, handler) == SIG_DFL) &&
***************
*** 189,200 ****
         ((slave_name = ptsname(master)) != NULL) &&
         ((slave = open(slave_name, O_RDWR)) >= 0) &&
         (ioctl(slave, I_PUSH, "ptem") >= 0) &&
!        (ioctl(slave, I_PUSH, "ldterm") >= 0))
  	return slave;
      perror("Pseudo-tty slave");
      fprintf(stderr, "open: cannot open slave pty %s", slave_name);
      exit(1);
! #else
      tty[8] = pty[8];
      tty[9] = pty[9];
      if ((slave = open(tty, O_RDWR)) < 0)
--- 236,254 ----
         ((slave_name = ptsname(master)) != NULL) &&
         ((slave = open(slave_name, O_RDWR)) >= 0) &&
         (ioctl(slave, I_PUSH, "ptem") >= 0) &&
!        (ioctl(slave, I_PUSH, "ldterm") >= 0)
! #ifdef SVR4
!        && (ioctl(slave, I_PUSH, "ttcompat") >= 0)
! #endif
!        )
  	return slave;
      perror("Pseudo-tty slave");
      fprintf(stderr, "open: cannot open slave pty %s", slave_name);
      exit(1);
! #endif
! 
! #else /* not MASTER_CLONE */
! 
      tty[8] = pty[8];
      tty[9] = pty[9];
      if ((slave = open(tty, O_RDWR)) < 0)
***************
*** 203,209 ****
  		exit(1);
  	    }
      return slave;
! #endif /* SVR4 */
  }
  
  #ifdef CREATE_IO_WINDOW 
--- 257,263 ----
  		exit(1);
  	    }
      return slave;
! #endif /* MASTER_CLONE */
  }
  
  #ifdef CREATE_IO_WINDOW 
***************
*** 216,222 ****
  void
  create_io_window ()
  {
!     int pid = fork();
      if (pid == -1)
      {
  	printf("unable to fork\n");
--- 270,279 ----
  void
  create_io_window ()
  {
!     int pid;
!     
!     (void) fflush(stdout);
!     pid = fork();
      if (pid == -1)
      {
  	printf("unable to fork\n");
***************
*** 240,251 ****
      {
  	/* child */
  	/* printf("xterm xterm -l -e xxgdbiowin\n");*/
! 	if (execlp("xterm", "xterm", "-e", "xxgdbiowin", 0))
! 	{
! 	    printf("exec of 'xterm -e xxgdbiowin' fails\n");
! 	    unlink("/tmp/iowindowtty");
! 	}
! 	}
  }
  #endif /* CREATE_IO_WINDOW */
  
--- 297,307 ----
      {
  	/* child */
  	/* printf("xterm xterm -l -e xxgdbiowin\n");*/
! 	(void) execlp("xterm", "xterm", "-e", "xxgdbiowin", 0);
! 	perror("exec of 'xterm -e xxgdbiowin' fails");
! 	unlink("/tmp/iowindowtty");
! 	_exit(1);
!     }
  }
  #endif /* CREATE_IO_WINDOW */
  
***************
*** 303,329 ****
       * controlling tty.
       */
  
- #if defined(SVR4)	/* (MJH) */
-     if ((tcgetsid(0) != tcgetpgrp(0)) && /* Check if fore- or back-ground  */
- 	(fd = open("/dev/tty", O_RDWR|O_NDELAY)) > 0) {
-   	ioctl(fd, TIOCNOTTY, 0);
-   	close(fd);
-   	}
- #else	/* not SVR4 */
- 	if ((fd = open("/dev/tty", O_RDWR)) > 0) {
- #ifndef SYSV 
-   	ioctl(fd, TIOCNOTTY, 0);
- #endif /* SYSV */
-   	close(fd);
-   	}
- #endif	/* SVR4 */
- 
      master = open_master();
      
- #if defined(SVR4) || !defined(SYSV)
-     slave = open_slave(master);
- #endif
- 
      dbxpid = fork();
      if (dbxpid == -1) {
  	sprintf(errmsg, "%s error: Cannot fork %s\n", progname, debugger);	/* (MJH) */
--- 359,366 ----
***************
*** 339,349 ****
  	 *	    set line buffered mode
  	 *	    register dbx input with X
  	 */
- 
- #if defined(SVR4) || !defined(SYSV)		/* (MJH) */
- 	close(slave);
- #endif /* SYSV */
- 
  	close(0);
  	close(1);
  	fcntl(master, F_SETFL, FNDELAY);
--- 376,381 ----
***************
*** 372,378 ****
  #else
  	setvbuf(dbxfp, NULL, _IONBF, 0);
  #endif
! #endif
  
  	dbxInputId = XtAppAddInput(app_context, master, (XtPointer) XtInputReadMask, 
  				   read_dbx, NULL);
--- 404,410 ----
  #else
  	setvbuf(dbxfp, NULL, _IONBF, 0);
  #endif
! #endif /* SYSV */
  
  	dbxInputId = XtAppAddInput(app_context, master, (XtPointer) XtInputReadMask, 
  				   read_dbx, NULL);
***************
*** 383,395 ****
  	 * 	   redirect stdin, stdout, stderr of dbx to pty
  	 *	   unbuffer output data from dbx
  	 *	   exec dbx with arguments
  	 */
!       
! #if defined(SYSV) && !defined(SVR4)		/* (MJH) */
!         setpgrp();
!         slave = open_slave(master);
  #endif
! 	close(master);
  
  	/*
  	 * Modify local and output mode of slave pty
--- 415,435 ----
  	 * 	   redirect stdin, stdout, stderr of dbx to pty
  	 *	   unbuffer output data from dbx
  	 *	   exec dbx with arguments
+ 	 *
+ 	 * Make the child gain the slave as its controlling tty,
+ 	 * and cause the child to enter a new process group at the
+ 	 * same time.
  	 */
! #if defined(SYSV) || defined(SVR4)
! 		setpgrp();
! #else
! 		if ((fd = open("/dev/tty", O_RDWR)) >= 0) {
! 			ioctl(fd, TIOCNOTTY, 0);
! 			close(fd);
! 		}
  #endif
!         slave = open_slave(master);
! 		close(master);
  
  	/*
  	 * Modify local and output mode of slave pty
***************
*** 418,453 ****
  	    
  	fcntl(1, F_SETFL, FAPPEND);
  	setbuf(stdout, NULL);
- 
- 	/*
- 	 * Set our process group to that of the terminal,
- 	 * so we can change the group of the terminal.
- 	 */
- #ifndef SYSV
- 	{
-     int		  pid;			/* process id */
-     int		  pgrp;			/* process group id */
- 
- 	ioctl(0, TIOCGPGRP, &pgrp);
- 	setpgrp(0, pgrp);
- 
- 	/*
- 	 * Now set the process group of the terminal and of us
- 	 * to our process id.  This clears us from the control
- 	 * of the other process group.
- 	 */
- 	pid = getpid();
- 	ioctl(0, TIOCSPGRP, &pid);
- 	setpgrp(0, pid);
- 	}
- #endif /* not SYSV */
- 
- #ifdef SVR4						/* (MJH) */
- 	if (tcsetpgrp(0, tcgetpgrp(0)))
- 		perror ("tcsetpgrp");
- 	if (tcsetpgrp(0, getpid()))
- 		perror ("tcsetpgrp");
- #endif /* SVR4 */
  
  	argv[0] = debugger;
  	execvp(debugger, argv);
--- 458,463 ----
*** datadpy.c	Thu Nov 18 14:26:21 1993
--- ../datadpy.c	Wed Apr 13 15:40:22 1994
***************
*** 78,83 ****
--- 78,92 ----
   *   print_handler():	Action handler for displaying pointers and structures.
   */
  
+ /*
+  * 01FEB94: bugs fixed (klamer)
+  *		xxgdb does not allow the graphically displaying of members of parents
+  *   		from a class.
+  *		xxgdb does not allow the graphically displaying of data through a
+  *		   reference.
+  */
+ 
+ #include <string.h>
  #include 	"global.h"
  #include 	"regex.h"
  #include 	"datadpy.h"
***************
*** 220,225 ****
--- 229,240 ----
      newcommand = parse_gdb_print(command, dataDpy->buf, dataDpy->buf + left );
      if (*newcommand)
      	{
+ 		if (strchr(selection, '@'))
+ 		{	
+ 			char	*p = strchr(newcommand, '*');
+ 			if (p != 0)
+ 				*p = ' ';
+ 		}
  		PopupMode = True;
      	query_gdb(newcommand, PARSE_ON | ECHO_OFF | FILTER_OFF);
      	}
***************
*** 699,706 ****
  
  
  #ifdef GDB
- #include <string.h>
- 
  #define GOODCHARNAME(c)							\
  			(	(((c) >='a') &&  ((c) <= 'z'))	\
  			||	(((c) >='A') &&  ((c) <= 'Z'))	\
--- 714,719 ----
***************
*** 732,737 ****
--- 745,754 ----
  		*result = 0;
  		return;
  		}
+ 
+         if ((c == '.') && (result[result_index] == '.'))
+                 return;         /* To prevent $1..name for pointers in 
+ 				   g++ parents */
  	
  	result_index--;
  	*(result+result_index) = c;
*** datadpy.h	Thu Nov 18 14:25:59 1993
--- ../datadpy.h	Fri Feb 11 12:43:28 1994
***************
*** 80,86 ****
  /*
  	Note : for GDB the 'set prettyprint on' must be ON.
  	
! 	Exaamples "
  	
  		$3 = (struct toto *) 0x40c0
  		
--- 80,86 ----
  /*
  	Note : for GDB the 'set prettyprint on' must be ON.
  	
! 	Examples :
  	
  		$3 = (struct toto *) 0x40c0
  		
***************
*** 92,98 ****
  */
  
  PatternRec dataPattern[] = {
!     {"0x[0-9a-f]+", 				  
       NULL, {-1, -1, -1, -1, -1, -1}
      },
      {"\\([ ]*\\)\\(.*[^ ]+\\)[ ]* = \\((.*) \\)?\\(0x[0-9a-f]+\\)[,]?[ ]*\n", 
--- 92,98 ----
  */
  
  PatternRec dataPattern[] = {
!     {"@*0x[0-9a-f]+", 				  
       NULL, {-1, -1, -1, -1, -1, -1}
      },
      {"\\([ ]*\\)\\(.*[^ ]+\\)[ ]* = \\((.*) \\)?\\(0x[0-9a-f]+\\)[,]?[ ]*\n", 
*** gdb_handler.c	Mon Jan 10 12:40:58 1994
--- ../gdb_handler.c	Wed Apr 13 15:54:14 1994
***************
*** 419,425 ****
  		{
  		if (*(output_string++) == '\n')
  			{
! 			if (sscanf(output_string, "%d%s%s%s", &i,&type,&disp,&enb) == 4)
  				if (i > 0 && i <= nstops && stops[i].line > 0 &&
  					!strcmp(type,"breakpoint") && !strcmp(enb,"y")) 
  					stops[i].tag = 1;
--- 419,425 ----
  		{
  		if (*(output_string++) == '\n')
  			{
! 			if (sscanf(output_string, "%d%s%s%s", &i,type,disp,enb) == 4)
  				if (i > 0 && i <= nstops && stops[i].line > 0 &&
  					!strcmp(type,"breakpoint") && !strcmp(enb,"y")) 
  					stops[i].tag = 1;
*** gdb_parser.c	Thu Nov 18 15:24:18 1993
--- ../gdb_parser.c	Wed Apr 13 15:54:57 1994
***************
*** 72,79 ****
--- 72,86 ----
   *    gdb_source_command():	Test for source command.
   */
  
+ /*
+  * iand	94/02/10 cope better with non-blocking I/O.  Exit when pty is closed rather
+  *		 than spinning in a loop.
+  *
+  */
+ 
  #include 	<string.h>
  #include 	<stdio.h>
+ #include	<errno.h>
  
  extern Boolean	Prompt;			/* True when gdb prompt arrives */
  
***************
*** 897,902 ****
--- 904,954 ----
  	return FALSE;
  }
  
+ 
+ /*
+  * cope with non-blocking I/O correctly
+  * ie: exit if child closes pty, but return if would block.
+  */
+ static char *
+ #ifdef __STDC__
+ my_fgets(char *buf, int size, FILE *f)
+ #else
+ my_fgets(buf, size, f)
+ char *buf;
+ int size;
+ FILE *f;
+ #endif
+ {
+ 	char *orig_buf = buf;
+ 
+ 	while(size > 1) {
+ 		int cc;
+ 
+ 		cc = read(fileno(f), buf, 1);
+ 		if(cc == -1) {
+ 			if(errno == EAGAIN || errno == EWOULDBLOCK) {
+ 				if(buf != orig_buf)
+ 					break;
+ 				return(0);
+ 			}
+ 			perror("read from gdb");
+ 			exit(1);
+ 			/*NOTREACHED*/
+ 		}
+ 		if(cc == 0) {
+ 			(void) fprintf(stderr, "EOF from gdb\n");
+ 			exit(1);
+ 			/*NOTREACHED*/
+ 		}
+ 		buf++;
+ 		size--;
+ 		if(*(buf-1) == '\n')
+ 			break;
+ 	}
+ 	*buf = '\0';
+ 	return(orig_buf);
+ }
+ 
  /*--------------------------------------------------------------------------+
  |																			|
  |	Read gdb output until fgets returns no string.							|
***************
*** 927,933 ****
      while (more) {
  	Prompt = False;
  	/* keep reading until no more or until prompt arrives */
! 	while ((more = (fgets(s, LINESIZ, dbxfp) != NULL)) && !Prompt)
  		{
  	    if (debug)
  			fprintf(stderr, "=>%s", s);
--- 979,985 ----
      while (more) {
  	Prompt = False;
  	/* keep reading until no more or until prompt arrives */
! 	while ((more = (my_fgets(s, LINESIZ, dbxfp) != NULL)) && !Prompt)
  		{
  	    if (debug)
  			fprintf(stderr, "=>%s", s);
***************
*** 949,955 ****
  	    string = concat(string, s);
  	    strcpy(s, "");
  		}
! 		
  	output = concat(output, string);
  	
  	command = get_command();			/* read queue's top command  */
--- 1001,1007 ----
  	    string = concat(string, s);
  	    strcpy(s, "");
  		}
! 
  	output = concat(output, string);
  	
  	command = get_command();			/* read queue's top command  */
*** signals.c	Mon Nov 29 18:25:14 1993
--- ../signals.c	Fri Feb 11 09:25:33 1994
***************
*** 42,47 ****
--- 42,53 ----
   *   trap_signals():	Install signal handlers.
   */
  
+ /*
+  * iand	94/02/10 eliminate signal handler prototype warnings on SVR4 and similar systems
+  * iand	94/02/10 use reliable signals on SYSV
+  *
+  */
+ 
  #include <signal.h>
  #ifdef	_POSIX_SOURCE
  #include <sys/types.h>
***************
*** 49,60 ****
  #include <sys/wait.h>
  #include "global.h"
  
  /*  Kill the dbx child process and then exits. */
  /*  ARGSUSED */
! static void kill_handler(sig, code, scp, addr)
!     int sig, code;
!     struct sigcontext *scp;
!     char *addr;
  {
      if (FalseSignal) {
  	FalseSignal = FALSE;
--- 55,69 ----
  #include <sys/wait.h>
  #include "global.h"
  
+ #if defined(SYSV) || defined(SVR4)
+ #define signal sigset
+ #endif
+ 
  /*  Kill the dbx child process and then exits. */
  /*  ARGSUSED */
! static void 
! kill_handler(sig)
!     int sig;
  {
      if (FalseSignal) {
  	FalseSignal = FALSE;
***************
*** 78,84 ****
  }
  
  
! static void quit_handler()
  {
  	int pid;
  #ifdef SYSV 
--- 87,93 ----
  }
  
  
! static void quit_handler(sig)
  {
  	int pid;
  #ifdef SYSV 
***************
*** 119,125 ****
  }
  
  
! static void stop_handler()
  {
      if (dbxpid)
  	kill(dbxpid, SIGSTOP);	/* stop dbx process */
--- 128,134 ----
  }
  
  
! static void stop_handler(sig)
  {
      if (dbxpid)
  	kill(dbxpid, SIGSTOP);	/* stop dbx process */
***************
*** 127,133 ****
  }
  
  
! static void cont_handler()
  {
      if (dbxpid) {
  	sleep(1);		/* we need this */
--- 136,142 ----
  }
  
  
! static void cont_handler(sig)
  {
      if (dbxpid) {
  	sleep(1);		/* we need this */
*** source.c	Mon Nov 29 17:49:22 1993
--- ../source.c	Wed Apr 13 15:53:30 1994
***************
*** 404,409 ****
--- 404,411 ----
          {NULL, NULL}
      };
  
+ #ifdef EDIT_BUTTON
+ 
      static String eTextTranslations = "#override \n\
          Ctrl<Key>V:    next-page() Update(warp) \n\
          Meta<Key>V:    previous-page() Update(warp) \n\
***************
*** 416,426 ****
          Meta<Key>F:    forward-word() Update() \n\
          Meta<Key>B:    backward-word() Update() \n\
          Ctrl<Key>F:    forward-character() Update() \n\
!         Ctrl<Key>B:    backward-character() Update() \n"
! #ifdef EDIT_BUTTON
! "        Meta<Key>E:    Editor() \n"
! #endif
! "        Meta<Key><:   beginning-of-file() Update(warp) \n\
          Meta<Key>>:   end-of-file() Update(warp) \n\
          <Key>L:        redraw-display() Update() \n\
          <Key>S:        Search() Update() \n\
--- 418,426 ----
          Meta<Key>F:    forward-word() Update() \n\
          Meta<Key>B:    backward-word() Update() \n\
          Ctrl<Key>F:    forward-character() Update() \n\
!         Ctrl<Key>B:    backward-character() Update() \n\
!         Meta<Key>E:    Editor() \n\
!         Meta<Key><:   beginning-of-file() Update(warp) \n\
          Meta<Key>>:   end-of-file() Update(warp) \n\
          <Key>L:        redraw-display() Update() \n\
          <Key>S:        Search() Update() \n\
***************
*** 442,452 ****
          <Key>space:    forward-character() Update() \n\
          <Key>BackSpace: backward-character() Update() \n\
          <Key>1:        beginning-of-file() Update(warp) \n\
!         <Key>G:        end-of-file() Update(warp) \n"
! #ifdef EDIT_BUTTON
! "        <Key>E:        Editor() \n"
! #endif
! "        <Key>L:        redraw-display() Update() \n\
          <Key>/:        Search() Update() \n\
          <Key>?:        Search() Update() \n\
          <Btn1Down>:             SelectStart() SelectWord() \n\
--- 442,450 ----
          <Key>space:    forward-character() Update() \n\
          <Key>BackSpace: backward-character() Update() \n\
          <Key>1:        beginning-of-file() Update(warp) \n\
!         <Key>G:        end-of-file() Update(warp) \n\
!         <Key>E:        Editor() \n\
!         <Key>L:        redraw-display() Update() \n\
          <Key>/:        Search() Update() \n\
          <Key>?:        Search() Update() \n\
          <Btn1Down>:             SelectStart() SelectWord() \n\
***************
*** 453,458 ****
--- 451,504 ----
  	Shift<Btn1Up>:          Update() SelectEnd() PrintSelection() \n\
  	<Btn1Up>:               Update() SelectEnd() \n\
      ";
+ 
+ #else /* not EDIT_BUTTON */
+ 
+     static String eTextTranslations = "#override \n\
+         Ctrl<Key>V:    next-page() Update(warp) \n\
+         Meta<Key>V:    previous-page() Update(warp) \n\
+         Ctrl<Key>N:    next-line() Update() \n\
+         Ctrl<Key>P:    previous-line() Update() \n\
+         Ctrl<Key>Z:    scroll-one-line-up() Update(warp) \n\
+         Meta<Key>Z:    scroll-one-line-down() Update(warp) \n\
+         Meta<Key>]:    forward-paragraph() Update(warp) \n\
+         Meta<Key>[:    backward-paragraph() Update(warp) \n\
+         Meta<Key>F:    forward-word() Update() \n\
+         Meta<Key>B:    backward-word() Update() \n\
+         Ctrl<Key>F:    forward-character() Update() \n\
+         Ctrl<Key>B:    backward-character() Update() \n\
+         Meta<Key><:   beginning-of-file() Update(warp) \n\
+         Meta<Key>>:   end-of-file() Update(warp) \n\
+         <Key>L:        redraw-display() Update() \n\
+         <Key>S:        Search() Update() \n\
+         <Key>R:        Search() Update() \n\
+         <Btn1Down>:             SelectStart() SelectWord() \n\
+ 	Shift<Btn1Up>:          Update() SelectEnd() PrintSelection() \n\
+ 	<Btn1Up>:               Update() SelectEnd() \n\
+       ";
+   
+     static String vTextTranslations = "#override \n\
+         Ctrl<Key>F:    next-page() Update(warp) \n\
+         Ctrl<Key>B:    previous-page() Update(warp) \n\
+         Ctrl<Key>D:    next-page() Update() \n\
+         Ctrl<Key>U:    previous-page() Update() \n\
+         <Key>Return:   next-line() Update() \n\
+         <Key>-:        previous-line() Update() \n\
+         <Key>j:        next-line() Update() \n\
+         <Key>k:        previous-line() Update() \n\
+         <Key>space:    forward-character() Update() \n\
+         <Key>BackSpace: backward-character() Update() \n\
+         <Key>1:        beginning-of-file() Update(warp) \n\
+         <Key>G:        end-of-file() Update(warp) \n\
+         <Key>L:        redraw-display() Update() \n\
+         <Key>/:        Search() Update() \n\
+         <Key>?:        Search() Update() \n\
+         <Btn1Down>:             SelectStart() SelectWord() \n\
+ 	Shift<Btn1Up>:          Update() SelectEnd() PrintSelection() \n\
+ 	<Btn1Up>:               Update() SelectEnd() \n\
+     ";
+ 
+ #endif /* EDIT_BUTTON */
  
      /* fixes keybindings in source window */
      static String sbarTranslations = "\
*** xdbx.c	Mon Jan 10 13:33:39 1994
--- ../xdbx.c	Wed Apr 13 14:54:42 1994
***************
*** 71,77 ****
   */
  
  #ifdef GDB
! #define XGDBVERSION	"1.08"
  #endif
  
  #ifdef SYSV 
--- 71,77 ----
   */
  
  #ifdef GDB
! #define XGDBVERSION	"1.09"
  #endif
  
  #ifdef SYSV 
*** xxgdbiowin.c	Mon Jan 10 13:11:25 1994
--- ../xxgdbiowin.c	Fri Feb 11 09:07:55 1994
***************
*** 1,3 ****
--- 1,7 ----
+ /*
+  * iand	94/02/10 SVR4 port
+  *
+  */
  #include <signal.h>
  #include <sys/types.h>
  #include <sys/socket.h>
***************
*** 5,13 ****
  #include <stdio.h>
  #include <stdlib.h>
  
! void handler ()
  {
-     
  }
  
  main ()
--- 9,22 ----
  #include <stdio.h>
  #include <stdlib.h>
  
! #if defined(SYSV) || defined(SVR4)
! #define signal sigset
! #endif
! 
! static void 
! handler (sig)
! 	int sig;
  {
  }
  
  main ()
***************
*** 42,50 ****
      signal(SIGINT,  handler);
      signal(SIGQUIT, handler);
      signal(SIGTSTP, handler);
      setpgrp(0,0);
      close(0);
      close(1);
!     while (1) sleep(2);
  }
  
--- 51,63 ----
      signal(SIGINT,  handler);
      signal(SIGQUIT, handler);
      signal(SIGTSTP, handler);
+ #ifdef SVR4
+     setpgid(0,0);
+ #else
      setpgrp(0,0);
+ #endif
      close(0);
      close(1);
!     while (1) pause();
  }
  

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019