#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;
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. */
{
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];
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)
}
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)
{