summaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
authordje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>2001-08-12 20:36:22 +0000
committerdje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>2001-08-12 20:36:22 +0000
commite6d8e09b053d672669aca1be0dd466c06605e662 (patch)
treea587c099c78feb50efa9b68cae3c6c15fed6d69a /gcc/java
parentf5d9353e41cd14f0e5fbb101ca48182433d7ed30 (diff)
downloadgcc-e6d8e09b053d672669aca1be0dd466c06605e662.tar.gz
Revert Rainer Orth's Java and gcc.c patch.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44834 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java')
-rw-r--r--gcc/java/ChangeLog13
-rw-r--r--gcc/java/jvgenmain.c13
-rw-r--r--gcc/java/jvspec.c18
3 files changed, 22 insertions, 22 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 0356cb7a2af..4dd5132af96 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -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
diff --git a/gcc/java/jvgenmain.c b/gcc/java/jvgenmain.c
index 9a425715066..ab43ddda3f9 100644
--- a/gcc/java/jvgenmain.c
+++ b/gcc/java/jvgenmain.c
@@ -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);
diff --git a/gcc/java/jvspec.c b/gcc/java/jvspec.c
index 761c580310d..44342cf401a 100644
--- a/gcc/java/jvspec.c
+++ b/gcc/java/jvspec.c
@@ -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)
{