Message ID | 20110211105721.B7ACD1C63E0@hpgntab-ubiq73.eem.corp.google.com |
---|---|
State | New |
Headers | show |
On Fri, Feb 11, 2011 at 05:57, Simon Baldwin <simonb@google.com> wrote: > gcc/ChangeLog.google: > 2011-02-11 Simon Baldwin <simonb@google.com> > > * doc/install.texi: Add --disable-canonical-prefixes documentation. > * configure.ac: Add --disable-canonical-prefixes option. > * configure: Rebuild. > * config.in: Rebuild. > * gcc.c (process_command): Remove auto-detection, set default > prefix canonicalization mode from configure flag. Much simpler, thanks. This is OK for google/integration. I'm inclined to say this should be OK for 4.7, but I would prefer our configury maintainers to make the final decision. Simon, for google/integration it may make sense to flip the sign of the default for this flag. Diego.
On Fri, 11 Feb 2011, Simon Baldwin wrote:
> Secondarily, may be applicable to trunk. Thoughts?
A patch for trunk would need to be submitted in self-contained form
relative to trunk, not relative to a branch with the non-trunk code you
are removing in this patch.
On 11 February 2011 18:37, Joseph S. Myers <joseph@codesourcery.com> wrote: > > On Fri, 11 Feb 2011, Simon Baldwin wrote: > > > Secondarily, may be applicable to trunk. Thoughts? > > A patch for trunk would need to be submitted in self-contained form > relative to trunk, not relative to a branch with the non-trunk code you > are removing in this patch. Thanks, yes. I have such a patch. I was really asking if the method rather than this actual patch would be useful in trunk. If yes, I'll mail out the self-contained version of it that applies cleanly and directly to trunk. -- Google UK Limited | Registered Office: Belgrave House, 76 Buckingham Palace Road, London SW1W 9TQ | Registered in England Number: 3977902
* Simon Baldwin wrote on Fri, Feb 11, 2011 at 11:57:21AM CET: > Secondarily, may be applicable to trunk. Thoughts? I think others are better positioned to decide whether this is desirable. So only a couple of nits below. > gcc/ChangeLog.google: > 2011-02-11 Simon Baldwin <simonb@google.com> > > * doc/install.texi: Add --disable-canonical-prefixes documentation. > * configure.ac: Add --disable-canonical-prefixes option. > * configure: Rebuild. > * config.in: Rebuild. > * gcc.c (process_command): Remove auto-detection, set default > prefix canonicalization mode from configure flag. > --- gcc/doc/install.texi (revision 169914) > +++ gcc/doc/install.texi (working copy) > @@ -1697,6 +1697,16 @@ enabled together with @option{--enable-l > plugin for gold that allows the link-time optimizer to extract object > files with LTO information out of library archives. See > @option{-flto} and @option{-fwhopr} for details. > + > +@item --enable-canonical-prefixes > +@itemx --disable-canonical-prefixes > +Enable prefix canonicalization for GCC files that the GCC driver locates > +relative to its own path. Canonicalized prefixes have any @code{/x/../} @file{/x/../} > +elements removed and symbolic links expanded. This is enabled by default, > +and may be disabled using @option{--disable-canonical-prefixes}. > +See @option{-canonical-prefixes} or @option{-no-canonical-prefixes} for > +more details, including how to override this configuration option when > +compiling. > @end table > --- gcc/configure.ac (revision 169914) > +++ gcc/configure.ac (working copy) > @@ -4684,6 +4684,18 @@ else > fi) > AC_SUBST(slibdir) > > +# Set default prefix canonicalization. > + > +AC_ARG_ENABLE(canonical-prefixes, > +[ --enable-canonical-prefixes > + enable or disable prefix canonicalization], Please use help string pretty printing, and document the default: AC_ARG_ENABLE([canonical-prefixes], [AS_HELP_STRING([--disable-canonical-prefixes], [disable prefix canonicalization (enabled by default)])], [...] > +[], > +enable_canonical_prefixes=yes) > +if test x"$enable_canonical_prefixes" = xyes; then > + AC_DEFINE(ENABLE_CANONICAL_PREFIXES, > + 1, [Define to enable prefix canonicalization.]) > +fi Thanks, Ralf
Ralf Wildenhues <Ralf.Wildenhues@gmx.de> writes: > Please use help string pretty printing, and document the default: > > AC_ARG_ENABLE([canonical-prefixes], > [AS_HELP_STRING([--disable-canonical-prefixes], > [disable prefix canonicalization (enabled by default)])], IMHO by using --disable-canonical-prefixes the default is already documented. Andreas.
Index: gcc/doc/install.texi =================================================================== --- gcc/doc/install.texi (revision 169914) +++ gcc/doc/install.texi (working copy) @@ -1697,6 +1697,16 @@ enabled together with @option{--enable-l plugin for gold that allows the link-time optimizer to extract object files with LTO information out of library archives. See @option{-flto} and @option{-fwhopr} for details. + +@item --enable-canonical-prefixes +@itemx --disable-canonical-prefixes +Enable prefix canonicalization for GCC files that the GCC driver locates +relative to its own path. Canonicalized prefixes have any @code{/x/../} +elements removed and symbolic links expanded. This is enabled by default, +and may be disabled using @option{--disable-canonical-prefixes}. +See @option{-canonical-prefixes} or @option{-no-canonical-prefixes} for +more details, including how to override this configuration option when +compiling. @end table @subheading Cross-Compiler-Specific Options Index: gcc/configure =================================================================== --- gcc/configure (revision 169914) +++ gcc/configure (working copy) @@ -916,6 +916,7 @@ with_system_zlib enable_maintainer_mode enable_version_specific_runtime_libs with_slibdir +enable_canonical_prefixes enable_plugin enable_libquadmath_support ' @@ -1627,6 +1628,8 @@ Optional Features: --enable-version-specific-runtime-libs specify that runtime libraries should be installed in a compiler-specific directory + --enable-canonical-prefixes + enable or disable prefix canonicalization --enable-plugin enable plugin support --disable-libquadmath-support disable libquadmath support for Fortran @@ -17583,7 +17586,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 17586 "configure" +#line 17589 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -17689,7 +17692,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 17692 "configure" +#line 17695 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -26156,6 +26159,21 @@ fi +# Set default prefix canonicalization. + +# Check whether --enable-canonical-prefixes was given. +if test "${enable_canonical_prefixes+set}" = set; then : + enableval=$enable_canonical_prefixes; +else + enable_canonical_prefixes=yes +fi + +if test x"$enable_canonical_prefixes" = xyes; then + +$as_echo "#define ENABLE_CANONICAL_PREFIXES 1" >>confdefs.h + +fi + # Substitute configuration variables Index: gcc/gcc.c =================================================================== --- gcc/gcc.c (revision 169914) +++ gcc/gcc.c (working copy) @@ -3537,33 +3537,11 @@ process_command (unsigned int decoded_op } if (! get_relative_prefix) { - /* If no canonical prefixes flags, try to set a suitable default. - - If the gcc driver is a symlink we differentiate two cases: a single - symlink to the driver needing canonicalization; and a symlink farm - with every file in the gcc installation a symlink to its actual - content, for which we don't want canonicalization. To choose, we - check for a target-specific file relative to the canonicalized path - to the gcc driver. If found, assume canonicalizing is appropriate, - otherwise don't canonicalize. - - If the driver is not a symlink, make_relative_prefix_ignore_links - and make_relative_prefix act equivalently. */ - - char *search_prefix = make_relative_prefix (decoded_options[0].arg, - standard_bindir_prefix, - standard_exec_prefix); - if (search_prefix) - { - char *search = concat (search_prefix, spec_machine, NULL); - if (access (search, R_OK) == 0) - get_relative_prefix = make_relative_prefix; - free (search); - free (search_prefix); - } - - if (! get_relative_prefix) - get_relative_prefix = make_relative_prefix_ignore_links; +#ifdef ENABLE_CANONICAL_PREFIXES + get_relative_prefix = make_relative_prefix; +#else + get_relative_prefix = make_relative_prefix_ignore_links; +#endif } /* Set up the default search paths. If there is no GCC_EXEC_PREFIX, Index: gcc/config.in =================================================================== --- gcc/config.in (revision 169914) +++ gcc/config.in (working copy) @@ -51,6 +51,12 @@ #endif +/* Define to enable prefix canonicalization. */ +#ifndef USED_FOR_TARGET +#undef ENABLE_CANONICAL_PREFIXES +#endif + + /* Define if you want more run-time sanity checks. This one gets a grab bag of miscellaneous but relatively cheap checks. */ #ifndef USED_FOR_TARGET Index: gcc/configure.ac =================================================================== --- gcc/configure.ac (revision 169914) +++ gcc/configure.ac (working copy) @@ -4684,6 +4684,18 @@ else fi) AC_SUBST(slibdir) +# Set default prefix canonicalization. + +AC_ARG_ENABLE(canonical-prefixes, +[ --enable-canonical-prefixes + enable or disable prefix canonicalization], +[], +enable_canonical_prefixes=yes) +if test x"$enable_canonical_prefixes" = xyes; then + AC_DEFINE(ENABLE_CANONICAL_PREFIXES, + 1, [Define to enable prefix canonicalization.]) +fi + # Substitute configuration variables AC_SUBST(subdirs) AC_SUBST(srcdir)