]> git.sur5r.net Git - cc65/blobdiff - src/od65/main.c
Improved optimizations
[cc65] / src / od65 / main.c
index 9387e26406f43b3684abb731e2910da647b5d8fd..6e4c413bf98e09f0ccb8afb3ed12481ba096c64e 100644 (file)
@@ -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       */
@@ -74,17 +74,21 @@ static void Usage (void)
             "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-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);
@@ -92,7 +96,8 @@ static void Usage (void)
 
 
 
-static void OptDumpAll (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;
@@ -100,15 +105,17 @@ static void OptDumpAll (const char* Opt, const char* Arg)
 
 
 
-static void OptDumpDbgSyms (const char* Opt, const char* Arg)
+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, const char* Arg)
+static void OptDumpExports (const char* Opt attribute ((unused)),
+                           const char* Arg attribute ((unused)))
 /* Dump the exported symbols */
 {
     What |= D_EXPORTS;
@@ -116,7 +123,8 @@ static void OptDumpExports (const char* Opt, const char* Arg)
 
 
 
-static void OptDumpFiles (const char* Opt, const char* Arg)
+static void OptDumpFiles (const char* Opt attribute ((unused)),
+                         const char* Arg attribute ((unused)))
 /* Dump the source files */
 {
     What |= D_FILES;
@@ -124,7 +132,8 @@ static void OptDumpFiles (const char* Opt, const char* Arg)
 
 
 
-static void OptDumpHeader (const char* Opt, const char* Arg)
+static void OptDumpHeader (const char* Opt attribute ((unused)),
+                          const char* Arg attribute ((unused)))
 /* Dump the object file header */
 {
     What |= D_HEADER;
@@ -132,7 +141,8 @@ static void OptDumpHeader (const char* Opt, const char* Arg)
 
 
 
-static void OptDumpImports (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;
@@ -140,7 +150,17 @@ static void OptDumpImports (const char* Opt, const char* Arg)
 
 
 
-static void OptDumpOptions (const char* Opt, const char* Arg)
+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;
@@ -148,7 +168,8 @@ static void OptDumpOptions (const char* Opt, const char* Arg)
 
 
 
-static void OptDumpSegments (const char* Opt, const char* Arg)
+static void OptDumpSegments (const char* Opt attribute ((unused)),
+                            const char* Arg attribute ((unused)))
 /* Dump the segments in the object file */
 {
     What |= D_SEGMENTS;
@@ -156,7 +177,17 @@ static void OptDumpSegments (const char* Opt, const char* Arg)
 
 
 
-static void OptHelp (const char* Opt, const char* Arg)
+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 ();
@@ -165,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);
 }
 
@@ -183,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 */
@@ -227,6 +259,12 @@ static void DumpFile (const char* Name)
        if (What & D_DBGSYMS) {
            DumpObjDbgSyms (F, 0);
        }
+       if (What & D_LINEINFO) {
+           DumpObjLineInfo (F, 0);
+       }
+       if (What & D_SEGSIZE) {
+                   DumpObjSegSize (F, 0);
+       }
     }
 
     /* Close the file */
@@ -246,23 +284,25 @@ int main (int argc, char* argv [])
        { "--dump-files",       0,      OptDumpFiles            },
        { "--dump-header",      0,      OptDumpHeader           },
        { "--dump-imports",     0,      OptDumpImports          },
+        { "--dump-lineinfo",    0,      OptDumpLineInfo         },
        { "--dump-options",     0,      OptDumpOptions          },
        { "--dump-segments",    0,      OptDumpSegments         },
-       { "--help",             0,      OptHelp                 },
-       { "--version",          0,      OptVersion              },
+               { "--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] == '-') {
@@ -280,6 +320,10 @@ int main (int argc, char* argv [])
                    OptDumpHeader (Arg, 0);
                    break;
 
+               case 'S':
+                   OptDumpSegSize (Arg, 0);
+                   break;
+
                        case 'V':
                    OptVersion (Arg, 0);
                            break;