This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] PR ld/19579/21306 Properly turn common symbol into definition
- 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: Thu, 6 Apr 2017 20:13:57 +0930
- Subject: Re: [PATCH] PR ld/19579/21306 Properly turn common symbol into definition
- Authentication-results: sourceware.org; auth=none
- References: <20170405164638.GA9413@intel.com>
On Wed, Apr 05, 2017 at 09:46:38AM -0700, H.J. Lu wrote:
> +bfd_boolean
> +_bfd_elf_define_common_symbol (bfd *output_bfd,
> + struct bfd_link_info *info,
> + struct bfd_link_hash_entry *h)
> +{
> + bfd_boolean ret
> + = bfd_generic_define_common_symbol (output_bfd, info, h);
> + if (ret)
> + {
> + /* Since def_regular may not be set if it is overridden by a
> + dynamic definition, we need to set def_regular when it is
> + converted to a defined symbol. */
> + struct elf_link_hash_entry *eh
> + = (struct elf_link_hash_entry *) h;
> + eh->def_regular = 1;
> + }
> + return TRUE;
> +}
This fails for ELF targets using the generic linker, like d30v-elf.
Isn't the real bug that somewhere we have code lacking an
ELF_COMMON_DEF_P test?
--
Alan Modra
Australia Development Lab, IBM