diff options
author | H. Peter Anvin <hpa@zytor.com> | 2005-01-15 22:15:51 +0000 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2005-01-15 22:15:51 +0000 |
commit | e2c80181b6a6338f0381fc9c44fae32d8b8a20fc (patch) | |
tree | f9919ba3c0489d886c9a79e73257ef6a4584aafc /rdoff/rdfdump.c | |
parent | 5180bc8a598aa5bff7bfb3726771e5bf348e61a2 (diff) | |
download | nasm-e2c80181b6a6338f0381fc9c44fae32d8b8a20fc.tar.gz |
Apply Nindent to all .c and .h filesnasm-0.98.39LATEST
Diffstat (limited to 'rdoff/rdfdump.c')
-rw-r--r-- | rdoff/rdfdump.c | 459 |
1 files changed, 234 insertions, 225 deletions
diff --git a/rdoff/rdfdump.c b/rdoff/rdfdump.c index 626fd2a1..de2bb595 100644 --- a/rdoff/rdfdump.c +++ b/rdoff/rdfdump.c @@ -22,139 +22,143 @@ void print_header(long length, int rdf_version) uint16 rs; while (length > 0) { - fread(&t, 1, 1, infile); - if (rdf_version >= 2) { - fread(&reclen, 1, 1, infile); - } - switch (t) { - case RDFREC_GENERIC: /* generic record */ - printf(" generic record (length=%d)\n", (int) reclen); - fseek(infile, reclen, SEEK_CUR); - break; - - case RDFREC_RELOC: /* relocation record */ - case RDFREC_SEGRELOC: /* segment relocation */ - fread(&s, 1, 1, infile); - fread(&o, 4, 1, infile); - fread(&l, 1, 1, infile); - fread(&rs, 2, 1, infile); - printf(" %s: location (%04x:%08lx), length %d, " - "referred seg %04x\n", t == 1 ? "relocation" : "seg relocation", - (int) s, translatelong(o), (int) l, translateshort(rs)); - if (rdf_version >= 2 && reclen != 8) - printf(" warning: reclen != 8\n"); - if (rdf_version == 1) - length -= 9; - if (rdf_version == 1 && t == 6) - printf(" warning: seg relocation not supported in RDOFF1\n"); - break; - - case RDFREC_IMPORT: /* import record */ - case RDFREC_FARIMPORT: /* import far symbol */ - fread(&flags, 1, 1, infile); - fread(&rs, 2, 1, infile); - ll = 0; - - if (rdf_version == 1) { - do { - fread(&buf[ll], 1, 1, infile); - } while (buf[ll++]); - } else { - for (; ll < reclen - 3; ll++) - fread(&buf[ll], 1, 1, infile); - } - - if (t == 7) - printf("far "); - printf((flags & SYM_IMPORT) ? " import" : " extern"); - if (flags & SYM_FUNCTION) - printf(" proc"); - if (flags & SYM_DATA) - printf(" data"); - printf(": segment %04x = %s\n", translateshort(rs), buf); - if (rdf_version == 1) - length -= ll + 3; - if (rdf_version == 1 && t == 7) - printf(" warning: far import not supported in RDOFF1\n"); - break; - - case RDFREC_GLOBAL: /* export record */ - fread(&flags, 1, 1, infile); - fread(&s, 1, 1, infile); - fread(&o, 4, 1, infile); - ll = 0; - - if (rdf_version == 1) { - do { - fread(&buf[ll], 1, 1, infile); - } while (buf[ll++]); - } else { - for (; ll < reclen - 6; ll++) - fread(&buf[ll], 1, 1, infile); - } - printf((flags & SYM_GLOBAL) ? " export" : " public"); - if (flags & SYM_FUNCTION) - printf(" proc"); - if (flags & SYM_DATA) - printf(" data"); - printf(": (%04x:%08lx) = %s\n", (int) s, translatelong(o), buf); - if (rdf_version == 1) - length -= ll + 6; - break; - - case RDFREC_DLL: /* DLL and Module records */ - case RDFREC_MODNAME: - ll = 0; - if (rdf_version == 1) { - do { - fread(&buf[ll], 1, 1, infile); - } while (buf[ll++]); - } else { - for (; ll < reclen; ll++) - fread(&buf[ll], 1, 1, infile); - } - if (t == 4) - printf(" dll: %s\n", buf); - else - printf(" module: %s\n", buf); - if (rdf_version == 1) - length -= ll + 1; - break; - - case RDFREC_BSS: /* BSS reservation */ - fread(&ll, 4, 1, infile); - printf(" bss reservation: %08lx bytes\n", translatelong(ll)); - if (rdf_version == 1) - length -= 5; - if (rdf_version > 1 && reclen != 4) - printf(" warning: reclen != 4\n"); - break; - - case RDFREC_COMMON: { - unsigned short seg, align; - unsigned long size; - - fread(&seg, 2, 1, infile); - fread(&size, 4, 1, infile); - fread(&align, 2, 1, infile); - for (ll = 0; ll < reclen - 8; ll++) - fread(buf + ll, 1, 1, infile); - printf(" common: segment %04x = %s, %ld:%d\n", translateshort(seg), - buf, translatelong(size), translateshort(align)); - break; - } - - default: - printf(" unrecognized record (type %d", (int) t); - if (rdf_version > 1) { - printf(", length %d", (int) reclen); - fseek(infile, reclen, SEEK_CUR); - } else - length--; - printf(")\n"); - } - if (rdf_version != 1) - length -= 2 + reclen; + fread(&t, 1, 1, infile); + if (rdf_version >= 2) { + fread(&reclen, 1, 1, infile); + } + switch (t) { + case RDFREC_GENERIC: /* generic record */ + printf(" generic record (length=%d)\n", (int)reclen); + fseek(infile, reclen, SEEK_CUR); + break; + + case RDFREC_RELOC: /* relocation record */ + case RDFREC_SEGRELOC: /* segment relocation */ + fread(&s, 1, 1, infile); + fread(&o, 4, 1, infile); + fread(&l, 1, 1, infile); + fread(&rs, 2, 1, infile); + printf(" %s: location (%04x:%08lx), length %d, " + "referred seg %04x\n", + t == 1 ? "relocation" : "seg relocation", (int)s, + translatelong(o), (int)l, translateshort(rs)); + if (rdf_version >= 2 && reclen != 8) + printf(" warning: reclen != 8\n"); + if (rdf_version == 1) + length -= 9; + if (rdf_version == 1 && t == 6) + printf + (" warning: seg relocation not supported in RDOFF1\n"); + break; + + case RDFREC_IMPORT: /* import record */ + case RDFREC_FARIMPORT: /* import far symbol */ + fread(&flags, 1, 1, infile); + fread(&rs, 2, 1, infile); + ll = 0; + + if (rdf_version == 1) { + do { + fread(&buf[ll], 1, 1, infile); + } while (buf[ll++]); + } else { + for (; ll < reclen - 3; ll++) + fread(&buf[ll], 1, 1, infile); + } + + if (t == 7) + printf("far "); + printf((flags & SYM_IMPORT) ? " import" : " extern"); + if (flags & SYM_FUNCTION) + printf(" proc"); + if (flags & SYM_DATA) + printf(" data"); + printf(": segment %04x = %s\n", translateshort(rs), buf); + if (rdf_version == 1) + length -= ll + 3; + if (rdf_version == 1 && t == 7) + printf + (" warning: far import not supported in RDOFF1\n"); + break; + + case RDFREC_GLOBAL: /* export record */ + fread(&flags, 1, 1, infile); + fread(&s, 1, 1, infile); + fread(&o, 4, 1, infile); + ll = 0; + + if (rdf_version == 1) { + do { + fread(&buf[ll], 1, 1, infile); + } while (buf[ll++]); + } else { + for (; ll < reclen - 6; ll++) + fread(&buf[ll], 1, 1, infile); + } + printf((flags & SYM_GLOBAL) ? " export" : " public"); + if (flags & SYM_FUNCTION) + printf(" proc"); + if (flags & SYM_DATA) + printf(" data"); + printf(": (%04x:%08lx) = %s\n", (int)s, translatelong(o), buf); + if (rdf_version == 1) + length -= ll + 6; + break; + + case RDFREC_DLL: /* DLL and Module records */ + case RDFREC_MODNAME: + ll = 0; + if (rdf_version == 1) { + do { + fread(&buf[ll], 1, 1, infile); + } while (buf[ll++]); + } else { + for (; ll < reclen; ll++) + fread(&buf[ll], 1, 1, infile); + } + if (t == 4) + printf(" dll: %s\n", buf); + else + printf(" module: %s\n", buf); + if (rdf_version == 1) + length -= ll + 1; + break; + + case RDFREC_BSS: /* BSS reservation */ + fread(&ll, 4, 1, infile); + printf(" bss reservation: %08lx bytes\n", translatelong(ll)); + if (rdf_version == 1) + length -= 5; + if (rdf_version > 1 && reclen != 4) + printf(" warning: reclen != 4\n"); + break; + + case RDFREC_COMMON:{ + unsigned short seg, align; + unsigned long size; + + fread(&seg, 2, 1, infile); + fread(&size, 4, 1, infile); + fread(&align, 2, 1, infile); + for (ll = 0; ll < reclen - 8; ll++) + fread(buf + ll, 1, 1, infile); + printf(" common: segment %04x = %s, %ld:%d\n", + translateshort(seg), buf, translatelong(size), + translateshort(align)); + break; + } + + default: + printf(" unrecognized record (type %d", (int)t); + if (rdf_version > 1) { + printf(", length %d", (int)reclen); + fseek(infile, reclen, SEEK_CUR); + } else + length--; + printf(")\n"); + } + if (rdf_version != 1) + length -= 2 + reclen; } } @@ -175,45 +179,46 @@ int main(int argc, char **argv) printf("RDOFF dump utility, version %s\n", PROGRAM_VERSION); printf("RDOFF2 revision %s\n", RDOFF2_REVISION); puts("Copyright (c) 1996,99 Julian R Hall\n" - "Improvements and fixes (c) 2002-2004 RET & COM Research."); + "Improvements and fixes (c) 2002-2004 RET & COM Research."); if (argc < 2) { - fputs("Usage: rdfdump [-v] <filename>\n", stderr); - exit(1); + fputs("Usage: rdfdump [-v] <filename>\n", stderr); + exit(1); } if (!strcmp(argv[1], "-v")) { - verbose = 1; - if (argc < 3) { - fputs("required parameter missing\n", stderr); - exit(1); - } - argv++; + verbose = 1; + if (argc < 3) { + fputs("required parameter missing\n", stderr); + exit(1); + } + argv++; } infile = fopen(argv[1], "rb"); if (!infile) { - fprintf(stderr, "rdfdump: Could not open %s\n", argv[1]); - exit(1); + fprintf(stderr, "rdfdump: Could not open %s\n", argv[1]); + exit(1); } fread(id, 6, 1, infile); if (strncmp(id, "RDOFF", 5)) { - fputs("rdfdump: File does not contain valid RDOFF header\n", stderr); - exit(1); + fputs("rdfdump: File does not contain valid RDOFF header\n", + stderr); + exit(1); } printf("File %s: RDOFF version %c\n\n", argv[1], id[5]); if (id[5] < '1' || id[5] > '2') { - fprintf(stderr, "rdfdump: unknown RDOFF version '%c'\n", id[5]); - exit(1); + fprintf(stderr, "rdfdump: unknown RDOFF version '%c'\n", id[5]); + exit(1); } version = id[5] - '0'; if (version > 1) { - fread(&l, 4, 1, infile); - objectlength = translatelong(l); - printf("Object content size: %ld bytes\n", objectlength); + fread(&l, 4, 1, infile); + objectlength = translatelong(l); + printf("Object content size: %ld bytes\n", objectlength); } fread(&l, 4, 1, infile); @@ -222,81 +227,85 @@ int main(int argc, char **argv) print_header(headerlength, version); if (version == 1) { - fread(&l, 4, 1, infile); - l = translatelong(l); - printf("\nText segment length = %ld bytes\n", l); - offset = 0; - while (l--) { - fread(id, 1, 1, infile); - if (verbose) { - if (offset % 16 == 0) - printf("\n%08lx ", offset); - printf(" %02x", (int) (unsigned char) id[0]); - offset++; - } - } - if (verbose) - printf("\n\n"); - - fread(&l, 4, 1, infile); - l = translatelong(l); - printf("Data segment length = %ld bytes\n", l); - - if (verbose) { - offset = 0; - while (l--) { - fread(id, 1, 1, infile); - if (offset % 16 == 0) - printf("\n%08lx ", offset); - printf(" %02x", (int) (unsigned char) id[0]); - offset++; - } - printf("\n"); - } + fread(&l, 4, 1, infile); + l = translatelong(l); + printf("\nText segment length = %ld bytes\n", l); + offset = 0; + while (l--) { + fread(id, 1, 1, infile); + if (verbose) { + if (offset % 16 == 0) + printf("\n%08lx ", offset); + printf(" %02x", (int)(unsigned char)id[0]); + offset++; + } + } + if (verbose) + printf("\n\n"); + + fread(&l, 4, 1, infile); + l = translatelong(l); + printf("Data segment length = %ld bytes\n", l); + + if (verbose) { + offset = 0; + while (l--) { + fread(id, 1, 1, infile); + if (offset % 16 == 0) + printf("\n%08lx ", offset); + printf(" %02x", (int)(unsigned char)id[0]); + offset++; + } + printf("\n"); + } } else { - do { - fread(&s, 2, 1, infile); - s = translateshort(s); - if (!s) { - printf("\nNULL segment\n"); - foundnullsegment = 1; - break; - } - printf("\nSegment:\n Type = %04X (%s)\n", (int) s, translatesegmenttype(s)); - nsegments++; - - fread(&s, 2, 1, infile); - printf(" Number = %04X\n", (int) translateshort(s)); - fread(&s, 2, 1, infile); - printf(" Resrvd = %04X\n", (int) translateshort(s)); - fread(&l, 4, 1, infile); - l = translatelong(l); - printf(" Length = %ld bytes\n", l); - segmentcontentlength += l; - - offset = 0; - while (l--) { - fread(id, 1, 1, infile); - if (verbose) { - if (offset % 16 == 0) - printf("\n%08lx ", offset); - printf(" %02x", (int) (unsigned char) id[0]); - offset++; - } - } - if (verbose) - printf("\n"); - } while (!feof(infile)); - if (!foundnullsegment) - printf("\nWarning: unexpected end of file - " "NULL segment not found\n"); - - printf("\nTotal number of segments: %d\n", nsegments); - printf("Total segment content length: %ld bytes\n", segmentcontentlength); - - /* calculate what the total object content length should have been */ - l = segmentcontentlength + 10 * (nsegments + 1) + headerlength + 4; - if (l != objectlength) - printf("Warning: actual object length (%ld) != " "stored object length (%ld)\n", l, objectlength); + do { + fread(&s, 2, 1, infile); + s = translateshort(s); + if (!s) { + printf("\nNULL segment\n"); + foundnullsegment = 1; + break; + } + printf("\nSegment:\n Type = %04X (%s)\n", (int)s, + translatesegmenttype(s)); + nsegments++; + + fread(&s, 2, 1, infile); + printf(" Number = %04X\n", (int)translateshort(s)); + fread(&s, 2, 1, infile); + printf(" Resrvd = %04X\n", (int)translateshort(s)); + fread(&l, 4, 1, infile); + l = translatelong(l); + printf(" Length = %ld bytes\n", l); + segmentcontentlength += l; + + offset = 0; + while (l--) { + fread(id, 1, 1, infile); + if (verbose) { + if (offset % 16 == 0) + printf("\n%08lx ", offset); + printf(" %02x", (int)(unsigned char)id[0]); + offset++; + } + } + if (verbose) + printf("\n"); + } while (!feof(infile)); + if (!foundnullsegment) + printf("\nWarning: unexpected end of file - " + "NULL segment not found\n"); + + printf("\nTotal number of segments: %d\n", nsegments); + printf("Total segment content length: %ld bytes\n", + segmentcontentlength); + + /* calculate what the total object content length should have been */ + l = segmentcontentlength + 10 * (nsegments + 1) + headerlength + 4; + if (l != objectlength) + printf("Warning: actual object length (%ld) != " + "stored object length (%ld)\n", l, objectlength); } fclose(infile); return 0; |