This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] Always define referenced __start_SECNAME/__stop_SECNAME
On Tue, Jun 13, 2017 at 8:50 PM, Alan Modra <amodra@gmail.com> wrote:
> I see these fails. Please investigate and fix. The powerpc-linux
Most of tests are supported on targets without --gc-sections support or
with a leading underscore in symbol name. I checked in a couple patches
to address them.
> fails are due to leaving the __start and __stop symbols undefined when
> sizing dynamic sections, which is wrong. That at least needs to be
There is no need to discard relocs on undefined symbols with
non-default visibilty, which may be defined later like __start_SECNAME
and __stop_SECNAME, or are real errors. I am enclosing a patch here.
> fixed so that allocate_dynrelocs doesn't see an undefined hidden
> visibility symbol.
>
> bfin-elf +FAIL: ld-elf/sizeofa
> bfin-elf +FAIL: ld-elf/startofa
> cr16-elf +FAIL: ld-elf/sizeofa
> cr16-elf +FAIL: ld-elf/sizeofc
> cr16-elf +FAIL: ld-elf/startofa
> cr16-elf +FAIL: ld-elf/startofc
> cris-elf +FAIL: ld-elf/sizeofa
> cris-elf +FAIL: ld-elf/startofa
> crx-elf +FAIL: ld-elf/sizeofa
> crx-elf +FAIL: ld-elf/sizeofc
> crx-elf +FAIL: ld-elf/startofa
> crx-elf +FAIL: ld-elf/startofc
> epiphany-elf +FAIL: ld-elf/sizeofa
> epiphany-elf +FAIL: ld-elf/startofa
> h8300-elf +FAIL: ld-elf/sizeofa
> h8300-elf +FAIL: ld-elf/startofa
> hppa64-linux +FAIL: ld-elf/pr21562a
> hppa64-linux +FAIL: ld-elf/pr21562b
> hppa64-linux +FAIL: ld-elf/pr21562c
> hppa64-linux +FAIL: ld-elf/pr21562d
> hppa64-linux +FAIL: ld-elf/pr21562i
> hppa64-linux +FAIL: ld-elf/pr21562j
> hppa64-linux +FAIL: ld-elf/pr21562k
> hppa64-linux +FAIL: ld-elf/pr21562l
> hppa64-linux +FAIL: ld-elf/pr21562m
> hppa64-linux +FAIL: ld-elf/pr21562n
> ia64-linux +FAIL: ld-elf/pr21562a
> ia64-linux +FAIL: ld-elf/pr21562b
> ia64-linux +FAIL: ld-elf/pr21562c
> ia64-linux +FAIL: ld-elf/pr21562d
> ia64-linux +FAIL: ld-elf/pr21562i
> ia64-linux +FAIL: ld-elf/pr21562j
> ia64-linux +FAIL: ld-elf/pr21562k
> ia64-linux +FAIL: ld-elf/pr21562l
> ia64-linux +FAIL: ld-elf/pr21562m
> ia64-linux +FAIL: ld-elf/pr21562n
> ip2k-elf +FAIL: ld-elf/sizeofa
> ip2k-elf +FAIL: ld-elf/startofa
> m32c-elf +FAIL: ld-elf/sizeofa
> m32c-elf +FAIL: ld-elf/startofa
> metag-linux +FAIL: ld-elf/pr21562a
> metag-linux +FAIL: ld-elf/pr21562b
> metag-linux +FAIL: ld-elf/pr21562c
> metag-linux +FAIL: ld-elf/pr21562d
> metag-linux +FAIL: ld-elf/pr21562e
> metag-linux +FAIL: ld-elf/pr21562f
> metag-linux +FAIL: ld-elf/pr21562g
> metag-linux +FAIL: ld-elf/pr21562h
> metag-linux +FAIL: ld-elf/pr21562i
> metag-linux +FAIL: ld-elf/pr21562j
> metag-linux +FAIL: ld-elf/pr21562k
> metag-linux +FAIL: ld-elf/pr21562l
> metag-linux +FAIL: ld-elf/pr21562m
> metag-linux +FAIL: ld-elf/pr21562n
> metag-linux +FAIL: ld-elf/sizeofa
> metag-linux +FAIL: ld-elf/sizeofb
> metag-linux +FAIL: ld-elf/startofa
> metag-linux +FAIL: ld-elf/startofb
> mips64-linux +FAIL: ld-gc/pr20022
> mipsel-linux-gnu +FAIL: ld-gc/pr20022
> mipsisa32el-linux +FAIL: ld-gc/pr20022
> mips-linux +FAIL: ld-gc/pr20022
> mn10200-elf +FAIL: ld-elf/sizeofa
> mn10200-elf +FAIL: ld-elf/startofa
> mn10300-elf +FAIL: ld-elf/sizeofa
> mn10300-elf +FAIL: ld-elf/startofa
> nios2-linux +FAIL: ld-gc/pr20022
> powerpc-eabisim +FAIL: pr20022
> powerpc-eabivle +FAIL: pr20022
> powerpcle-elf +FAIL: pr20022
> powerpc-linux +FAIL: ld-elf/pr21562a
> powerpc-linux +FAIL: ld-elf/pr21562b
> powerpc-linux +FAIL: ld-elf/pr21562c
> powerpc-linux +FAIL: ld-elf/pr21562d
> powerpc-linux +FAIL: ld-elf/pr21562e
> powerpc-linux +FAIL: ld-elf/pr21562f
> powerpc-linux +FAIL: ld-elf/pr21562g
> powerpc-linux +FAIL: ld-elf/pr21562h
> powerpc-linux +FAIL: pr20022
> rl78-elf +FAIL: ld-elf/sizeofa
> rl78-elf +FAIL: ld-elf/startofa
> rx-elf +FAIL: ld-elf/sizeofa
> rx-elf +FAIL: ld-elf/startofa
> sh-rtems +FAIL: ld-elf/sizeofa
> sh-rtems +FAIL: ld-elf/startofa
> v850-elf +FAIL: ld-elf/sizeofa
> v850-elf +FAIL: ld-elf/startofa
>
> --
> Alan Modra
> Australia Development Lab, IBM
--
H.J.
From 5ee4d80423a8b082022553c0bc0bbab857b5fe92 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Wed, 14 Jun 2017 03:55:51 -0700
Subject: [PATCH 1/3] ppc: Don't discard relocs on undefined symbols
Don't discard relocs on undefined symbols with non-default visibilty,
which may be defined later like __start_SECNAME and __stop_SECNAME,
or are real errors.
PR ld/21562
* elf32-ppc.c (allocate_dynrelocs): Don't discard relocs on
undefined symbols with non-default visibilty.
---
bfd/elf32-ppc.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index a4814fc..cc0976f 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -6056,14 +6056,13 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
changes. */
else if (bfd_link_pic (info))
{
- /* Discard relocs on undefined symbols that must be local. */
- if (h->root.type == bfd_link_hash_undefined
- && ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
- eh->dyn_relocs = NULL;
+ /* Don't discard relocs on undefined symbols with non-default
+ visibilty, which may be defined later like __start_SECNAME
+ and __stop_SECNAME, or are real errors. */
/* Also discard relocs on undefined weak syms with non-default
visibility, or when dynamic_undefined_weak says so. */
- else if (UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
+ if (UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
eh->dyn_relocs = NULL;
/* Relocs that use pc_count are those that appear on a call insn,
--
2.9.4