123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- /* esize: prints info from e.out header
- */
- #include <stdlib.h>
- #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);
- }
|