This is the mail archive of the
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 at sourceware dot org
- Date: Wed, 26 Mar 2014 09:09:10 +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>
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..
> 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
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.
Australia Development Lab, IBM