This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: --as-needed change wrt undefined weak symbols
- 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: Fri, 5 Apr 2013 09:09:32 +1030
- Subject: Re: --as-needed change wrt undefined weak symbols
- References: <20130114035805 dot GF3244 at bubble dot grove dot modra dot org> <CAMe9rOr9pmgn=ARZn_kEcJvAm4yHpyDmgxq=7_XHRVs7pzOopQ at mail dot gmail dot com> <20130115022340 dot GO3244 at bubble dot grove dot modra dot org> <CAMe9rOrOBPOHkQpPzYjC=OBgwq4bF29zDTTWidW20RJ5Y-F3tA at mail dot gmail dot com> <20130115052328 dot GQ3244 at bubble dot grove dot modra dot org> <CAMe9rOqcu7_-aAkkF=im56KsQ9Ypb6YkmmogcZDoswkNsaPPqg at mail dot gmail dot com> <20130318024130 dot GA18331 at bubble dot grove dot modra dot org> <CAMe9rOqy-OCgK44rPHK8BsiGpQcf1vzbXnsjcioNO7tFDSADTA at mail dot gmail dot com>
On Thu, Apr 04, 2013 at 10:15:58AM -0700, H.J. Lu wrote:
> On Sun, Mar 17, 2013 at 7:41 PM, Alan Modra <amodra@gmail.com> wrote:
> > PR ld/12549
> > elflink.c (elf_link_add_object_symbols): Exclude weak refs when
> > considering whether an --as-needed library is needed.
>
> Just for the record, this patch may change the behavior of
> the resulting executables for
>
> extern void bar () __attribute__((weak));
>
> if (bar)
> bar ();
>
> if bar is defined in the DT_NEEDED library. Binutils 2.22
> will resolve bar and add a DT_NEEDED entry. The new
> linker will resolve bar to 0. We will see if it causes any
> problems.
Your testcase in http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56431
shows that gold resolves bar to zero, but on powerpc and powerpc64 ld
keeps bar dynamic.
Hmm, I see x86_64 ld resolves bar to 0. Isn't this just an x86_64
backend ld bug?
--
Alan Modra
Australia Development Lab, IBM