not minus one.
	* elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
+2012-08-28  Maciej W. Rozycki  <macro@codesourcery.com>
+
+       * 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  <macro@codesourcery.com>
 
        * elflink.c (_bfd_elf_merge_symbol): Also override the version
 
                  ;
                else
                  {
+                   BFD_ASSERT (h->dynindx != -1);
                    indx = h->dynindx;
                    unresolved_reloc = FALSE;
                  }
                            || 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;
 
                      ;
                    else
                      {
+                       BFD_ASSERT (h->elf.dynindx != -1);
                        indx = h->elf.dynindx;
                        unresolved_reloc = FALSE;
                      }
              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,