[5212] in Athena Bugs
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)