This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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/8] PR ld/17878: Add bfd_maybe_object_p


On Sat, Feb 7, 2015 at 4:50 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Sat, Feb 7, 2015 at 1:42 AM, Alan Modra <amodra@gmail.com> wrote:
>> On Thu, Feb 05, 2015 at 05:54:40AM -0800, H.J. Lu wrote:
>>> This patch adds bfd_maybe_object_p which is similar to
>>>
>>> bfd_check_format (abfd, bfd_object)
>>>
>>> The difference is bfd_maybe_object_p takes an argument to indicate if a
>>> compiler plug-in library is applied.  When a compiler plug-in library is
>>> active, it also returns TRUE if the file is not an archive or a coredump
>>> file.
>>
>> Hmm, in other words, if it is unknown.  (bfd_format takes the values
>> bfd_unknown, bfd_object, bfd_archive, bfd_core.)
>
> Yes.
>
>>> +bfd_boolean
>>> +bfd_maybe_object_p (bfd *abfd, bfd_boolean plugin_active_p)
>>> +{
>>> +  /* LTO IR object file may look like a bfd_object file or a file which
>>> +     is not bfd_core nor bfd_archive.  */
>>> +  return (bfd_check_format (abfd, bfd_object)
>>> +       || (plugin_active_p
>>> +           && !bfd_check_format (abfd, bfd_core)
>>> +           && !bfd_check_format (abfd, bfd_archive)));
>>> +}
>>
>> I find this really strange.  If plugins are active then you're
>> willing to accept anything except cores and archives.  To throw out
>> cores and archives you'll be iterating over all compiled-in bfd
>> targets, asking "is this a core file", then asking "is this an
>> archive".  That's quite a bit of processing, and won't exclude your
>> average text file!
>
> LTO IR could be stored in the average text file.  The new plug tests
> use this feature.   We can add a new type, bfd_maybe_object.
>
>> I think you need to find a way of answering the question "is this a
>> file accepted by a plugin?" in a more robust way.  One possibility is
>> merging the linker handling of plugins into the bfd plugin support.
>>
>
> I have considered it before.  This approach has many implications.
> If we do this, we need to add bfd_plugin_object and bfd_all_object.
> bfd_all_object includes bfd_object and bfd_plugin_object.  We need
> bfd_plugin_object so that we won't update dummy BFD info from the
> LTO IR input.  Let me take another look.
>

Here is a draft to make linker plugin_object_p available to BFD:

https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=23903a326cd1cb205902698bb61f9deb1d1bf9a9

I will submit a proper patch tomorrow.

-- 
H.J.


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