From 14acf4dcaee3b0cee94b481b220d38fc4ff6ae5c Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Tue, 28 Aug 2012 20:17:56 +0000 Subject: [PATCH] * elf32-ppc.c (ppc_elf_relocate_section): Assert that dynindx is not minus one. * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. --- bfd/ChangeLog | 6 ++++++ bfd/elf32-ppc.c | 2 ++ bfd/elf64-ppc.c | 6 +++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index e3ddd6ffdb..3ec6b2f197 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2012-08-28 Maciej W. Rozycki + + * elf32-ppc.c (ppc_elf_relocate_section): Assert that dynindx is + not minus one. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + 2012-08-28 Maciej W. Rozycki * elflink.c (_bfd_elf_merge_symbol): Also override the version diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index 779ca6d25b..3d55ac42d9 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -7826,6 +7826,7 @@ ppc_elf_relocate_section (bfd *output_bfd, ; else { + BFD_ASSERT (h->dynindx != -1); indx = h->dynindx; unresolved_reloc = FALSE; } @@ -8176,6 +8177,7 @@ ppc_elf_relocate_section (bfd *output_bfd, || h->root.type == bfd_link_hash_undefweak)) || !SYMBOL_REFERENCES_LOCAL (info, h)) { + BFD_ASSERT (h->dynindx != -1); unresolved_reloc = FALSE; outrel.r_info = ELF32_R_INFO (h->dynindx, r_type); outrel.r_addend = rel->r_addend; diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index 50dad3b10e..71403c36f1 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -13118,6 +13118,7 @@ ppc64_elf_relocate_section (bfd *output_bfd, ; else { + BFD_ASSERT (h->elf.dynindx != -1); indx = h->elf.dynindx; unresolved_reloc = FALSE; } @@ -13490,7 +13491,10 @@ ppc64_elf_relocate_section (bfd *output_bfd, else if (!SYMBOL_CALLS_LOCAL (info, &h->elf) && !is_opd && r_type != R_PPC64_TOC) - outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type); + { + BFD_ASSERT (h->elf.dynindx != -1); + outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type); + } else { /* This symbol is local, or marked to become local,