This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] PR ld/19579: [Regression] link error linking fortran code with PIE
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Alan Modra <amodra at gmail dot com>
- Cc: Binutils <binutils at sourceware dot org>
- Date: Fri, 4 Mar 2016 19:41:42 -0800
- Subject: Re: [PATCH] PR ld/19579: [Regression] link error linking fortran code with PIE
- Authentication-results: sourceware.org; auth=none
- References: <20160304134833 dot GA11350 at gmail dot com> <20160305015242 dot GE9617 at bubble dot grove dot modra dot org>
On Fri, Mar 4, 2016 at 5:52 PM, Alan Modra <amodra@gmail.com> wrote:
> On Fri, Mar 04, 2016 at 05:48:33AM -0800, H.J. Lu wrote:
>> --- a/bfd/elflink.c
>> +++ b/bfd/elflink.c
>> @@ -1172,9 +1172,12 @@ _bfd_elf_merge_symbol (bfd *abfd,
>>
>> newdef = !bfd_is_und_section (sec) && !bfd_is_com_section (sec);
>>
>> + /* The old common symbol in executable is a definition if the new
>> + definition comes from a shared library. */
>> olddef = (h->root.type != bfd_link_hash_undefined
>> && h->root.type != bfd_link_hash_undefweak
>> - && h->root.type != bfd_link_hash_common);
>> + && (h->root.type != bfd_link_hash_common
>> + || (!olddyn && newdyn && bfd_link_executable (info))));
>>
>> /* NEWFUNC and OLDFUNC indicate whether the new or old symbol,
>> respectively, appear to be a function. */
>
> Why is this the correct place to change, and not code after the
> comment "We treat a common symbol as a definition"?
>
olddef has been checked well before that. We need to get it
right.
--
H.J.