|
@@ -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);
|
|
|
+}
|
|
|
+
|