From: Richard Stallman Date: Sat, 9 May 1992 07:00:44 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2dcb563f6cccc1a1d222e1141c8b15f06798ac97;p=gcc.git *** empty log message *** From-SVN: r945 --- diff --git a/gcc/gcc.c b/gcc/gcc.c index 6a6449d679c..39df4d5a5da 100644 --- 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) diff --git a/gcc/rtl.c b/gcc/rtl.c index dc9e2187a6f..7d7d73abf16 100644 --- 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) {