Revert Rainer Orth's Java and gcc.c patch.

From-SVN: r44834
This commit is contained in:
David Edelsohn 2001-08-12 20:36:22 +00:00 committed by David Edelsohn
parent 270fc29ba6
commit 6ba5747268
7 changed files with 87 additions and 87 deletions

View 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

View 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

109
gcc/gcc.c
View File

@ -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));
}
/* 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. */

View File

@ -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. */

View 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

View 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);

View 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)
{