[llvm-commits] [llvm-gcc-4.2] r79233 - in /llvm-gcc-4.2/trunk/gcc: doc/invoke.texi gcc.c
Chris Lattner
clattner at apple.com
Mon Aug 17 08:33:48 PDT 2009
On Aug 17, 2009, at 2:12 AM, Rafael Espindola wrote:
> Author: rafael
> Date: Mon Aug 17 04:12:42 2009
> New Revision: 79233
>
> URL: http://llvm.org/viewvc/llvm-project?rev=79233&view=rev
> Log:
> A port of http://gcc.gnu.org/ml/gcc-patches/2009-07/msg00110.html.
> This adds the -no-canonical-prefixes option. It prevents gcc (the
> driver)
> from resolving symbolic links when looking for cc1.
>
> The original patch is GPL3, but I got permission to relicense it.
Hi Rafael,
Please revert this patch until the author sends an email to llvm-
commits or llvmdev confirming this. Sorry for be a nuisance :(
It might be easier just to make a GPL3 version of llvm-gcc. It could
be based on llvm-gcc 4.2+patches or could be mainline. That might be
easier in the short-term than dealing with gpl3 avoidance gymnastics,
and would not depend on the gcc plugin work, which might take a while
to form up.
-Chris
>
>
>
> Modified:
> llvm-gcc-4.2/trunk/gcc/doc/invoke.texi
> llvm-gcc-4.2/trunk/gcc/gcc.c
>
> Modified: llvm-gcc-4.2/trunk/gcc/doc/invoke.texi
> URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/doc/invoke.texi?rev=79233&r1=79232&r2=79233&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm-gcc-4.2/trunk/gcc/doc/invoke.texi (original)
> +++ llvm-gcc-4.2/trunk/gcc/doc/invoke.texi Mon Aug 17 04:12:42 2009
> @@ -175,7 +175,8 @@
> @table @emph
> @item Overall Options
> @xref{Overall Options,,Options Controlling the Kind of Output}.
> - at gccoptlist{-c -S -E -o @var{file} -combine -pipe -pass-exit-
> codes @gol
> + at gccoptlist{-c -S -E -o @var{file} -combine -no-canonical-
> prefixes @gol
> +-pipe -pass-exit-codes @gol
> @c APPLE LOCAL -ObjC 2001-08-03 --sts **
> -ObjC (APPLE ONLY) -ObjC++ (APPLE ONLY) @gol
> @c APPLE LOCAL begin fat builds
> @@ -1237,6 +1238,12 @@
> Print (on the standard output) a description of target specific
> command
> line options for each tool.
>
> + at item -no-canonical-prefixes
> + at opindex no-canonical-prefixes
> +Do not expand any symbolic links, resolve references to @samp{/../}
> +or @samp{/./}, or make the path absolute when generating a relative
> +prefix.
> +
> @item --version
> @opindex version
> Display the version number and copyrights of the invoked GCC at .
>
> Modified: llvm-gcc-4.2/trunk/gcc/gcc.c
> URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/gcc.c?rev=79233&r1=79232&r2=79233&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm-gcc-4.2/trunk/gcc/gcc.c (original)
> +++ llvm-gcc-4.2/trunk/gcc/gcc.c Mon Aug 17 04:12:42 2009
> @@ -1190,6 +1190,7 @@
> /* LLVM LOCAL end */
> {"--machine", "-m", "aj"},
> {"--machine-", "-m", "*j"},
> + {"--no-canonical-prefixes", "-no-canonical-prefixes", 0},
> {"--no-integrated-cpp", "-no-integrated-cpp", 0},
> {"--no-line-commands", "-P", 0},
> {"--no-precompiled-includes", "-noprecomp", 0},
> @@ -3341,6 +3342,10 @@
> fputs (_(" -Xlinker <arg> Pass <arg> on to the linker
> \n"), stdout);
> fputs (_(" -combine Pass multiple source files to
> compiler at once\n"), stdout);
> fputs (_(" -save-temps Do not delete intermediate
> files\n"), stdout);
> + fputs (_("\
> + -no-canonical-prefixes Do not canonicalize paths when building
> relative\n\
> + prefixes to other gcc components\n"),
> stdout);
> +
> fputs (_(" -pipe Use pipes rather than
> intermediate files\n"), stdout);
> fputs (_(" -time Time the execution of each
> subprocess\n"), stdout);
> fputs (_(" -specs=<file> Override built-in specs with
> the contents of <file>\n"), stdout);
> @@ -3433,6 +3438,8 @@
> int is_modify_target_name;
> unsigned int j;
> #endif
> + char *(*get_relative_prefix) (const char *, const char *,
> + const char *) = NULL;
>
> GET_ENVIRONMENT (gcc_exec_prefix, "GCC_EXEC_PREFIX");
>
> @@ -3519,6 +3526,28 @@
> fatal ("couldn't run '%s': %s", new_argv0, xstrerror (errno));
> }
>
> + /* Convert new-style -- options to old-style. */
> + translate_options (&argc, (const char * const **) &argv);
> +
> + /* Do language-specific adjustment/addition of flags. */
> + lang_specific_driver (&argc, (const char * const **) &argv,
> + &added_libraries);
> +
> + /* Handle any -no-canonical-prefixes flag early, to assign the
> function
> + that builds relative prefixes. This function creates default
> search
> + paths that are needed later in normal option handling. */
> +
> + for (i = 1; i < argc; i++)
> + {
> + if (! strcmp (argv[i], "-no-canonical-prefixes"))
> + {
> + get_relative_prefix = make_relative_prefix_ignore_links;
> + break;
> + }
> + }
> + if (! get_relative_prefix)
> + get_relative_prefix = make_relative_prefix;
> +
> /* Set up the default search paths. If there is no GCC_EXEC_PREFIX,
> see if we can create it from the pathname specified in
> argv[0]. */
>
> @@ -3527,11 +3556,12 @@
> /* FIXME: make_relative_prefix doesn't yet work for VMS. */
> if (!gcc_exec_prefix)
> {
> - gcc_exec_prefix = make_relative_prefix (argv[0],
> standard_bindir_prefix,
> - standard_exec_prefix);
> - gcc_libexec_prefix = make_relative_prefix (argv[0],
> - standard_bindir_prefix,
> - standard_libexec_prefix);
> + gcc_exec_prefix = get_relative_prefix (argv[0],
> + standard_bindir_prefix,
> + standard_exec_prefix);
> + gcc_libexec_prefix = get_relative_prefix (argv[0],
> + standard_bindir_prefix,
> + standard_libexec_prefix);
> if (gcc_exec_prefix)
> putenv (concat ("GCC_EXEC_PREFIX=", gcc_exec_prefix, NULL));
> }
> @@ -3542,9 +3572,9 @@
> / (which is ignored by make_relative_prefix), so append a
> program name. */
> char *tmp_prefix = concat (gcc_exec_prefix, "gcc", NULL);
> - gcc_libexec_prefix = make_relative_prefix (tmp_prefix,
> - standard_exec_prefix,
> - standard_libexec_prefix);
> + gcc_libexec_prefix = get_relative_prefix (tmp_prefix,
> + standard_exec_prefix,
> + standard_libexec_prefix);
> free (tmp_prefix);
> }
> #else
> @@ -3674,12 +3704,6 @@
> }
> }
>
> - /* Convert new-style -- options to old-style. */
> - translate_options (&argc, (const char *const **) &argv);
> -
> - /* Do language-specific adjustment/addition of flags. */
> - lang_specific_driver (&argc, (const char *const **) &argv,
> &added_libraries);
> -
> /* Scan argv twice. Here, the first time, just count how many
> switches
> there will be in their vector, and how many input files in
> theirs.
> Here we also parse the switches that cc itself uses (e.g. -v).
> */
> @@ -3891,6 +3915,9 @@
> n_infiles += 2;
> i++;
> }
> + else if (strcmp (argv[i], "-no-canonical-prefixes") == 0)
> + /* Already handled as a special case, so ignored here. */
> + ;
> /* APPLE LOCAL end -weak_* (radar 3235250) */
> else if (strcmp (argv[i], "-combine") == 0)
> {
> @@ -4224,9 +4251,9 @@
> ``make_relative_prefix'' is not compiled for VMS, so don't call
> it. */
> if (target_system_root && gcc_exec_prefix)
> {
> - char *tmp_prefix = make_relative_prefix (argv[0],
> - standard_bindir_prefix,
> - target_system_root);
> + char *tmp_prefix = get_relative_prefix (argv[0],
> + standard_bindir_prefix,
> + target_system_root);
> if (tmp_prefix && access_check (tmp_prefix, F_OK) == 0)
> {
> target_system_root = tmp_prefix;
> @@ -4268,6 +4295,8 @@
> ;
> else if (! strncmp (argv[i], "-Wp,", 4))
> ;
> + else if (! strcmp (argv[i], "-no-canonical-prefixes"))
> + ;
> else if (! strcmp (argv[i], "-pass-exit-codes"))
> ;
> else if (! strcmp (argv[i], "-print-search-dirs"))
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list