--- crash-5.1.7/gdb-7.0.patch.orig +++ crash-5.1.7/gdb-7.0.patch @@ -1685,3 +1685,156 @@ add_symbol_to_list (sym, &global_symbols); } child_die = sibling_die (child_die); +--- gdb-7.0/bfd/elf64-ppc.c.orig ++++ gdb-7.0/bfd/elf64-ppc.c +@@ -4764,7 +4764,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc + { + struct ppc_link_hash_table *htab; + Elf_Internal_Shdr *symtab_hdr; +- struct elf_link_hash_entry **sym_hashes, **sym_hashes_end; ++ struct elf_link_hash_entry **sym_hashes; + const Elf_Internal_Rela *rel; + const Elf_Internal_Rela *rel_end; + asection *sreloc; +@@ -4793,10 +4793,6 @@ ppc64_elf_check_relocs (bfd *abfd, struc + symtab_hdr = &elf_symtab_hdr (abfd); + + sym_hashes = elf_sym_hashes (abfd); +- sym_hashes_end = (sym_hashes +- + symtab_hdr->sh_size / sizeof (Elf64_External_Sym) +- - symtab_hdr->sh_info); +- + sreloc = NULL; + opd_sym_map = NULL; + if (strcmp (bfd_get_section_name (abfd, sec), ".opd") == 0) +@@ -5672,6 +5668,9 @@ ppc64_elf_gc_sweep_hook (bfd *abfd, stru + elf_section_data (sec)->local_dynrel = NULL; + + htab = ppc_hash_table (info); ++ if (htab == NULL) ++ return FALSE; ++ + symtab_hdr = &elf_symtab_hdr (abfd); + sym_hashes = elf_sym_hashes (abfd); + local_got_ents = elf_local_got_ents (abfd); +@@ -6790,7 +6789,6 @@ ppc64_elf_edit_opd (bfd *obfd, struct bf + Elf_Internal_Rela *relstart, *rel, *relend; + Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Sym *local_syms; +- struct elf_link_hash_entry **sym_hashes; + bfd_vma offset; + struct _opd_sec_data *opd; + bfd_boolean need_edit, add_aux_fields; +@@ -6812,7 +6810,6 @@ ppc64_elf_edit_opd (bfd *obfd, struct bf + + local_syms = NULL; + symtab_hdr = &elf_symtab_hdr (ibfd); +- sym_hashes = elf_sym_hashes (ibfd); + + /* Read the relocations. */ + relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL, +@@ -7664,7 +7661,6 @@ ppc64_elf_edit_toc (bfd *obfd ATTRIBUTE_ + asection *toc, *sec; + Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Sym *local_syms; +- struct elf_link_hash_entry **sym_hashes; + Elf_Internal_Rela *relstart, *rel; + unsigned long *skip, *drop; + unsigned char *used; +@@ -7679,7 +7675,6 @@ ppc64_elf_edit_toc (bfd *obfd ATTRIBUTE_ + + local_syms = NULL; + symtab_hdr = &elf_symtab_hdr (ibfd); +- sym_hashes = elf_sym_hashes (ibfd); + + /* Look at sections dropped from the final link. */ + skip = NULL; +--- gdb-7.0/bfd/elf32-ppc.c.orig ++++ gdb-7.0/bfd/elf32-ppc.c +@@ -4735,7 +4735,6 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUT + } + else + { +- Elf_Internal_Sym *sym; + bfd_signed_vma *lgot_refs; + struct plt_entry **local_plt; + char *lgot_masks; +@@ -4754,7 +4753,6 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUT + return FALSE; + } + } +- sym = locsyms + r_symndx; + lgot_refs = elf_local_got_refcounts (ibfd); + if (lgot_refs == NULL) + abort (); +@@ -5941,7 +5939,7 @@ ppc_elf_relax_section (bfd *abfd, + for (irel = internal_relocs; irel < irelend; irel++) + { + unsigned long r_type = ELF32_R_TYPE (irel->r_info); +- bfd_vma reladdr, toff, roff; ++ bfd_vma toff, roff; + asection *tsec; + struct one_fixup *f; + size_t insn_offset = 0; +@@ -6125,7 +6123,6 @@ ppc_elf_relax_section (bfd *abfd, + continue; + + roff = irel->r_offset; +- reladdr = isec->output_section->vma + isec->output_offset + roff; + + /* If the branch is in range, no need to do anything. */ + if (tsec != bfd_und_section_ptr +--- gdb-7.0/bfd/coffcode.h.orig ++++ gdb-7.0/bfd/coffcode.h +@@ -3527,7 +3527,9 @@ coff_write_object_contents (bfd * abfd) + asection *current; + bfd_boolean hasrelocs = FALSE; + bfd_boolean haslinno = FALSE; ++#ifdef COFF_IMAGE_WITH_PE + bfd_boolean hasdebug = FALSE; ++#endif + file_ptr scn_base; + file_ptr reloc_base; + file_ptr lineno_base; +@@ -3630,9 +3632,9 @@ coff_write_object_contents (bfd * abfd) + current = current->next) + { + struct internal_scnhdr section; ++#ifdef COFF_IMAGE_WITH_PE + bfd_boolean is_reloc_section = FALSE; + +-#ifdef COFF_IMAGE_WITH_PE + if (strcmp (current->name, DOT_RELOC) == 0) + { + is_reloc_section = TRUE; +@@ -3731,9 +3733,11 @@ coff_write_object_contents (bfd * abfd) + #endif + if (current->lineno_count != 0) + haslinno = TRUE; ++#ifdef COFF_IMAGE_WITH_PE + if ((current->flags & SEC_DEBUGGING) != 0 + && ! is_reloc_section) + hasdebug = TRUE; ++#endif + + #ifdef RS6000COFF_C + #ifndef XCOFF64 +--- gdb-7.0/bfd/coff-rs6000.c.orig ++++ gdb-7.0/bfd/coff-rs6000.c +@@ -3068,7 +3068,7 @@ xcoff_complain_overflow_bitfield_func (i + bfd_vma relocation; + struct reloc_howto_struct *howto; + { +- bfd_vma addrmask, fieldmask, signmask, ss; ++ bfd_vma fieldmask, signmask, ss; + bfd_vma a, b, sum; + + /* Get the values to be added together. For signed and unsigned +@@ -3076,7 +3076,6 @@ xcoff_complain_overflow_bitfield_func (i + the size of an address. For bitfields, all the bits matter. + See also bfd_check_overflow. */ + fieldmask = N_ONES (howto->bitsize); +- addrmask = N_ONES (bfd_arch_bits_per_address (input_bfd)) | fieldmask; + a = relocation; + b = val & howto->src_mask; +