This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 1/2] Add -print-lto-plugin


On Fri, Oct 29, 2010 at 1:46 PM, Andi Kleen <andi@firstfloor.org> wrote:
> From: Andi Kleen <ak@linux.intel.com>
>
> binutils have LTO linker plugin support now, but it requires hardcoding
> the path to gcc's libexec dir in the Makefile. Add an option to the
> gcc driver instead to print the full file name to avoid this.
>
> This is especially useful for ar or nm.

Is the reason for not using -print-file-name=liblto-plugin.so to not hardcode
that name?  (which you still did in the patch - not sure if it's that specific
name on all hosts).

Richard.

> gcc/
>
> 2010-10-02 ?Andi Kleen <ak@linux.intel.com>
>
> ? ? ? ?* common.opt (-print-lto-plugin): Add.
> ? ? ? ?* doc/invoke.texi (-print-lto-plugin): Document.
> ? ? ? ?* gcc.c (display_help): Describe -print-lto-plugin.
> ? ? ? ?(main.c): Handle print_lto_plugin.
> ---
> ?gcc/common.opt ? ? ?| ? ?6 ++++++
> ?gcc/doc/invoke.texi | ? ?9 ++++++++-
> ?gcc/gcc.c ? ? ? ? ? | ? 13 +++++++++++++
> ?3 files changed, 27 insertions(+), 1 deletions(-)
>
> diff --git a/gcc/common.opt b/gcc/common.opt
> index a74d60d..2b6c73b 100644
> --- a/gcc/common.opt
> +++ b/gcc/common.opt
> @@ -183,6 +183,9 @@ Driver JoinedOrMissing Alias(print-file-name=)
> ?-print-libgcc-file-name
> ?Driver Alias(print-libgcc-file-name)
>
> +-print-lto-plugin
> +Driver Alias(print-lto-plugin)
> +
> ?-print-multi-directory
> ?Driver Alias(print-multi-directory)
>
> @@ -1932,6 +1935,9 @@ Driver JoinedOrMissing Var(print_file_name)
> ?print-libgcc-file-name
> ?Driver
>
> +print-lto-plugin
> +Driver Var(print_lto_plugin)
> +
> ?print-multi-directory
> ?Driver Var(print_multi_directory)
>
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index 7ea042f..d6784ad 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -322,7 +322,7 @@ Objective-C and Objective-C++ Dialects}.
> ?-fdebug-prefix-map=@var{old}=@var{new} @gol
> ?-femit-struct-debug-baseonly -femit-struct-debug-reduced @gol
> ?-femit-struct-debug-detailed@r{[}=@var{spec-list}@r{]} @gol
> --p ?-pg ?-print-file-name=@var{library} ?-print-libgcc-file-name @gol
> +-p ?-pg ?-print-file-name=@var{library} ?-print-libgcc-file-name ?-print-lto-plugin @gol
> ?-print-multi-directory ?-print-multi-lib ?-print-multi-os-directory @gol
> ?-print-prog-name=@var{program} ?-print-search-dirs ?-Q @gol
> ?-print-sysroot -print-sysroot-headers-suffix @gol
> @@ -5725,6 +5725,13 @@ Same as @option{-print-file-name=libgcc.a}.
> ?This is useful when you use @option{-nostdlib} or @option{-nodefaultlibs}
> ?but you do want to link with @file{libgcc.a}. ?You can do
>
> +@item -print-lto-plugin
> +@opindex print-lto-plugin
> +Print the path name of the LTO linker plugin used by the compiler.
> +
> +This is useful to pass to ar, gold, ld or other binutils with linker
> +plugin support.
> +
> ?@smallexample
> ?gcc -nostdlib @var{files}@dots{} `gcc -print-libgcc-file-name`
> ?@end smallexample
> diff --git a/gcc/gcc.c b/gcc/gcc.c
> index 13635d5..e6fc6d5 100644
> --- a/gcc/gcc.c
> +++ b/gcc/gcc.c
> @@ -2928,6 +2928,7 @@ display_help (void)
> ? fputs (_(" ?-dumpmachine ? ? ? ? ? ? Display the compiler's target processor\n"), stdout);
> ? fputs (_(" ?-print-search-dirs ? ? ? Display the directories in the compiler's search path\n"), stdout);
> ? fputs (_(" ?-print-libgcc-file-name ?Display the name of the compiler's companion library\n"), stdout);
> + ?fputs (_(" ?-print-lto-plugin ? ? ? ?Display the name of the compiler's LTO plugin\n"), stdout);
> ? fputs (_(" ?-print-file-name=<lib> ? Display the full path to library <lib>\n"), stdout);
> ? fputs (_(" ?-print-prog-name=<prog> ?Display the full path to compiler component <prog>\n"), stdout);
> ? fputs (_(" ?-print-multi-directory ? Display the root directory for versions of libgcc\n"), stdout);
> @@ -3222,6 +3223,7 @@ driver_handle_option (struct gcc_options *opts,
> ? ? case OPT_print_sysroot:
> ? ? case OPT_print_multi_os_directory:
> ? ? case OPT_print_sysroot_headers_suffix:
> + ? ?case OPT_print_lto_plugin:
> ? ? case OPT_time:
> ? ? case OPT_wrapper:
> ? ? ? /* These options set the variables specified in common.opt
> @@ -6536,6 +6538,17 @@ main (int argc, char **argv)
> ? ? ? ?fatal_error ("not configured with sysroot headers suffix");
> ? ? }
>
> + ?if (print_lto_plugin)
> + ? ?{
> + ? ? ?char *plugin;
> +
> + ? ? ?plugin = find_a_file (&exec_prefixes, "liblto_plugin.so", R_OK, false);
> + ? ? ?if (!plugin)
> + ? ? ? ?fatal_error ("-print-lto-plugin specified, but no plugin found");
> + ? ? ?printf ("%s\n", plugin);
> + ? ? ?return (0);
> + ? ?}
> +
> ? if (print_help_list)
> ? ? {
> ? ? ? display_help ();
> --
> 1.7.1
>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]