\19sym.c - RSS feed" href="/unix-history/.git/rss?f=usr/src/cmd/adb/old%19sym.c" type="application/rss+xml" />
\19sym.c - RSS feed (no merges)" href="/unix-history/.git/rss?f=usr/src/cmd/adb/old%19sym.c;opt=--no-merges" type="application/rss+xml" />
\19sym.c - Atom feed" href="/unix-history/.git/atom?f=usr/src/cmd/adb/old%19sym.c" type="application/atom+xml" />
\19sym.c - Atom feed (no merges)" href="/unix-history/.git/atom?f=usr/src/cmd/adb/old%19sym.c;opt=--no-merges" type="application/atom+xml" />
/* symbol table and file handling service routines */
return(lseek(f
,a
,0) != -1);
THEN
printf("%.8s", symbol
.symc
);
ANDF (symflg
=symbol
.symf
)!=N_FN
DO IF symflg
>=N_TEXT ANDF symflg
<=(N_BSS
|N_EXT
)
THEN localval
=symbol
.symv
;
THEN localval
=(symbol
.symv
<0 ? cframe
:cargp
)+symbol
.symv
;
L_INT v
; int type
; char *s
;
IF (v
!=0) THEN w
= findsym(v
,type
); FI
IF v
==0 ORF w
>= maxoff
ORF (shorten(v
)<maxoff ANDF w
!=0)
ELSE
printf("%.8s", symbol
.symc
);
IF w THEN
printf(OFFMODE
,w
); FI
L_INT diff
, value
, symval
, offset
;
value
=svalue
; diff
= 0x7fffffffL
; symsav
=0;
IF type
!=NSYM
ANDF (symptr
=symvec
)
THEN WHILE diff
ANDF (symtyp
=symptr
->typslave
)!=ESYM
DO
IF (type
==0 ORF symtyp
==type
) ANDF symptr
->typslave
!= XSYM
THEN symval
=symptr
->valslave
;
THEN diff
= value
-symval
;
THEN offset
=leng(symsav
-symvec
);
longseek(fsym
, symbas
+offset
*SYMTABSIZ
);
read(fsym
,&symbol
,SYMTABSIZ
);
THEN WHILE diff ANDF symptr
<symend
DO IF value
-symptr
->symv
<diff
THEN diff
= value
-symptr
->symv
;
IF symsav THEN
cpsym(symsav
,&symbol
); FI
cpsym(fm
,to
) register char *fm
,*to
;{
register int i
=12; do *to
++= *fm
++; while (--i
);
ELSE
return(longseek(fsym
, symbas
+(symnum
-symcnt
)*SYMTABSIZ
)!=0 ANDF
read(fsym
,&symbol
,SYMTABSIZ
)==SYMTABSIZ
);
/* sequential search through file */
THEN
longseek(fsym
, symbas
);
ELSE
longseek(fsym
, symbas
+sizeof symbuf
);
THEN rc
=symread(); symrqd
=TRUE
;
IF
--symcnt
>0 ANDF rc
==0 THEN errflg
=BADFIL
; FI
return( (symcnt
>=0 && rc
) ? symnxt
++ : 0);
IF
--symcnt
>=0 THEN
return(symnxt
++); ELSE
return(0); FI
symlen
=read(fsym
,symbuf
,sizeof symbuf
);
while ((char *)p
<(char*)symbuf
+symlen
) {
t
=p
->symv
.hiword
; p
->symv
.hiword
=p
->symv
.loword
; p
->symv
.loword
=t
;
symend
= &symbuf
[symlen
/SYMTABSIZ
];