From: Per Bothner Date: Fri, 18 May 2001 18:34:51 +0000 (-0700) Subject: jvspec.c (lang_specific_pre_link): Re-arrange the linker command line so the jvgenmai... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9d2896044874f318d09f171ef5a8581f50ca8d7b;p=gcc.git jvspec.c (lang_specific_pre_link): Re-arrange the linker command line so the jvgenmain-generated main program... * jvspec.c (lang_specific_pre_link): Re-arrange the linker command line so the jvgenmain-generated main program comes first. From-SVN: r42270 --- diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 7fd7de5b6e3..677d507e630 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +2001-05-18 Per Bothner + + * jvspec.c (lang_specific_pre_link): Re-arrange the linker + command line so the jvgenmain-generated main program comes first. + 2001-05-15 Tom Tromey * class.c (build_utf8_ref): Don't generate identifier based on diff --git a/gcc/java/jvspec.c b/gcc/java/jvspec.c index c02071ff308..4a8c333db34 100644 --- a/gcc/java/jvspec.c +++ b/gcc/java/jvspec.c @@ -525,9 +525,23 @@ lang_specific_driver (in_argc, in_argv, in_added_libraries) int lang_specific_pre_link () { + int err; if (main_class_name == NULL) return 0; input_filename = main_class_name; input_filename_length = strlen (main_class_name); - return do_spec (jvgenmain_spec); + err = do_spec (jvgenmain_spec); + if (err == 0) + { + /* Shift the outfiles array so the generated main comes first. + This is important when linking against (non-shared) libraries, + since otherwise we risk (a) nothing getting linked or + (b) 'main' getting picked up from a library. */ + int i = n_infiles; + const char *generated = outfiles[i]; + while (--i >= 0) + outfiles[i + 1] = outfiles[i]; + outfiles[0] = generated; + } + return err; }