Added the esize program
This commit is contained in:
parent
517b1cae36
commit
e8f4ce0886
|
@ -1,3 +1,5 @@
|
||||||
Makefile
|
Makefile
|
||||||
convert.c
|
convert.c
|
||||||
em_decode.6
|
em_decode.6
|
||||||
|
esize.1
|
||||||
|
esize.c
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# $Header$
|
# $Header$
|
||||||
|
|
||||||
d=../..
|
EMHOME=../..
|
||||||
h=$d/h
|
h=$(EMHOME)/h
|
||||||
l=$d/lib
|
l=$(EMHOME)/lib
|
||||||
ml=$d/modules/lib
|
ml=$(EMHOME)/modules/lib
|
||||||
mh=$d/modules/h
|
mh=$(EMHOME)/modules/h
|
||||||
|
|
||||||
DEC_PATH=decode
|
DEC_PATH=decode
|
||||||
ENC_PATH=encode
|
ENC_PATH=encode
|
||||||
|
@ -19,13 +19,16 @@ HFILES=$h/em_mnem.h $h/em_spec.h $h/em_pseu.h $h/em_flag.h $h/em_ptyp.h \
|
||||||
CFLAGS=-O -I$(mh) -I$h
|
CFLAGS=-O -I$(mh) -I$h
|
||||||
LDFLAGS = -i
|
LDFLAGS = -i
|
||||||
|
|
||||||
all: $(DEC_PATH) $(ENC_PATH)
|
all: $(DEC_PATH) $(ENC_PATH) esize
|
||||||
|
|
||||||
$(DEC_PATH): decode.o $(DATA_PATH)
|
$(DEC_PATH): decode.o $(DATA_PATH)
|
||||||
cc $(LDFLAGS) -o $(DEC_PATH) decode.o $(DECLIBS) $(DATA_PATH)
|
$(CC) $(LDFLAGS) -o $(DEC_PATH) decode.o $(DECLIBS) $(DATA_PATH)
|
||||||
|
|
||||||
$(ENC_PATH): encode.o $(DATA_PATH)
|
$(ENC_PATH): encode.o $(DATA_PATH)
|
||||||
cc $(LDFLAGS) -o $(ENC_PATH) encode.o $(ENCLIBS) $(DATA_PATH)
|
$(CC) $(LDFLAGS) -o $(ENC_PATH) encode.o $(ENCLIBS) $(DATA_PATH)
|
||||||
|
|
||||||
|
esize: esize.o
|
||||||
|
$(CC) -o esize esize.o
|
||||||
|
|
||||||
convert.o: $(HFILES)
|
convert.o: $(HFILES)
|
||||||
|
|
||||||
|
@ -36,20 +39,24 @@ decode.o: convert.o
|
||||||
cp convert.o decode.o
|
cp convert.o decode.o
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(DEC_PATH) $(ENC_PATH) *.o *.old
|
rm -f $(DEC_PATH) $(ENC_PATH) esize *.o *.old
|
||||||
|
|
||||||
install : all
|
install : all
|
||||||
rm -f $l/em_$(DEC_PATH) $l/em_$(ENC_PATH) $d/man/em_decode.6
|
rm -f $l/em_$(DEC_PATH) $l/em_$(ENC_PATH) $(EMHOME)/bin/esize $(EMHOME)/man/em_decode.6 $(EMHOME)/man/esize.1
|
||||||
cp $(DEC_PATH) $l/em_$(DEC_PATH)
|
cp $(DEC_PATH) $l/em_$(DEC_PATH)
|
||||||
cp $(ENC_PATH) $l/em_$(ENC_PATH)
|
cp $(ENC_PATH) $l/em_$(ENC_PATH)
|
||||||
cp em_decode.6 $d/man/em_decode.6
|
cp esize $(EMHOME)/bin/esize
|
||||||
|
cp em_decode.6 $(EMHOME)/man/em_decode.6
|
||||||
|
cp esize.1 $(EMHOME)/man/esize.1
|
||||||
|
|
||||||
cmp : all
|
cmp : all
|
||||||
-cmp $(DEC_PATH) $l/em_$(DEC_PATH)
|
-cmp $(DEC_PATH) $l/em_$(DEC_PATH)
|
||||||
-cmp $(ENC_PATH) $l/em_$(ENC_PATH)
|
-cmp $(ENC_PATH) $l/em_$(ENC_PATH)
|
||||||
-cmp em_decode.6 $d/man/em_decode.6
|
-cmp esize $(EMHOME)/bin/esize
|
||||||
|
-cmp em_decode.6 $(EMHOME)/man/em_decode.6
|
||||||
|
-cmp esize.1 $(EMHOME)/man/esize.1
|
||||||
|
|
||||||
opr:
|
opr:
|
||||||
make pr ^ opr
|
make pr ^ opr
|
||||||
pr:
|
pr:
|
||||||
@pr -n Makefile convert.c
|
@pr -n Makefile convert.c esize.c
|
||||||
|
|
20
util/misc/esize.1
Normal file
20
util/misc/esize.1
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
.TH ESIZE I
|
||||||
|
.SH NAME
|
||||||
|
esize \- print info from e.out header
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B esize
|
||||||
|
[ file ... ]
|
||||||
|
.SH DESCRIPTION
|
||||||
|
.I Esize
|
||||||
|
prints information from the
|
||||||
|
.I e.out
|
||||||
|
headers of the indicated files, including flags, word and pointer sizes,
|
||||||
|
text and data sizes, etc. All values are in decimal.
|
||||||
|
.PP
|
||||||
|
If no parameters are given, the header of
|
||||||
|
.I e.out
|
||||||
|
is examined.
|
||||||
|
.SH SEE ALSO
|
||||||
|
The EM Manual, for the precise header information
|
||||||
|
.SH AUTHOR
|
||||||
|
Dick Grune
|
156
util/misc/esize.c
Normal file
156
util/misc/esize.c
Normal file
|
@ -0,0 +1,156 @@
|
||||||
|
/* esize: prints info from e.out header
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#ifndef MAGIC
|
||||||
|
#define MAGIC 07255
|
||||||
|
#endif MAGIC
|
||||||
|
|
||||||
|
FILE *load_fp;
|
||||||
|
int eof;
|
||||||
|
|
||||||
|
/* Much of the code has been borrowed from the EM interpreter
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef unsigned long ptr; /* pointer to EM adress */
|
||||||
|
|
||||||
|
long magic;
|
||||||
|
long flags;
|
||||||
|
long uref;
|
||||||
|
long version;
|
||||||
|
long wsize;
|
||||||
|
long psize;
|
||||||
|
long int7;
|
||||||
|
long int8;
|
||||||
|
long ntext;
|
||||||
|
long ndata;
|
||||||
|
long nproc;
|
||||||
|
long entrypoint;
|
||||||
|
long nline;
|
||||||
|
long szdata;
|
||||||
|
long ptr7;
|
||||||
|
long ptr8;
|
||||||
|
|
||||||
|
main(argc, argv)
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
printf("TPFCRE uref vers w/p text nproc szdata\n");
|
||||||
|
|
||||||
|
if (argc == 1) {
|
||||||
|
esize("e.out");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
while (argc > 1) {
|
||||||
|
esize(argv[1]);
|
||||||
|
argc--, argv++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
esize(fname)
|
||||||
|
char *fname;
|
||||||
|
{
|
||||||
|
eof = 0;
|
||||||
|
if (!rd_open(fname)) {
|
||||||
|
printf("%s: cannot open\n", fname);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (!rd_header()) {
|
||||||
|
printf("%s: not EM object format\n", fname);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf("%c", flags&0001 ? 'T' : '-');
|
||||||
|
printf("%c", flags&0002 ? 'P' : '-');
|
||||||
|
printf("%c", flags&0004 ? 'F' : '-');
|
||||||
|
printf("%c", flags&0010 ? 'C' : '-');
|
||||||
|
printf("%c", flags&0020 ? 'R' : '-');
|
||||||
|
printf("%c", flags&0040 ? 'E' : '-');
|
||||||
|
printf("%c", flags&0100 ? '?' : ' ');
|
||||||
|
printf("%c", flags&0200 ? '?' : ' ');
|
||||||
|
|
||||||
|
printf("%3ld ", uref);
|
||||||
|
printf("%3ld ", version);
|
||||||
|
printf("%1ld/%1ld", wsize, psize);
|
||||||
|
printf("%c", int7 ? '?' : ' ');
|
||||||
|
printf("%c", int8 ? '?' : ' ');
|
||||||
|
|
||||||
|
printf("%5ld ", ntext);
|
||||||
|
printf("%5ld ", nproc);
|
||||||
|
printf("%6ld", szdata);
|
||||||
|
printf("%c", ptr7 ? '?' : ' ');
|
||||||
|
printf("%c", ptr8 ? '?' : ' ');
|
||||||
|
printf("%s\n", fname);
|
||||||
|
}
|
||||||
|
rd_close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define btol(a) ((long)(((long) (a)) & 0xFF))
|
||||||
|
|
||||||
|
int
|
||||||
|
rd_open(load_file)
|
||||||
|
char *load_file;
|
||||||
|
{
|
||||||
|
return (load_fp = fopen(load_file, "r")) != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
rd_byte()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if ((i = fgetc(load_fp)) == EOF)
|
||||||
|
eof = 1;
|
||||||
|
return (i);
|
||||||
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
rd_int(n)
|
||||||
|
long n;
|
||||||
|
{
|
||||||
|
long l;
|
||||||
|
register int i;
|
||||||
|
|
||||||
|
l = btol(rd_byte());
|
||||||
|
for (i = 1; i < n; i++)
|
||||||
|
l = l | (btol(rd_byte()) << (long) (i*8));
|
||||||
|
return (l);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define rd_ptr() ((ptr) rd_int(psize))
|
||||||
|
|
||||||
|
int
|
||||||
|
rd_header()
|
||||||
|
{
|
||||||
|
magic = rd_int(2L);
|
||||||
|
if (magic != MAGIC || eof)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
flags = rd_int(2L);
|
||||||
|
uref = rd_int(2L);
|
||||||
|
version = rd_int(2L);
|
||||||
|
wsize = rd_int(2L);
|
||||||
|
psize = rd_int(2L);
|
||||||
|
int7 = rd_int(2L); /* Entry 7 is unused */
|
||||||
|
int8 = rd_int(2L); /* Entry 8 is unused */
|
||||||
|
|
||||||
|
ntext = rd_ptr();
|
||||||
|
ndata = rd_ptr();
|
||||||
|
nproc = rd_ptr();
|
||||||
|
entrypoint = rd_ptr();
|
||||||
|
nline = rd_ptr();
|
||||||
|
szdata = rd_ptr();
|
||||||
|
ptr7 = rd_ptr(); /* entry 7 is unused */
|
||||||
|
ptr8 = rd_ptr(); /* entry 8 is unused */
|
||||||
|
|
||||||
|
return !eof;
|
||||||
|
}
|
||||||
|
|
||||||
|
rd_close()
|
||||||
|
{
|
||||||
|
fclose(load_fp);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue