This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] PR ld/16746: Don't issue a warning for reference in LTO IR
- From: Alan Modra <amodra at gmail dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: Binutils <binutils at sourceware dot org>
- Date: Wed, 26 Mar 2014 10:22:57 +1030
- Subject: Re: [PATCH] PR ld/16746: Don't issue a warning for reference in LTO IR
- Authentication-results: sourceware.org; auth=none
- References: <20140325203952 dot GA11925 at intel dot com> <20140325223910 dot GJ18201 at bubble dot grove dot modra dot org> <CAMe9rOr-gtpx-nLz-LR2YbDCH43Js2ZB+G18VCxJPr3V5=X=vQ at mail dot gmail dot com>
On Tue, Mar 25, 2014 at 03:50:05PM -0700, H.J. Lu wrote:
> On Tue, Mar 25, 2014 at 3:39 PM, Alan Modra <amodra@gmail.com> wrote:
> > On Tue, Mar 25, 2014 at 01:39:52PM -0700, H.J. Lu wrote:
> >> case WARNC:
> >> - /* Issue a warning and cycle. */
> >> - if (h->u.i.warning != NULL)
> >> + /* Issue a warning and cycle. Don't issue a warning for
> >> + reference in LTO IR which may be removed by LTO later. */
> >> + if (h->u.i.warning != NULL
> >> + && (abfd->flags & BFD_PLUGIN) == 0)
> >
> > So here you're handling references in LTO IR for warning symbols
> > defined in real object files or other LTO IR files..
>
> Yes.
>
> >> case WARN:
> >> + /* Don't issue a warning for reference in LTO IR which may be
> >> + removed by LTO later. Make a warning symbol instead. */
> >> + if ((hash_entry_bfd (h)->flags & BFD_PLUGIN) != 0)
> >> + goto mwarn;
> >> +
> >
> > And here you have the case where the new symbol is a warning symbol,
> > in either LTO IR or real object files, but the reference was in an LTO
> > IR file.
>
> Yes.
>
> > What about the CWARN case, where you already have a definition that
> > may have been referenced, and the new symbol is a warning symbol?
> > You'll need to test h->non_ir_ref I think.
>
> It is:
>
> https://sourceware.org/bugzilla/show_bug.cgi?id=12760
That's a different issue, isn't it? I'm talking about the sequence
1a) symbol referenced,
2a) symbol defined,
3a) warning symbol defined.
or
1b) symbol defined,
2b) symbol referenced,
3b) warning symbol defined.
If (1a) or (2b) is an IR reference then we don't want to warn.
--
Alan Modra
Australia Development Lab, IBM