X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fod65%2Fmain.c;h=6e4c413bf98e09f0ccb8afb3ed12481ba096c64e;hb=4a667ead00c10797fb57298b3dd33c2efc6c8d3f;hp=25963086d18bd9abd7be8bace7694c6a428a9e90;hpb=8dbc44fed4e7266e3715f97707b3c1c445309da4;p=cc65 diff --git a/src/od65/main.c b/src/od65/main.c index 25963086d..6e4c413bf 100644 --- a/src/od65/main.c +++ b/src/od65/main.c @@ -6,10 +6,10 @@ /* */ /* */ /* */ -/* (C) 2000 Ullrich von Bassewitz */ +/* (C) 2000-2002 Ullrich von Bassewitz */ /* Wacholderweg 14 */ /* D-70597 Stuttgart */ -/* EMail: uz@musoftware.de */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -71,13 +71,24 @@ static void Usage (void) /* Print usage information and exit */ { fprintf (stderr, - "Usage: %s [options] file\n" + "Usage: %s [options] file [options] [file]\n" "Short options:\n" " -h\t\t\tHelp (this text)\n" + " -H\t\t\tDump the object file header\n" + " -S\t\t\tDump segments sizes\n" " -V\t\t\tPrint the version number and exit\n" "\n" "Long options:\n" + " --dump-all\t\tDump all object file information\n" + " --dump-dbgsyms\tDump debug symbols\n" + " --dump-exports\tDump exported symbols\n" + " --dump-files\t\tDump the source files\n" " --dump-header\t\tDump the object file header\n" + " --dump-imports\tDump imported symbols\n" + " --dump-lineinfo\tDump line information\n" + " --dump-options\tDump object file options\n" + " --dump-segments\tDump the segments in the file\n" + " --dump-segsize\tDump segments sizes\n" " --help\t\tHelp (this text)\n" " --version\t\tPrint the version number and exit\n", ProgName); @@ -85,7 +96,44 @@ static void Usage (void) -static void OptDumpHeader (const char* Opt, const char* Arg) +static void OptDumpAll (const char* Opt attribute ((unused)), + const char* Arg attribute ((unused))) +/* Dump all object file information */ +{ + What |= D_ALL; +} + + + +static void OptDumpDbgSyms (const char* Opt attribute ((unused)), + const char* Arg attribute ((unused))) +/* Dump debug symbols contained in the object file */ +{ + What |= D_DBGSYMS; +} + + + +static void OptDumpExports (const char* Opt attribute ((unused)), + const char* Arg attribute ((unused))) +/* Dump the exported symbols */ +{ + What |= D_EXPORTS; +} + + + +static void OptDumpFiles (const char* Opt attribute ((unused)), + const char* Arg attribute ((unused))) +/* Dump the source files */ +{ + What |= D_FILES; +} + + + +static void OptDumpHeader (const char* Opt attribute ((unused)), + const char* Arg attribute ((unused))) /* Dump the object file header */ { What |= D_HEADER; @@ -93,7 +141,53 @@ static void OptDumpHeader (const char* Opt, const char* Arg) -static void OptHelp (const char* Opt, const char* Arg) +static void OptDumpImports (const char* Opt attribute ((unused)), + const char* Arg attribute ((unused))) +/* Dump the imported symbols */ +{ + What |= D_IMPORTS; +} + + + +static void OptDumpLineInfo (const char* Opt attribute ((unused)), + const char* Arg attribute ((unused))) +/* Dump the line infos */ +{ + What |= D_LINEINFO; +} + + + +static void OptDumpOptions (const char* Opt attribute ((unused)), + const char* Arg attribute ((unused))) +/* Dump the object file options */ +{ + What |= D_OPTIONS; +} + + + +static void OptDumpSegments (const char* Opt attribute ((unused)), + const char* Arg attribute ((unused))) +/* Dump the segments in the object file */ +{ + What |= D_SEGMENTS; +} + + + +static void OptDumpSegSize (const char* Opt attribute ((unused)), + const char* Arg attribute ((unused))) +/* Dump the segments in the object file */ +{ + What |= D_SEGSIZE; +} + + + +static void OptHelp (const char* Opt attribute ((unused)), + const char* Arg attribute ((unused))) /* Print usage information and exit */ { Usage (); @@ -102,11 +196,12 @@ static void OptHelp (const char* Opt, const char* Arg) -static void OptVersion (const char* Opt, const char* Arg) +static void OptVersion (const char* Opt attribute ((unused)), + const char* Arg attribute ((unused))) /* Print the assembler version */ { fprintf (stderr, - "%s V%u.%u.%u - (C) Copyright 2000 Ullrich von Bassewitz\n", + "%s V%u.%u.%u - (C) Copyright 2000-2002 Ullrich von Bassewitz\n", ProgName, VER_MAJOR, VER_MINOR, VER_PATCH); } @@ -120,7 +215,7 @@ static void DumpFile (const char* Name) /* Try to open the file */ FILE* F = fopen (Name, "rb"); if (F == 0) { - Warning ("Cannot open `%s': %s", Name, strerror (errno)); + Error ("Cannot open `%s': %s", Name, strerror (errno)); } /* Read the magic word */ @@ -144,9 +239,32 @@ static void DumpFile (const char* Name) /* Check what to dump */ if (What & D_HEADER) { - DumpHeader (F, 0); + DumpObjHeader (F, 0); } - + if (What & D_OPTIONS) { + DumpObjOptions (F, 0); + } + if (What & D_FILES) { + DumpObjFiles (F, 0); + } + if (What & D_SEGMENTS) { + DumpObjSegments (F, 0); + } + if (What & D_IMPORTS) { + DumpObjImports (F, 0); + } + if (What & D_EXPORTS) { + DumpObjExports (F, 0); + } + if (What & D_DBGSYMS) { + DumpObjDbgSyms (F, 0); + } + if (What & D_LINEINFO) { + DumpObjLineInfo (F, 0); + } + if (What & D_SEGSIZE) { + DumpObjSegSize (F, 0); + } } /* Close the file */ @@ -160,39 +278,52 @@ int main (int argc, char* argv []) { /* Program long options */ static const LongOpt OptTab[] = { + { "--dump-all", 0, OptDumpAll }, + { "--dump-dbgsyms", 0, OptDumpDbgSyms }, + { "--dump-exports", 0, OptDumpExports }, + { "--dump-files", 0, OptDumpFiles }, { "--dump-header", 0, OptDumpHeader }, - { "--help", 0, OptHelp }, - { "--version", 0, OptVersion }, + { "--dump-imports", 0, OptDumpImports }, + { "--dump-lineinfo", 0, OptDumpLineInfo }, + { "--dump-options", 0, OptDumpOptions }, + { "--dump-segments", 0, OptDumpSegments }, + { "--dump-segsize", 0, OptDumpSegSize }, + { "--help", 0, OptHelp }, + { "--version", 0, OptVersion }, }; - int I; + unsigned I; /* Initialize the cmdline module */ - InitCmdLine (argc, argv, "od65"); + InitCmdLine (&argc, &argv, "od65"); /* Check the parameters */ I = 1; - while (I < argc) { + while (I < ArgCount) { /* Get the argument */ - const char* Arg = argv [I]; + const char* Arg = ArgVec[I]; /* Check for an option */ if (Arg [0] == '-') { switch (Arg [1]) { - case '-': - LongOption (&I, OptTab, sizeof(OptTab)/sizeof(OptTab[0])); - break; + case '-': + LongOption (&I, OptTab, sizeof(OptTab)/sizeof(OptTab[0])); + break; - case 'h': - OptHelp (Arg, 0); - break; + case 'h': + OptHelp (Arg, 0); + break; - case 'H': + case 'H': OptDumpHeader (Arg, 0); break; + case 'S': + OptDumpSegSize (Arg, 0); + break; + case 'V': OptVersion (Arg, 0); break;