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: PR ld/12761: .gnu.warning.* doesn't work when building shared library


"H.J. Lu" <hjl.tools@gmail.com> writes:

> On Mon, May 16, 2011 at 11:03 PM, Ian Lance Taylor <iant@google.com> wrote:
>> "H.J. Lu" <hongjiu.lu@intel.com> writes:
>>
>>> We should issure a gnu warning when building shared library. ÂThis patch
>>> implements it. ÂOK for trunk?
>>
>> No, this is not how warning symbols are supposed to work. ÂWe only want
>> to issue the warning for a warning symbol if there is some reference to
>> the symbol in the main program. ÂIf we issue the warnings for a shared
>> library, then we will wind up issuing the warnings even if the program
>> does not ever refer to the symbol. ÂThat is undesirable and will almost
>> certainly break some uses of warning symbols.
>
> We aren't consistent:
>
> 1. Gold always issues a warning when building a shared library.
> 2. Ld sometimes issues a warning when building a shared library:

Hmmm, that's interesting.  Sounds like an oversight on my part, but
perhaps it doesn't matter.


>> I think it would be reasonable to issue a warning when building a shared
>> library for a reference to a symbol defined in some other shared
>> library, but it is necessary to not give a warning for references to
>> symbols defined in the library being created.
>>
>
> What is the difference between defined inside vs outside of DSO?
> They both reference a function with a warning.

The difference is that the author of a shared library can call a
function with a warning safely from another externally visible function
which does not require a warning.

But I'm willing to let other people decide this issue.

Ian


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