[PATCH] PR ld/19579: [Regression] link error linking fortran code with PIE

Alan Modra amodra@gmail.com
Sat Mar 5 01:52:00 GMT 2016


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"?

-- 
Alan Modra
Australia Development Lab, IBM



More information about the Binutils mailing list