summaryrefslogtreecommitdiff
path: root/gcc/java/jvgenmain.c
diff options
context:
space:
mode:
authorro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>2001-08-02 12:26:00 +0000
committerro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>2001-08-02 12:26:00 +0000
commit19dcb05b64dac1b3f6b41b66fbf6335bfcaa4926 (patch)
tree9d31c155fc6533acc82d406f6aeb96eb7ad549f9 /gcc/java/jvgenmain.c
parenteaf45f93c4ee922dbe317b8b9d7e180641fc86a8 (diff)
downloadgcc-19dcb05b64dac1b3f6b41b66fbf6335bfcaa4926.tar.gz
* 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. java: * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44572 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java/jvgenmain.c')
-rw-r--r--gcc/java/jvgenmain.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/gcc/java/jvgenmain.c b/gcc/java/jvgenmain.c
index ab43ddda3f9..9a425715066 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]... CLASSNAME [OUTFILE]\n", name);
+ fprintf (stderr, "Usage: %s [OPTIONS]... CLASSNAMEmain [OUTFILE]\n", name);
exit (1);
}
int
-main (int argc, const char **argv)
+main (int argc, char **argv)
{
- const char *classname;
+ char *classname, *p;
FILE *stream;
const char *mangled_classname;
int i, last_arg;
@@ -92,6 +92,13 @@ main (int argc, const 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);