[PATCH] Add gcc-ar/nm/ranlib wrappers for slim LTO
Richard Guenther
richard.guenther@gmail.com
Thu Oct 20 09:42:00 GMT 2011
On Thu, Oct 20, 2011 at 10:56 AM, Jan Hubicka <hubicka@ucw.cz> wrote:
>> On Thu, Oct 20, 2011 at 9:24 AM, Andi Kleen <andi@firstfloor.org> wrote:
>> > From: Andi Kleen <ak@linux.intel.com>
>> >
>> > Slim LTO requires running ar/nm/ranlib with the LTO plugin. The most
>> > convenient way to get this into existing Makefiles is using small
>> > wrappers that pass the plugin. This matches how other compilers
>> > (LLVM, icc) do this too.
>> >
>> > My previous attempt at using shell scripts for this
>> > http://gcc.gnu.org/ml/gcc-patches/2010-10/msg02471.html
>> > was not approved. Here's another attempt using wrappers written
>> > in C. It's only a single wrapper which just adds a --plugin
>> > argument before calling the respective binutils utilities.
>>
>> Thanks for doing this. How do they end up being used? I suppose
>> Makefiles will need to call gcc-ar then instead of ar? In which case
>
> Yes, it is what other compilers provide at the moment, too.
>
> In longer run, I would like to see binutils plugin machinery to be able
> to resolve this by itself for all installed compilers in the system. This
> is bit tricky:
> 1) binutils already has default plugin search path. We need to arrange our
> plugin to install there
> 2) it is not realistic to expect exactly one linker plugin on the system.
> LLVM/Open64/ICC eventually will want to provide their own plugins on
> that search path
> 3) Either we will need to install plugin for every GCC release installed
> or we will need to make our plugin resonably backward compatible.
> This is probably not that big deal since the symbol table is rather simple
> part of LTO machinery. We broke compatibility in between 4.5/4.6 and 4.7,
> but we probably could get more serious here.
>
>> I wonder if ...
>>
>> > The logic gcc.c uses to find the files is very complicated. I didn't
>> > try to replicate it 100% and left out some magic. I would be interested
>> > if this simple method works for everyone or if more code needs
>> > to be added. This only needs to support LTO supporting hosts of course.
>>
>> ;)
>>
>> ... using something like gcc --ar would be more convenient (as you
>> can then trivially share the find-the-files logic)? Did you consider
>> factoring out the find-the-file logic to a shared file that you can re-use?
>
> Hmm, these alternatives would work with me.
> Bit ugly feature about gcc --ar is the fact that all options after --ar are
> passed to real ar and must be in the ar's syntax. That one is different from
> ours (and different from nm or ranlib's), so the formal description of how
> command line options works would get bit tricky.
Yeah, maybe use it as `gcc --ar`, thus make it print the found ar plus
the plugin argument ...
At least somehow sharing the file finding code would be nice, but I don't
want to block the patch in its current form if sharing it does complicate
things more than it simplifies them by not duplicating code.
Richard.
> Honza
>
More information about the Gcc-patches
mailing list