*** empty log message ***
authorRichard Stallman <rms@gnu.org>
Sat, 9 May 1992 07:00:44 +0000 (07:00 +0000)
committerRichard Stallman <rms@gnu.org>
Sat, 9 May 1992 07:00:44 +0000 (07:00 +0000)
From-SVN: r945

gcc/gcc.c
gcc/rtl.c

index 6a6449d..39df4d5 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -94,6 +94,11 @@ extern int execv (), execvp ();
 
 #define MIN_FATAL_STATUS 1
 
+/* Flag saying to print the full filename of libgcc.a
+   as found through our usual search mechanism.  */
+
+static int print_libgcc_file_name;
+
 /* Flag indicating whether we should print the command and arguments */
 
 static int verbose_flag;
@@ -1826,6 +1831,10 @@ process_command (argc, argv)
          printf ("%s\n", version_string);
          exit (0);
        }
+      else if (! strcmp (argv[i], "-print-libgcc-file-name"))
+       {
+         print_libgcc_file_name = 1;
+       }
       else if (! strcmp (argv[i], "-Xlinker"))
        {
          /* Pass the argument of this option to the linker when we link.  */
@@ -1939,6 +1948,8 @@ process_command (argc, argv)
     {
       if (!strcmp (argv[i], "-Xlinker"))
        i++;
+      else if (! strcmp (argv[i], "-print-libgcc-file-name"))
+       i++;
       else if (argv[i][0] == '-' && argv[i][1] != 0 && argv[i][1] != 'l')
        {
          register char *p = &argv[i][1];
@@ -3038,6 +3049,12 @@ main (argc, argv)
     if (! switches[i].valid)
       error ("unrecognized option `-%s'", switches[i].part1);
 
+  if (print_libgcc_file_name)
+    {
+      printf ("%s\n", find_file ("libgcc.a"));
+      exit (0);
+    }
+
   /* Obey some of the options.  */
 
   if (verbose_flag)
index dc9e218..7d7d73a 100644 (file)
--- a/gcc/rtl.c
+++ b/gcc/rtl.c
@@ -642,36 +642,28 @@ read_rtx (infile)
            }
          if (c != '"')
            dump_and_abort ('"', c, infile);
-         j = 0;
-         stringbufsize = 10;
-         stringbuf = (char *) xmalloc (stringbufsize + 1);
 
          while (1)
            {
-             if (j >= stringbufsize - 4)
+             c = getc (infile); /* Read the string  */
+             if (c == '\\')
                {
-                 stringbufsize *= 2;
-                 stringbuf = (char *) xrealloc (stringbuf, stringbufsize + 1);
-               }
-             stringbuf[j] = getc (infile); /* Read the string  */
-             if (stringbuf[j] == '\\')
-               {
-                 stringbuf[j] = getc (infile); /* Read the string  */
+                 c = getc (infile);    /* Read the string  */
                  /* \; makes stuff for a C string constant containing
                     newline and tab.  */
-                 if (stringbuf[j] == ';')
-                   {
-                     strcpy (&stringbuf[j], "\\n\\t");
-                     j += 3;
-                   }
+                 if (c == ';')
+                   obstack_grow (rtl_obstack, "\\n\\t", 4);
+                 else
+                   obstack_1grow (rtl_obstack, c);
                }
-             else if (stringbuf[j] == '"')
+             else if (c == '"')
                break;
-             j++;
+
+             obstack_1grow (rtl_obstack, c);
            }
 
-         stringbuf[j] = 0;     /* NUL terminate the string  */
-         stringbuf = (char *) xrealloc (stringbuf, j + 1);
+         obstack_1grow (rtl_obstack, 0);
+         stringbuf = (char *) obstack_finish (rtl_obstack);
 
          if (saw_paren)
            {