This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Patch to pass fewer -L multilib arguments
- From: "Joseph S. Myers" <joseph at codesourcery dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Mark Mitchell <mark at codesourcery dot com>
- Date: Tue, 22 Mar 2005 00:19:38 +0000 (UTC)
- Subject: Re: Patch to pass fewer -L multilib arguments
- References: <Pine.LNX.4.61.0411232147530.9421@digraph.polyomino.org.uk>
This patch was postponed (off-list) to 4.1. I've now tested it still
bootstraps with no regressions, on i386-pc-solaris2.10.1. OK to commit?
--
Joseph S. Myers http://www.srcf.ucam.org/~jsm28/gcc/
jsm@polyomino.org.uk (personal mail)
joseph@codesourcery.com (CodeSourcery mail)
jsm28@gcc.gnu.org (Bugzilla assignments and CCs)
On Tue, 23 Nov 2004, Joseph S. Myers wrote:
> This patch reduces the number of -L paths the driver passes to the
> linker (for example, avoiding passing inappropriate multilib paths),
> as explained by Mark in
> <http://gcc.gnu.org/ml/gcc-patches/2004-11/msg01170.html>.
>
> Bootstrapped with no regressions on i386-pc-solaris2.10. OK to
> commit?
>
> 2004-11-23 Mark Mitchell <mark@codesourcery.com>
>
> * gcc.c (do_spec_1): Do not add a -L path for a directory in
> the prefix list if we have already added a multilib directory
> based on that path.
> (main): Do not add MD_EXEC_PREFIX to the list of directories to
> search with -L.
>
> diff -rupN -x CVS gcc-merge-HEAD-csl-sol210-1/gcc/gcc.c gcc-sol210/gcc/gcc.c
> --- gcc-merge-HEAD-csl-sol210-1/gcc/gcc.c 2004-09-18 12:47:09.000000000 -0700
> +++ gcc-sol210/gcc/gcc.c 2004-10-12 23:29:02.000000000 -0700
> @@ -4387,6 +4387,7 @@ do_spec_path (struct prefix_list *pl, co
> static size_t bufsize = 0;
> static char *buffer;
> int idx;
> + bool multilib_p = false;
>
> /* Used on systems which record the specified -L dirs
> and use them to search for dynamic linking. */
> @@ -4409,6 +4410,7 @@ do_spec_path (struct prefix_list *pl, co
> strcat (buffer, machine_suffix);
> if (is_directory (buffer, dir_for_machine_suffix, 1))
> {
> + multilib_p = true;
> do_spec_1 (option, separate_options, NULL);
> if (separate_options)
> do_spec_1 (" ", 0, NULL);
> @@ -4422,6 +4424,7 @@ do_spec_path (struct prefix_list *pl, co
> {
> if (is_directory (pl->prefix, dir_for_no_suffix, 1))
> {
> + multilib_p = true;
> do_spec_1 (option, separate_options, NULL);
> if (separate_options)
> do_spec_1 (" ", 0, NULL);
> @@ -4432,7 +4435,7 @@ do_spec_path (struct prefix_list *pl, co
> }
> }
>
> - if (only_subdir)
> + if (only_subdir || multilib_p)
> return;
>
> if (machine_suffix)
> @@ -6195,10 +6198,6 @@ main (int argc, const char **argv)
> startfile_prefix_spec exclusively. */
> else if (*cross_compile == '0' || target_system_root)
> {
> - if (*md_exec_prefix)
> - add_sysrooted_prefix (&startfile_prefixes, md_exec_prefix, "GCC",
> - PREFIX_PRIORITY_LAST, 0, 1);
> -
> if (*md_startfile_prefix)
> add_sysrooted_prefix (&startfile_prefixes, md_startfile_prefix,
> "GCC", PREFIX_PRIORITY_LAST, 0, 1);
>
> --
> Joseph S. Myers http://www.srcf.ucam.org/~jsm28/gcc/
> jsm@polyomino.org.uk (personal mail)
> joseph@codesourcery.com (CodeSourcery mail)
> jsm28@gcc.gnu.org (Bugzilla assignments and CCs)