[5212] in Athena Bugs

home help back first fref pref prev next nref lref last post

VAX adb

daemon@ATHENA.MIT.EDU (John Carr)
Tue Jun 19 11:24:09 1990

To: bugs@ATHENA.MIT.EDU
Date: Tue, 19 Jun 90 11:23:56 EDT
From: John Carr <jfc@ATHENA.MIT.EDU>


These are changes to

	1. make adb recognize local symbols (e.g. static functions)
	   which do not have '.' as the second-to-last character of
	   the name.

	2. Convert adb to current C standards (partially -- I only did
	   enough that to get it to compile with gcc).

*** src/format.c	Thu Feb 27 23:41:44 1986
--- format.c	Tue Jun 19 10:57:40 1990
***************
*** 99,109 ****
  	L_INT		savdot, wx;
  	STRING		fp;
  	CHAR		c, modifier, longpr;
! 	L_REAL		fw;
! 	struct{
  		L_INT	sa;
! 		INT	sb,sc;
! 	};
  
  	WHILE fcount>0
  	DO	fp = ifp; c = *fp;
--- 99,109 ----
  	L_INT		savdot, wx;
  	STRING		fp;
  	CHAR		c, modifier, longpr;
! 	union {
! 		L_REAL	d;
  		L_INT	sa;
! 		INT	sb[2];
! 	} fw;
  
  	WHILE fcount>0
  	DO	fp = ifp; c = *fp;
***************
*** 117,124 ****
  		     FI
  		FI
  		IF c=='F'
! 		THEN fw.sb=get(inkdot(4),itype);
! 		     fw.sc=get(inkdot(6),itype);
  		FI
  		IF errflg THEN return(fp); FI
  		IF mkfault THEN error(0); FI
--- 117,124 ----
  		     FI
  		FI
  		IF c=='F'
! 		THEN fw.sb[0]=get(inkdot(4),itype);
! 		     fw.sb[1]=get(inkdot(6),itype);
  		FI
  		IF errflg THEN return(fp); FI
  		IF mkfault THEN error(0); FI
***************
*** 215,225 ****
  			printf("%-16D", wx); break;
  
  		    case 'f':
! 			fw = 0;
  			fw.sa = wx;
  			IF (wx & ~0xFFFF00FF) == 0x8000
  			THEN printf("(reserved oprnd)");
! 			ELSE printf("%-16.9f", fw);
  			FI
  			dotinc=4; break;
  
--- 215,225 ----
  			printf("%-16D", wx); break;
  
  		    case 'f':
! 			fw.d = 0;
  			fw.sa = wx;
  			IF (wx & ~0xFFFF00FF) == 0x8000
  			THEN printf("(reserved oprnd)");
! 			ELSE printf("%-16.9f", fw.d);
  			FI
  			dotinc=4; break;
  
***************
*** 227,233 ****
  			fw.sa = wx;
  			IF (wx & ~0xFFFF00FF) == 0x8000
  			THEN printf("%-32s", "(reserved oprnd)");
! 			ELSE printf("%-32.18F", fw);
  			FI
  			dotinc=8; break;
  
--- 227,233 ----
  			fw.sa = wx;
  			IF (wx & ~0xFFFF00FF) == 0x8000
  			THEN printf("%-32s", "(reserved oprnd)");
! 			ELSE printf("%-32.18F", fw.d);
  			FI
  			dotinc=8; break;
  
*** src/setup.c	Tue Jan 17 10:36:40 1989
--- setup.c	Tue Jun 19 10:59:41 1990
***************
*** 72,78 ****
  	if (read(fsym, strtab + sizeof (ssiz), ssiz) != ssiz)
  		goto readerr;
  	for (sp = symtab; sp < esymtab; sp++)
! 		if (sp->n_strx)
  			/* SHOULD PERFORM RANGE CHECK HERE */
  			sp->n_un.n_name = strtab + sp->n_un.n_strx;
  nosymt:
--- 72,78 ----
  	if (read(fsym, strtab + sizeof (ssiz), ssiz) != ssiz)
  		goto readerr;
  	for (sp = symtab; sp < esymtab; sp++)
! 		if (sp->n_un.n_strx)
  			/* SHOULD PERFORM RANGE CHECK HERE */
  			sp->n_un.n_name = strtab + sp->n_un.n_strx;
  nosymt:
*** src/sym.c	Sun Mar 24 22:55:06 1985
--- sym.c	Tue Jun 19 11:17:55 1990
***************
*** 40,48 ****
  	if (type == NSYM || symtab == 0)
  		return (diff);
  	for (sp = symtab; sp < esymtab; sp++) {
! 		if (sp->n_type&N_STAB || (sp->n_type&N_EXT)==0)
  			continue;
  		if (val - sp->n_value < diff && val >= sp->n_value) {
  			diff = val - sp->n_value;
  			cursym = sp;
  			if (diff == 0)
--- 40,54 ----
  	if (type == NSYM || symtab == 0)
  		return (diff);
  	for (sp = symtab; sp < esymtab; sp++) {
! 		if ((sp->n_type&N_STAB) || 
! 		    (sp->n_type & N_EXT) == 0 &&
! 		    (sp->n_type&N_TYPE) != N_TEXT &&
! 		    (sp->n_type&N_TYPE) != N_DATA &&
! 		    (sp->n_type&N_TYPE) != N_BSS)
  			continue;
  		if (val - sp->n_value < diff && val >= sp->n_value) {
+ 			if(sp->n_un.n_name[strlen(sp->n_un.n_name)-2] == '.')
+ 				continue;
  			diff = val - sp->n_value;
  			cursym = sp;
  			if (diff == 0)

home help back first fref pref prev next nref lref last post