OSDN Git Service

Revert Rainer Orth's Java and gcc.c patch.
authordje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 12 Aug 2001 20:36:22 +0000 (20:36 +0000)
committerdje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 12 Aug 2001 20:36:22 +0000 (20:36 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44834 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/alpha/osf.h
gcc/gcc.c
gcc/gcc.h
gcc/java/ChangeLog
gcc/java/jvgenmain.c
gcc/java/jvspec.c

index ccdd136..6d6b192 100644 (file)
@@ -1,3 +1,17 @@
+2001-08-12  David Edelsohn  <edelsohn@gnu.org>
+
+       Revert:
+       2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
+       * gcc.c (set_collect_gcc_options): New function, split out from
+       main.
+       Ignore elided switches.
+       (do_spec_1): Invoke before executing command.
+       (set_input): Export.
+       Move declaration ...
+       * gcc.h (set_input): ... here.
+       * config/alpha/osf.h (ASM_FINAL_SPEC): Use %U.s to refer to input
+       file.
+
 2001-08-12  Richard Henderson  <rth@redhat.com>
 
        * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Fix
index 4386f56..250974c 100644 (file)
@@ -121,7 +121,7 @@ Boston, MA 02111-1307, USA.  */
                %{K: -I %b.o~} \
                %{!K: %{save-temps: -I %b.o~}} \
                %{c:%W{o*}%{!o*:-o %b.o}}%{!c:-o %U.o} \
-               %{.s:%i} %{!.s:%U.s}}}"
+               %{.s:%i} %{!.s:%g.s}}}"
 
 #else
 #define ASM_FINAL_SPEC "\
@@ -130,7 +130,7 @@ Boston, MA 02111-1307, USA.  */
                %{K: -I %b.o~} \
                %{!K: %{save-temps: -I %b.o~}} \
                %{c:%W{o*}%{!o*:-o %b.o}}%{!c:-o %U.o} \
-               %{.s:%i} %{!.s:%U.s}}}"
+               %{.s:%i} %{!.s:%g.s}}}"
 
 #endif
 
index ed86fa0..409ac2b 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -289,7 +289,6 @@ static void clear_failure_queue PARAMS ((void));
 static int check_live_switch   PARAMS ((int, int));
 static const char *handle_braces PARAMS ((const char *));
 static char *save_string       PARAMS ((const char *, int));
-static void set_collect_gcc_options PARAMS ((void));
 static int do_spec_1           PARAMS ((const char *, int, const char *));
 static const char *find_file   PARAMS ((const char *));
 static int is_directory                PARAMS ((const char *, const char *, int));
@@ -313,6 +312,7 @@ static void process_command         PARAMS ((int, const char *const *));
 static int execute                     PARAMS ((void));
 static void clear_args                 PARAMS ((void));
 static void fatal_error                        PARAMS ((int));
+static void set_input                  PARAMS ((const char *));
 static void init_gcc_specs              PARAMS ((struct obstack *,
                                                 const char *,
                                                 const char *));
@@ -3960,63 +3960,6 @@ process_command (argc, argv)
   switches[n_switches].part1 = 0;
   infiles[n_infiles].name = 0;
 }
-
-/* Store switches not filtered out but %{<S} in spec in COLLECT_GCC_OPTIONS
-   and place that in the environment.  */
-
-static void
-set_collect_gcc_options ()
-{
-  int i;
-  int first_time;
-
-  /* Build COLLECT_GCC_OPTIONS to have all of the options specified to
-     the compiler.  */
-  obstack_grow (&collect_obstack, "COLLECT_GCC_OPTIONS=",
-               sizeof ("COLLECT_GCC_OPTIONS=") - 1);
-
-  first_time = TRUE;
-  for (i = 0; (int) i < n_switches; i++)
-    {
-      const char *const *args;
-      const char *p, *q;
-      if (!first_time)
-       obstack_grow (&collect_obstack, " ", 1);
-
-      first_time = FALSE;
-
-      /* Ignore elided switches.  */
-      if (switches[i].live_cond == SWITCH_IGNORE)
-       continue;
-
-      obstack_grow (&collect_obstack, "'-", 2);
-      q = switches[i].part1;
-      while ((p = strchr (q, '\'')))
-       {
-         obstack_grow (&collect_obstack, q, p - q);
-         obstack_grow (&collect_obstack, "'\\''", 4);
-         q = ++p;
-       }
-      obstack_grow (&collect_obstack, q, strlen (q));
-      obstack_grow (&collect_obstack, "'", 1);
-
-      for (args = switches[i].args; args && *args; args++)
-       {
-         obstack_grow (&collect_obstack, " '", 2);
-         q = *args;
-         while ((p = strchr (q, '\'')))
-           {
-             obstack_grow (&collect_obstack, q, p - q);
-             obstack_grow (&collect_obstack, "'\\''", 4);
-             q = ++p;
-           }
-         obstack_grow (&collect_obstack, q, strlen (q));
-         obstack_grow (&collect_obstack, "'", 1);
-       }
-    }
-  obstack_grow (&collect_obstack, "\0", 1);
-  putenv (obstack_finish (&collect_obstack));
-}
 \f
 /* Process a spec string, accumulating and running commands.  */
 
@@ -4160,8 +4103,6 @@ do_spec_1 (spec, inswitch, soft_matched_part)
              argbuf_index--;
          }
 
-       set_collect_gcc_options ();
-
        if (argbuf_index > 0)
          {
            value = execute ();
@@ -5545,7 +5486,7 @@ is_directory (path1, path2, linker)
 /* Set up the various global variables to indicate that we're processing
    the input file named FILENAME.  */
 
-void
+static void
 set_input (filename)
      const char *filename;
 {
@@ -5718,6 +5659,52 @@ main (argc, argv)
 
   process_command (argc, argv);
 
+  {
+    int first_time;
+
+    /* Build COLLECT_GCC_OPTIONS to have all of the options specified to
+       the compiler.  */
+    obstack_grow (&collect_obstack, "COLLECT_GCC_OPTIONS=",
+                 sizeof ("COLLECT_GCC_OPTIONS=") - 1);
+
+    first_time = TRUE;
+    for (i = 0; (int) i < n_switches; i++)
+      {
+       const char *const *args;
+       const char *p, *q;
+       if (!first_time)
+         obstack_grow (&collect_obstack, " ", 1);
+
+       first_time = FALSE;
+       obstack_grow (&collect_obstack, "'-", 2);
+       q = switches[i].part1;
+       while ((p = strchr (q, '\'')))
+         {
+           obstack_grow (&collect_obstack, q, p - q);
+           obstack_grow (&collect_obstack, "'\\''", 4);
+           q = ++p;
+         }
+       obstack_grow (&collect_obstack, q, strlen (q));
+       obstack_grow (&collect_obstack, "'", 1);
+
+       for (args = switches[i].args; args && *args; args++)
+         {
+           obstack_grow (&collect_obstack, " '", 2);
+           q = *args;
+           while ((p = strchr (q, '\'')))
+             {
+               obstack_grow (&collect_obstack, q, p - q);
+               obstack_grow (&collect_obstack, "'\\''", 4);
+               q = ++p;
+             }
+           obstack_grow (&collect_obstack, q, strlen (q));
+           obstack_grow (&collect_obstack, "'", 1);
+         }
+      }
+    obstack_grow (&collect_obstack, "\0", 1);
+    putenv (obstack_finish (&collect_obstack));
+  }
+
   /* Initialize the vector of specs to just the default.
      This means one element containing 0s, as a terminator.  */
 
index 55a79a9..6252676 100644 (file)
--- a/gcc/gcc.h
+++ b/gcc/gcc.h
@@ -1,5 +1,5 @@
 /* Header file for modules that link with gcc.c
-   Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1999 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -33,7 +33,6 @@ extern void fatal PARAMS ((const char *, ...))
      ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
 extern void error PARAMS ((const char *, ...)) ATTRIBUTE_PRINTF_1;
 extern void pfatal_with_name PARAMS ((const char *)) ATTRIBUTE_NORETURN;
-extern void set_input PARAMS ((const char *));
 
 /* Spec files linked with gcc.c must provide definitions for these. */
 
index 0356cb7..4dd5132 100644 (file)
@@ -1,3 +1,16 @@
+2001-08-12  David Edelsohn  <edelsohn@gnu.org>
+
+       Revert:
+       2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
+       * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
+       ASM_FINAL_SPEC.
+       (lang_specific_pre_link): Use set_input to set input_filename.
+       Append `main' here.
+       * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
+       (main): Fix definition.
+       Strip `main' from classname.
+       Fixes PR java/227.
+
 2001-08-11  Zack Weinberg  <zackw@panix.com>
 
        * lex.h: Don't include setjmp.h.  Don't define
index 9a42571..ab43ddd 100644 (file)
@@ -61,14 +61,14 @@ static void usage (const char *) ATTRIBUTE_NORETURN;
 static void
 usage (const char *name)
 {
-  fprintf (stderr, "Usage: %s [OPTIONS]... CLASSNAMEmain [OUTFILE]\n", name);
+  fprintf (stderr, "Usage: %s [OPTIONS]... CLASSNAME [OUTFILE]\n", name);
   exit (1);
 }
 
 int
-main (int argc, char **argv)
+main (int argc, const char **argv)
 {
-  char *classname, *p;
+  const char *classname;
   FILE *stream;
   const char *mangled_classname;
   int i, last_arg;
@@ -92,13 +92,6 @@ main (int argc, char **argv)
 
   classname = argv[i];
 
-  /* gcj always appends `main' to classname.  We need to strip this here.  */
-  p = strrchr (classname, 'm');
-  if (p == NULL || p == classname || strcmp (p, "main") != 0)
-    usage (argv[0]);
-  else
-    *p = '\0';
-
   gcc_obstack_init (mangle_obstack);
   mangled_classname = do_mangle_classname (classname);
 
index 761c580..44342cf 100644 (file)
@@ -52,8 +52,8 @@ int lang_specific_extra_outfiles = 0;
 int shared_libgcc = 1;
 
 const char jvgenmain_spec[] =
-  "jvgenmain %{D*} %b %{!pipe:%u.i} |\n\
-   cc1 %{!pipe:%U.i} %1 \
+  "jvgenmain %{D*} %i %{!pipe:%umain.i} |\n\
+   cc1 %{!pipe:%Umain.i} %1 \
                   %{!Q:-quiet} -dumpbase %b.c %{d*} %{m*} %{a*}\
                   %{g*} %{O*} \
                   %{v:-version} %{pg:-p} %{p}\
@@ -68,8 +68,8 @@ const char jvgenmain_spec[] =
                   %{f*} -fdollars-in-identifiers\
                   %{aux-info*}\
                   %{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\
-                  %{S:%W{o*}%{!o*:-o %b.s}}%{!S:-o %{|!pipe:%U.s}} |\n\
-              %{!S:as %a %Y -o %d%w%u%O %{!pipe:%U.s} %A\n }";
+                  %{S:%W{o*}%{!o*:-o %b.s}}%{!S:-o %{|!pipe:%Umain.s}} |\n\
+              %{!S:as %a %Y -o %d%w%umain%O %{!pipe:%Umain.s} %A\n }";
 
 /* Return full path name of spec file if it is in DIR, or NULL if
    not.  */
@@ -529,14 +529,8 @@ lang_specific_pre_link ()
   int err;
   if (main_class_name == NULL)
     return 0;
-  /* Append `main' to make the filename unique and allow
-
-       gcj --main=hello -save-temps hello.java
-
-     to work.  jvgenmain needs to strip this `main' to arrive at the correct
-     class name.  Append dummy `.c' that can be stripped by set_input so %b
-     is correct.  */ 
-  set_input (concat (main_class_name, "main.c", NULL));
+  input_filename = main_class_name;
+  input_filename_length = strlen (main_class_name);
   err = do_spec (jvgenmain_spec);
   if (err == 0)
     {